1

我遇到了一个非常奇怪的大小类问题:

  • 在任何 x any 的尺寸类中,我有一个UITableViewController包含UIView约束宽度 150 和约束高度 150 的 a。

  • 在大小类 Regular x Regular 中,我“卸载”了这些约束,并添加了另一个约束宽度和高度,大小为 250。

当我在 iPad 上启动我的应用程序时,我可以看到 this 的“正确”大小UIView,但在我的代码中,在ViewDidLoadViewWillAppear中,这个视图的大小仍然是“150”。(我想为几件事获得视图的大小。)只有在函数中ViewDidAppear我有正确的大小,但我不明白为什么。

有任何想法吗?

示例代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    [self loadImg];
    [self loadText];

    self.navigationItem.hidesBackButton = YES;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) loadText {
    //
 }

- (void) loadImg {    
    self.myView.layer.cornerRadius = self.myView.frame.size.width / 2;
    self.myView.clipsToBounds = YES;
    UIView *svg = [Utils defineImg:self.myView :@"myImage" :50];
    [self.myView addSubview: svg];
    svg.center = CGPointMake(self.myView.frame.size.width / 2, self.myView.frame.size.height / 2);
}
4

2 回答 2

2

viewDidLoad并且viewWillAppear不是寻找特定框架尺寸的正确位置。自动布局完成后将设置框架。

您可以覆盖viewDidLayoutSubviews并到达那里。

于 2014-12-09T23:17:01.290 回答
0

所以我认为你对尺寸等级有点困惑。这和我有同样的困惑。

当您选择以 RegularxRegular 形式查看尺寸类别时,您只是在查看它在该模式下的样子。您在此处所做的任何更改都不会覆盖 anyxany 模式。

而且您可能不应该限制视图的宽度和高度。尝试使用与其他视图相关的约束来让你的 UIView 看起来像它应该在屏幕上一样。

于 2014-12-09T21:49:12.897 回答