gpt4 book ai didi

ios - viewdidload 和 viewwillappear 之间的帧大小变化出现在 iOS7 而不是 iOS8

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:14:57 26 4
gpt4 key购买 nike

我有一个从 xib 加载的 View Controller 。我没有对代码中的大小做任何事情——它都是在 XIB 文件中设置的。我的日志集显示 iniwithnibname 的宽度和高度正确,viewdidload 的宽度/高度正确,viewwillappear 的宽度/高度错误。

宽度/高度正在更改为我的代码中不存在的值。

这是一个 iPad 横向应用,在 7.1 的模拟器中运行它显示它坏了,而 8.2 显示正常。

任何人都可以阐明这一点吗?

下面是我如何使用 xib 加载 VC:

    ShareViewController *shareViewController = [[ShareViewController alloc] initWithNibName:@"ShareViewController" bundle:nil imageName:imageSelected ];


shareViewController.modalPresentationStyle = UIModalPresentationFormSheet;
float fW = shareViewController.view.frame.size.width;
float fH = shareViewController.view.frame.size.height;
shareViewController.preferredContentSize = CGSizeMake(fW, fH);
[self presentViewController:shareViewController animated:YES completion:^(){}];

在 iOS8 模拟器中,这里是 NSLog 输出:

KIStd[28103:762368] Entering ShareButtonPressed
KIStd[28103:762368] initWithNibName/image entry
KIStd[28103:762368] viewDidLoad entry
KIStd[28103:762368] viewDidLoad exit w:596.000000, h:400.000000
KIStd[28103:762368] initWithNibName/image exit w:596.000000, h:400.000000
KIStd[28103:762368] viewWillAppear Entry w:596.000000, h:400.000000
KIStd[28103:762368] viewWillAppear exit w:596.000000, h:400.000000
KIStd[28103:762368] viewDidAppear entry
KIStd[28103:762368] viewDidAppear exit w:596.000000, h:400.000000

在 iOS7 模拟器中,这里是 NSLog 输出:

KIStd[28186:60b] Entering ShareButtonPressed
KIStd[28186:60b] initWithNibName/image entry
KIStd[28186:60b] viewDidLoad entry
KIStd[28186:60b] viewDidLoad exit w:596.000000, h:400.000000
KIStd[28186:60b] initWithNibName/image exit w:596.000000, h:400.000000
KIStd[28186:60b] viewWillAppear Entry w:540.000000, h:620.000000
KIStd[28186:60b] viewWillAppear exit w:540.000000, h:620.000000
KIStd[28186:60b] viewDidAppear entry
KIStd[28186:60b] viewDidAppear exit w:540.000000, h:620.000000

这很清楚地说明了问题。

最佳答案

永远不要依赖 viewDidLoad/viewWillAppear 中的框架和绑定(bind)值。通常,监听尺寸变化的最精确位置是 viewDidLayout,您可以在其中跟踪最后看到的尺寸,并在尺寸发生变化时执行您的逻辑。

viewDidAppear 是精确的,但是在 View 已经动画化之后被调用,所以你会看到一个难看的跳转。 viewWillLayout/viewDidLayout 通常是最精确的,正如我之前提到的。

关于ios - viewdidload 和 viewwillappear 之间的帧大小变化出现在 iOS7 而不是 iOS8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372623/

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