如果将任何UIElements添加到大小类中,那么子视图将不会成为父视图的子视图的一部分,直到它被加载。
代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"sub VIews %@", self.view.subviews);
}
结果:
2015-02-13 13:52:16.113 TestAutolayout [1619:42189]子视图( “< _UILayoutGuide:0x7fcc8bd9ded0; frame =(0 0; 0 0); hidden = YES; layer =>”, “< _UILayoutGuide:0x7fcc8bd9eb60; frame =(0 0; 0 0); hidden = YES; layer =>” )
一旦加载,尝试按钮事件: 代码:
- (IBAction)btnTest:(id)sender {
NSLog(@"sub VIews %@", self.view.subviews);
}
结果:
所以问题是,为什么view.subViews在被加载之前不被绘制?。
注意:如果我们在任何尺寸类中添加了UIElements,它的工作正常。
答案 0 :(得分:0)
我通过在加载之前使用[self.view layoutIfNeeded]
强制绘制UIElements来解决它。
- (void)viewDidLoad {
[self.view layoutIfNeeded];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"sub VIews %@", self.view.subviews);
}
可能是提高绩效的原因。