美文网首页
setNeedDisplay,layoutSubviews,la

setNeedDisplay,layoutSubviews,la

作者: 南京小伙 | 来源:发表于2017-06-29 11:16 被阅读0次

    在项目中看到 setNeedDisplay 这个方法的使用,从而想起了其他 UIView 的布局的其他方法。从而记录下。

    在工程中是在绘制手势功能的 View 中看到可 setNeedDisplay 方法。查看资料了解到,setNeedDisplay 是异步执行的。同时调用这个方法会自动执行 drawRect 方法,调用 drawRect 方法就可以使用 UIBezierPath 和 CGContextRef 对象来进行一系列操作了。在工程中就是在 drawRect 中进行手动滑动画线的功能的实现。

    layoutSubviews 也会在一些操作后会自动调用。

    1.addSubview 会触发

    2.设置 view 的 frame 会触发,重新设置的 frame 和原本的值发生变化

    3.滚动一个 UIScrollView 会触发

    4.横竖屏切换时,会触发父UIView 上的 layoutSubviews

    layuotIfNeed 也是异步执行的, 这个方法经常会用,就是根据数据来更新 View 的 frame,这时就需要调用次方法来手动刷新 View 的布局。调用 layoutIfNeed 强制立即刷新 layout。

    有时当你在改变一个 View 的某个约束后,在 [UIView animateWithDuration:] 方法中调用 layoutIfNeed 不管是哪一个 View 的约束改变了它都会以动画的形式过度到重新约束的位置。改变了某个 View 的约束,但不想以动画的形式则在动画方法之前调用该方法。

    setNeedsLayout 是标记某个 View 需要更新 layout ,不会立即更新。

    参考链接:

    http://www.cnblogs.com/ygm900/p/3652890.html

    http://www.jianshu.com/p/eb2c4bb4e3f1

    相关文章

      网友评论

          本文标题:setNeedDisplay,layoutSubviews,la

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