gpt4 book ai didi

iphone - self.view.frame 在横向模式下意外更改了大小

转载 作者:行者123 更新时间:2023-12-03 19:28:21 25 4
gpt4 key购买 nike

我已经通过 IB 设置了 View Controller 的 View 。 View 设置为横向,宽度为 480,高度为 320。它在模拟器中正确加载。然而,当我使用 NSLog 检查 self.frame.size 时,我发现帧大小会自行更改,而无需任何设备旋转或任何代码。这是我得到的:

在 viewDidLoad 中 --> 大小 = 480 x 320

在 viewWillAppear 中 --> 大小 = 480 x 320

在 viewDidAppear 中 --> 大小 = 320 x 480

我只有viewDidLoad中的代码,但没有viewWillAppear或viewDidAppear。有谁知道幕后发生了什么?谢谢。

最佳答案

尝试这样的事情:

NSLog("frame=%@ transform=%@", NSStringFromCGRect(self.frame), NSStringFromCGAffineTransform(self.transform));

我敢打赌,当帧大小为 480x320 时,变换是恒等式 (1,0,0,1,0,0),并且 90° 旋转 (0,1,-1,0,0,当帧大小为 320x480 时,为 0 或 0,-1,1,0,0,0)。

发生什么事了?

嗯,viewDidLoad(我认为 viewWillAppear)在 View 添加到 View 层次结构之前被调用。当它被添加到层次结构时,UIKit 还会设置 View 变换,这就是旋转发生的方式。

但是为什么这会改变框架呢?

嗯,“框架”是相对于父 View ,即 UIWindow 而言的。 window 不旋转; View Controller 的 View 确实如此。从窗口的角度来看,一切都有效地处于纵向模式。

您可能需要 self.view.bounds。

关于iphone - self.view.frame 在横向模式下意外更改了大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536253/

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