gpt4 book ai didi

带有尺寸等级的 iOS 错误帧尺寸

转载 作者:可可西里 更新时间:2023-11-01 06:06:21 25 4
gpt4 key购买 nike

我正在为我的应用使用 xCode 6 和大小类。

我遇到了一个我不明白的非常奇怪的问题。

我在 UIViewController 中有一个 UIView 约束,我为 Any x Any (150x150) 尺寸类别设置了宽度约束,为 Regular x Regular (300x300) 设置了另一个宽度约束。

当我记录 UIView 的大小时,当应用程序在 iPad 上运行时,我遇到了一个问题。

事实上,在“viewWillAppear”、“viewWillLayoutSubviews”或“viewDidLayoutSubviews”中,我得到的尺寸是“150x150”而不是“300x300”。

我的日志:

- (void) viewWillAppear:(BOOL)animated {
NSLog(@"viewWillAppear Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}

- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
NSLog(@"viewDidAppear Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}

- (void) viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
NSLog(@"viewWillLayoutSubviews Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}

- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"viewDidLayoutSubviews Size %f - %f",
self.myView.frame.size.width, self.myView.frame.size.height);
}

我不明白的是,日志显示:

2015-02-17 09:29:38.984 myApp[660:42565] viewDidLoad Size   
150.000000 - 150.000000

2015-02-17 09:29:38.985 myApp[660:42565] viewWillAppear Size
150.000000 - 150.000000

2015-02-17 09:29:39.047 myApp[660:42565] viewWillLayoutSubviews
Size 150.000000 - 150.000000

2015-02-17 09:29:39.058 myApp[660:42565] viewDidLayoutSubviews
Size 150.000000 - 150.000000

2015-02-17 09:29:39.063 myApp[660:42565] viewWillLayoutSubviews
Size 230.000000 - 230.000000

2015-02-17 09:29:39.063 myApp[660:42565] viewDidLayoutSubviews
Size 230.000000 - 230.000000

2015-02-17 09:29:39.586 myApp[660:42565] viewDidAppear Size
230.000000 - 230.000000

2015-02-17 09:29:39.591 myApp[660:42565] viewWillLayoutSubviews
Size 230.000000 - 230.000000

2015-02-17 09:29:39.593 myApp[660:42565] viewDidLayoutSubviews
Size 230.000000 - 230.000000

那么发生了什么?为什么我第一次得到 Any x Any size class 的大小?为什么这些方法会被多次调用?

我看到我在 viewDidAppear 中有正确的帧大小,但我不喜欢它,因为在调用此函数之前存在延迟。 (在显示它之前,我需要对 View 的框架大小做一些处理......)

最佳答案

“临时”(但很漂亮的废话 :D)解决方案:

我在 viewDidLoad 中添加了:

if(UIDEVICE == IPAD) {
[self.view layoutIfNeeded];
}

这样,我就有了正确的帧大小,但我想了解我的代码、大小类等有什么问题...:(

关于带有尺寸等级的 iOS 错误帧尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557701/

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