Ios Xcode 8-自动布局问题
我正在用新的Xcode设置基本的UIView子类,遇到了一些奇怪的行为。乍一看,子类视图似乎正常加载:Ios Xcode 8-自动布局问题,ios,objective-c,xcode,ios-autolayout,Ios,Objective C,Xcode,Ios Autolayout,我正在用新的Xcode设置基本的UIView子类,遇到了一些奇怪的行为。乍一看,子类视图似乎正常加载: - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self baseInit]; } return self; } - (void)awakeFromNib { [super awakeFromNib];
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self baseInit];
}
return self;
}
- (void)awakeFromNib
{
[super awakeFromNib];
[self baseInit];
}
我开始在故事板中构建另一个容器视图,设置为iPhone 6的大小,就像我自己的一样。我的布局有点复杂,几乎没有对象,即使我擅长设置约束,结果还是变了
所以我开始用simple view进行实验,看看Xcode升级后问题出在哪里
带有2个UIView的简单练习
每个约束的首选项设置为1000,设备设置为iPhone 6s。
但在iPhone 6/s或我的设备iPhone 6上的结果发生了变化:
因此,当我开始摆弄时,我发现如果将情节提要设备设置为iPhone SE,它将在iPhone 6模拟器和iPhone 6设备上正确显示内容:
设置错误,现在已对齐。我是否错过了新Xcode版本中的一些东西,以及如何使用自动布局和约束
多谢各位
A.如果
baseInit
正在处理UIView和帧大小,则应在ViewDidLayoutSubView
中调用它。根据视图的约束对视图进行布局后,将调用此函数
static dispatch_once_t oncePerLoadToken;
- (void)viewDidLoad {
[super viewDidLoad];
oncePerLoadToken = 0;
}
- (void)viewDidLayoutSubviews {
dispatch_once(&oncePerLoadToken, ^{
[self baseInit];
});
}
如果
baseInit
正在对UIView和帧大小执行任何操作,则应在viewdilayoutsubview
中调用它。根据视图的约束对视图进行布局后,将调用此函数
static dispatch_once_t oncePerLoadToken;
- (void)viewDidLoad {
[super viewDidLoad];
oncePerLoadToken = 0;
}
- (void)viewDidLayoutSubviews {
dispatch_once(&oncePerLoadToken, ^{
[self baseInit];
});
}