UIView的封装

https://www.jianshu.com/p/911468e948ee

layoutSubviews在以下情况下会被调用:
init初始化不会触发layoutSubviews
addSubview会触发layoutSubviews
设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
滚动一个UIScrollView会触发layoutSubviews
旋转Screen会触发父UIView上的layoutSubviews事件
改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

一共2种创建方式

1、使用纯代码

1.新建一个继承UIView的类
2.在刚刚新建类的类扩展中添加子控件属性(用weak声明,防止内存泄露)??
3.在initWithFrame:方法中添加子控件
4.在layoutSubviews方法中设置子控件的frame(在该方法中一定要调用[super layoutSubviews]方法)
5.提供一个模型属性,重写模型属性的set方法
6.在该setter方法中取出模型属性,给对应的子控件赋值

如果model属性不多,可以直接添加属性,然后重写该属性的set方法;这样写,外部使用时更加方便;

2、使用xib

通过xib\storyboard创建
初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法,初始化完毕后会调用awakeFromNib方法注意要在在awakeFromNib中初始化子控件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容