objective-c - iOS Masonry 子对象如何获取已被约束的父对象的size
伊谢尔伦
伊谢尔伦 2017-04-17 15:24:24
[iOS讨论组]

使用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都使用约束,好还是不好,对性能有影响?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

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

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

伊谢尔伦

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号