在layoutSubviews中调用setNeedsDisplay?

hpi*_*que 4 iphone uiview drawrect ios layoutsubviews

考虑一个带有自定义背景的视图drawRect:.如果视图更改大小,则需要重新绘制背景.

这是一个坏主意吗?

- (void) layoutSubviews
{
    [super layoutSubviews];
    [self setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)

如果是,考虑到我无法控制谁更改视图的大小,那么什么是更好的选择呢?

jrt*_*ton 11

不要这样做,没有必要.将contentMode视图设置为UIViewContentModeRedraw:

UIViewContentModeRedraw

通过调用setNeedsDisplay方法在边界更改时重新显示视图.适用于iOS 2.0及更高版本.在UIView.h中声明.

这将达到同样的效果.

  • 请注意,在“ layoutSubviews”中发送“ setNeedsDisplay”也是可以的,如果您只需要重新绘制一些尺寸更改,则可能需要这样做。 (2认同)