gpt4 book ai didi

ios - Xcode 8 - 自动布局问题

转载 作者:行者123 更新时间:2023-11-28 21:20:51 26 4
gpt4 key购买 nike

我在使用新的 Xcode 设置基本的 UIView 子类时遇到了奇怪的行为。乍一看,子类 View 似乎加载正常:

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

我开始在设置为 iPhone 6 大小的 Storyboard中构建另一个容器 View ,因为我拥有一个容器 View 。我的布局有点复杂,对象很少,即使我擅长设置约束,它也会发生偏移。

于是我开始尝试简单的 View ,看看Xcode升级后问题出在哪里。

使用 2 个 UIView 的简单练习。

enter image description here

每个约束的首选项设置为 1000,设备设置为 iPhone 6s。 enter image description here

但在 iPhone 6/s 或我的设备 iPhone 6 上的结果发生了偏移:

enter image description here

所以当我开始摆弄时,我发现如果将 Storyboard设备设置为 iPhone SE,它会在 iPhone 6 模拟器和 iPhone 6 设备上正确显示内容:

enter image description here enter image description here

设置错误,现在已对齐。我是否错过了新 Xcode 版本中的某些内容以及如何使用自动布局和约束?

谢谢A.

最佳答案

如果 baseInit 正在对 UIView 和帧大小做任何事情,您应该在 viewDidLayoutSubviews 中调用它。这是在根据 View 的约束对 View 进行布局后调用的。

static dispatch_once_t oncePerLoadToken;

- (void)viewDidLoad {
[super viewDidLoad];
oncePerLoadToken = 0;
}

- (void)viewDidLayoutSubviews {
dispatch_once(&oncePerLoadToken, ^{
[self baseInit];
});
}

关于ios - Xcode 8 - 自动布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39885012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com