iOS Masonry 子对象如何获取已被约束的父对象的size
使用masonry的过程中发现,如果一个View已经用了masonry约束,当想在其上加一个子view 使用initWithFrame 的时候 无法获得父View的Frame来参考。
比如在一个ViewController中加入一个自定义的View,用Masonry约束:
@implementation ViewController
- (void)viewDidLoad {
CustomView *aView=[CustomView new];
[self.view addSubview:aView];
[aView mas_makeConstraints:^(MASConstraintMaker *make){
make.edges.equalTo(self.view);
make.size.equalTo(self.view);
}];
}
如果我要在CustomView类里加入一个UIImageView,在CustomView.m里配置UIImageView的大小,应该怎样配置更科学,哪个阶段?
1.在CustomView.m内也使用Masonry约束UIImageView?
2.不使用约束的话,如何获得CustomView的frame大小,来配置UIImageView?
3.如果工程里大部分View都使用约束,好还是不好,对性能有影响?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你在CustomView.m 里面使用Masonry约束UIImageView是完全没问题的啊,你按照自己希望的比例去约束就好了。Autolayout 最后也是通过设置UIView 的center和bounds在实现的。性能上也没啥问题,
不使用约束的话,直接重载CustomView.m 的layoutSubviews,里面可以self.frame 就是最后显示的frame
既然superview使用了autolayout, 那么你在superview添加subview的时候, 应该也是要用autolayout约束的, 这时候subview并不知道superview的frame.