美文网首页iOS Developer
UIView及其SubView

UIView及其SubView

作者: 337b94dc718f | 来源:发表于2016-08-28 11:03 被阅读62次

    层级关系

    • 在iOS中,一个iphone屏幕呈现不同的界面,我们能看到的在界面上的元素,就是UIView(H5页面除外)。首先理一下UIWindow,UIView,CALayer的关系吧。
    • 一个app所有的界面展示都是在一个UIWindow中进行的,你的程序中可能拥有很多window,但是展现给用户的,只能有一个。而UIWindow也是UIView的子类。
    • 每个UIWindow中都有一个root UIView,那么CALayer是什么?有人这么比喻,

    UIView就像一个画板,而CALayer就是画板上的画布

    • 我在做UITableViewCell的圆角效果的时候,用过UIView的CALayer属性,刷简书上一些动画的文章时,也发现这个layer跟动画有很大的关系。

    - (void) layoutSubViews;

    简介

    • 顾名思义,这个方法是父UIView用来布局子UIView的。当你添加的约束或者自动布局不起作用时,你可以override这个方法来布局子UIView。一般重写这个方法时,会定义子UIView的Rectangle。但是这个方法不能被主动调用。当你需要重写布局时,通过setNeedsLayout,或者队列优先级更高的layoutIfNeeded方法。

    哪些方法会触发系统调用这个方法呢?

    • 调用setNeedsLayout、layoutIfNeeded方法
    • 调用addSubView方法
    • UIView的Frame发生变化时,UIView及其父UIView都会调用该方法
    • ScrollView滑动时
    • 旋转screen时,父UIView会调用该方法。
    • view加载时,默认会调用该方法。

    事件的传递链与响应链

    UIView的层级关系,不仅仅影响布局方面的行为,也会影响交互事件的处理。事件的传递跟响应是两个方向相反的过程,推荐下这篇文章
    史上最详细的iOS之事件的传递和响应机制

    参考

    iOS开发之layoutSubviews的作用和调用机制

    相关文章

      网友评论

        本文标题:UIView及其SubView

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