iOS Masonry 子对象如何获取已被约束的父对象的size
澳门新葡京官网
澳门新葡京官网
当前位置 : 澳门新葡京官网 > 现金金赌博平台

iOS Masonry 子对象如何获取已被约束的父对象的size

使用masonry的过程中发现,如果一个View已经用了masonry约束,当想在其上加一个子view 使用initWithFrame 的时候 无法获得父View的Frame来参考。

比如在一个ViewController中加入一个自定义的View,用Masonry约束:

@implementation ViewController

- voidviewDidLoad {
    CustomView *aView=[CustomView new];
    [self.view addSubview:aView];
    [aView mas_makeConstraints:^MASConstraintMaker *make{
        make.edges.equalToself.view;
        make.size.equalToself.view;
    }];
}    

如果我要在CustomView类里加入一个UIImageView,在CustomView.m里配置UIImageView的大小,应该怎样配置更科学,哪个阶段?

1.在CustomView.m内也使用Masonry约束UIImageView?
2.不使用约束的话,如何获得CustomView的frame大小,来配置UIImageView?
3.如果工程里大部分View都使用约束,好还是不好,对性能有影响?

  1. 你在CustomView.m 里面使用Masonry约束UIImageView是完全没问题的啊,你按照自己希望的比例去约束就好了。Autolayout 最后也是通过设置UIView 的center和bounds在实现的。性能上也没啥问题,

  2. 不使用约束的话,直接重载CustomView.m 的layoutSubviews,里面可以self.frame 就是最后显示的frame

既然superview使用了autolayout, 那么你在superview添加subview的时候, 应该也是要用autolayout约束的, 这时候subview并不知道superview的frame.

栏目列表

广告位

澳门新葡京官网