Xcode 6中的大小类问题

时间:2014-12-09 21:40:23

标签: ios objective-c xcode size-classes

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

  • 在尺寸类中任意x任意,我有一个UITableViewController,其中包含约束宽度为150且约束高度为150的UIView

  • 在尺寸类Regular x Regular中,我"卸载"这些约束,我添加了另一个约束宽度&高度,大小为250。

当我在iPad上启动我的应用程序时,我可以看到"正确"此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);
}

2 个答案:

答案 0 :(得分:2)

viewDidLoadviewWillAppear不是查找特定框架尺寸的正确位置。自动布局完成后将设置框架。

您可以覆盖viewDidLayoutSubviews并将其转移到那里。

答案 1 :(得分:0)

所以我认为你对尺寸等级有点混淆。这与我的混淆有点混淆。

当您选择将大小类视为RegularxRegular时,您只是查看该模式下的大小。您在那里所做的任何更改都不会覆盖anyxany模式。

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