Xcode 8 – Autolayouts问题

我用新的Xcode设置基本的UIView子类,并遇到奇怪的行为。 子查看视图乍一看正常加载:

- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self baseInit]; } return self; } - (void)awakeFromNib { [super awakeFromNib]; [self baseInit]; } 

我开始在设置为iPhone 6大小的故事板中创build另一个容器视图,就像我自己的一样。 我有一些复杂的布局,只有很less的东西,即使我擅长设置限制,它也出现了变化。

所以我开始尝试简单的视图,看看Xcode升级后的问题。

2 UIViews简单的运动。

在这里输入图像说明

首选项设置为每个约束设置为1000,设备设置为iPhone 6s。 在这里输入图像说明

但在iPhone 6 / s或我的设备iPhone 6上的结果正在转移:

在这里输入图像说明

所以当我开始捣鼓时,我发现如果将故事板设备设置为iPhone SE,它将在iPhone 6模拟器和iPhone 6设备上正确显示内容:

在这里输入图像说明 在这里输入图像说明

错误的设置,现在它alignment。 我错过了新的Xcode版本中的东西,以及如何使用自动布局和约束?

谢谢A.

如果baseInit和框架大小,你应该在viewDidLayoutSubviews调用它。 这是根据视图的约束在视图布局之后调用的。

 static dispatch_once_t oncePerLoadToken; - (void)viewDidLoad { [super viewDidLoad]; oncePerLoadToken = 0; } - (void)viewDidLayoutSubviews { dispatch_once(&oncePerLoadToken, ^{ [self baseInit]; }); }