【发布时间】:2011-11-19 05:13:50
【问题描述】:
使用 Xcode 4.2/iOS5.0
我有一个 viewController 和一个关联的 viewController.xib。 viewController 被设置为 .xib 文件的所有者。它是从UINavigationController 调用的。
当设备纵向/横向旋转时,我正在尝试一些手动布局
据我了解,UIView 覆盖的方法是
- (void)layoutSubviews;
这是你做布局的地方
但是 - 与 drawRect 一样 - 你不能直接调用它,它会在适当的时候被 iOS 调用
你打电话给setNeedsLayout...
所以我在 ViewController 中有这个
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)
fromInterfaceOrientation {
[[self view] setNeedsLayout];
}
在同一个 ViewController 我有这个
- (void)layoutSubviews {
//.manual override of automatic layout on rotation
NSLog(@"layoutSubviews");
}
但是layoutSubviews 没有被调用,我不明白为什么。
这里有一个线索...
如果我直接调用layoutSubviews 为[self layoutSubviews]
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)
fromInterfaceOrientation {
[self layoutSubviews];
}
确实触发了
但如果我称它为[[self view] layoutSubviews] 它不会
看来视图和它的控制器没有正确连接?
【问题讨论】:
标签: iphone objective-c ios