0xS*_*ina 4 cocoa-touch objective-c uiview ios setneedsdisplay
我有一个UIViewController在willRotateToInterfaceOrientation,我打电话[self view] setNeedsLayout];
这个视图调用它是子视图的(a UIScrollView)layoutSubviews方法,但UIScrollView不会调用layoutSubviews它的子视图.这是它的假设吗?我想如果你打电话setNeedsLayout给一个视图,它会调用layoutSubviews每个子视图和他们的子视图,然后...
我一定要手动,覆盖layoutsubview在UIScrollView并调用setNeedsDisplay每个子视图?
谢谢.
我前段时间在我的应用程序中观察到同样的事情,似乎setNeedsLayout只会影响视图的子视图而不会向下移动.如果使用自定义视图,则可以轻松地对视图进行子类化并迭代子视图setNeedsLayout并对其执行显式setNeedsLayout操作.
如果您希望它是默认行为,您可以覆盖类别中的方法,但我真的不会这样做,因为它会影响所有视图,并可能引入性能和其他意外问题.
你可以这样做
@interface UIView (Layout)
- (void)setNeedsLayoutRecursively;
@end
@implementation UIView (Layout)
- (void)setNeedsLayoutRecursively {
for (UIView *view in self.subviews) {
[view setNeedsLayoutRecursively];
}
[self setNeedsLayout];
}
@end
Run Code Online (Sandbox Code Playgroud)
在浏览器中输入,未经过测试
| 归档时间: |
|
| 查看次数: |
4401 次 |
| 最近记录: |