在layoutSubviews中调用setNeedsDisplay?

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

这是一个坏主意吗?

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

如果是这样,考虑到我无法控制谁改变了视图的大小,那么更好的select是什么?

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

UIViewContentModeRedraw

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

这将达到相同的效果。