在 layoutSubviews 中调用 setNeedsDisplay?
Posted
技术标签:
【中文标题】在 layoutSubviews 中调用 setNeedsDisplay?【英文标题】:Calling setNeedsDisplay in layoutSubviews? 【发布时间】:2012-11-17 21:07:16 【问题描述】:考虑在drawRect:
中绘制的具有自定义背景的视图。如果视图改变大小,则需要重新绘制背景。
这是个坏主意吗?
- (void) layoutSubviews
[super layoutSubviews];
[self setNeedsDisplay];
如果是,考虑到我无法控制谁更改视图的大小,有什么更好的选择?
【问题讨论】:
【参考方案1】:不要那样做,没必要。将视图的contentMode
设置为UIViewContentModeRedraw
:
UIViewContentModeRedraw
通过调用 setNeedsDisplay 方法在边界发生变化时重新显示视图。 在 ios 2.0 及更高版本中可用。 在 UIView.h 中声明。
这样会达到同样的效果。
【讨论】:
+1 教我一些新东西。此外,它似乎工作! :) 请注意,在layoutSubviews
中发送setNeedsDisplay
也可以,如果您只需要在某些大小更改上重新绘制,则可能需要这样做。
你能告诉我在哪里添加一行代码来设置contentMode
是在init:
,layoutSubviews()
还是?因为我已经在init:
中添加了它,但它对我有用。
@SunilRao 无论您在哪里创建视图都应该没问题以上是关于在 layoutSubviews 中调用 setNeedsDisplay?的主要内容,如果未能解决你的问题,请参考以下文章
iOS的layoutSubviews和drawRect方法何时调用
UIView的layoutSubviews和drawRect方法何时调用