【问题标题】:setNeedsLayout and setNeedsDisplaysetNeedsLayout 和 setNeedsDisplay
【发布时间】:2013-01-24 17:15:32
【问题描述】:

UIView 方法 setNeedsLayout 和 setNeedsDisplay 之间的真正区别是什么?

像往常一样,文档对此很模糊。

【问题讨论】:

    标签: ios autolayout setneedsdisplay


    【解决方案1】:

    实际上文档对此非常清楚:

    • setNeedsLayout 将布局子视图

      当您想要调整视图子视图的布局时,请在应用程序的主线程上调用此方法。

    • setNeedsDisplay 将要求重绘您的视图(drawRect: 等)。

      您可以使用此方法或 setNeedsDisplayInRect: 通知系统您的视图内容需要重绘。

    【讨论】:

    • 不,我想知道更多的是两者都用于重绘视图,对吧?两者都会等到下一个绘制周期重新绘制,对吧?
    • 布局与绘图无关。布局是关于定位/调整子视图。但是,是的,两者都延迟到下一个 runloop 周期。因此,连续多次调用一个只会导致一次重新布局/重绘。
    • 请举例说明何时需要setNeedsDisplay。
    • @Pwner 假设你想在两个点之间画一条线(确切地说是两个 UIView),这是在 DrawLineView 的drawRect: 中实现的。更改一个或两个按钮的位置后,您需要调用[drawLineView setNeedsDisplay]; 重新绘制两个点的新位置之间的线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多