美文网首页布局闻道丶iOS(大杂烩)
Masonry使用过程中一定会遇到的问题

Masonry使用过程中一定会遇到的问题

作者: Xcode8 | 来源:发表于2016-05-18 13:24 被阅读4149次

    github上的示例demo 很详细

    Masonry 源码:https://github.com/Masonry/Masonry

    介绍:

          Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。Masonry现在是使用很广泛的第三方做约束和适配的库,很强大。masonry使用起来还非常的方便。

    经常犯的错误---注意事项:使用mosonry添加约束,尤其是父子控件,他们之间的关系一定要在添加约束之前 addSubviews:。否则约束添加不成功。


    一.错误信息统计(width改为with)

      1.reason: 'Attributes should be chained before defining the constraint relation'

          崩溃到masonry内部的方法里面:

        崩溃的提示信息:

         直接上代码:(这是运行没有问题的代码)

         [self.GradientLabel mas_makeConstraints:^(MASConstraintMaker *make) {

               make.right.equalTo(self.CurrenPriceLabel.mas_right);

              make.left.equalTo(self.VariationLabel.mas_left).with.offset(30);//更改的是此处的width变为with,否则会报错

              make.width.equalTo(@60);//此处的width不需要改动

              make.height.mas_equalTo(@30);

         }];

    注意:解决方法将width更改为with即可。并不是全部的width都要改变,注意看上面的代码部分。

    二.错误信息统计(父子控件之间的关系没有建立好)

    2.1、reason:couldn't find a common superview for<UIView: ...frame: ...layer: ...>

    解决方法:查---好自己做约束的父子控件之间的关系是否建立起来了。

             UITextField *nameTextField = [UITextField new];

             nameTextField.font = [UIFont systemFontOfSize:14];

             nameTextField.placeholder = @"请再次输入密码";

            //父子控件的建立好关系:self.testView为父控件,nameTextField为子控件

             [self.testView addSubview:nameTextField];

             //开始约束

            [lable mas_makeConstraints:^(MASConstraintMaker *make) {

            make.left.mas_equalTo(self.testView.mas_left).with.offset(20);

            make.top.mas_equalTo(self.testView.mas_top).with.mas_offset(0);

            make.height.mas_equalTo(30);

            make.width.mas_equalTo(50);

         }];

    相关文章

      网友评论

      • 舒马赫:Masory写的很棒,但是不喜欢纯代码写界面,太慢了,另外由于autolayout先天原因布局速度是比较慢的,会影响帧率。推荐使用xml的布局库FlexLib,采用前端布局标准flexbox(不使用autolayout),支持热刷新,自动计算高度等。可以到这里了解详细信息:

        https://github.com/zhenglibao/FlexLib
      • 61b15215d772:看到第一个细节,果断看了下自己的。想笑
      • koreadragon:我一手残把with写成了width,半天没找出来
      • small路飞:谢谢分享
      • 凯文Kevin21:正好碰到了,这些细节问题。一不小心就错了;

      本文标题:Masonry使用过程中一定会遇到的问题

      本文链接:https://www.haomeiwen.com/subject/vtrwrttx.html