Iphone 在布局子视图中调用setNeedsDisplay?

Iphone 在布局子视图中调用setNeedsDisplay?,iphone,ios,uiview,drawrect,layoutsubviews,Iphone,Ios,Uiview,Drawrect,Layoutsubviews,考虑在drawRect:中绘制的具有自定义背景的视图。如果视图大小改变,则需要重新绘制背景 这是个坏主意吗 - (void) layoutSubviews { [super layoutSubviews]; [self setNeedsDisplay]; } 如果是,考虑到我无法控制谁更改视图的大小,还有什么更好的选择呢?不要这样做,这是没有必要的。将视图的contentMode设置为UIViewContentModeRedraw: UIViewContentModeRedra

考虑在
drawRect:
中绘制的具有自定义背景的视图。如果视图大小改变,则需要重新绘制背景

这是个坏主意吗

- (void) layoutSubviews
{
    [super layoutSubviews];
    [self setNeedsDisplay];
}

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

不要这样做,这是没有必要的。将视图的
contentMode
设置为
UIViewContentModeRedraw

UIViewContentModeRedraw

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


这将达到同样的效果。

+1教我一些新东西。而且,它似乎起作用了!:)请注意,在
layoutSubviews
中发送
setNeedsDisplay
也可以,如果您只需要在一些大小更改上重新绘制,您可能需要这样做。请告诉我在哪里添加一行代码来设置
contentMode
是在
init:
layoutSubviews()
还是?因为我已经在
init:
中添加了它,但它对我不起作用。@SunilRao无论您在哪里创建视图都应该可以