大小类 - 奇怪的行为

时间:2015-02-13 08:54:27

标签: ios swift autolayout size-classes

如果将任何UIElements添加到大小类中,那么子视图将不会成为父视图的子视图的一部分,直到它被加载。

enter image description here

代码:

- (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);

}

结果:

enter image description here

所以问题是,为什么view.subViews在被加载之前不被绘制?

注意:如果我们在任何尺寸类中添加了UIElements,它的工作正常。

1 个答案:

答案 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);

}

可能是提高绩效的原因。