为啥即使在纵向模式下,主要活动框架的宽度也大于高度?

Posted

技术标签:

【中文标题】为啥即使在纵向模式下,主要活动框架的宽度也大于高度?【英文标题】:Why main activity frame width is larger than height even if it's in portrait mode?为什么即使在纵向模式下,主要活动框架的宽度也大于高度? 【发布时间】:2014-01-07 13:10:41 【问题描述】:

为什么当我测试我的应用程序时,ios 模拟器以纵向模式启动,所以在 viewDidLoad 函数 self.view.frame.size.width 等于 1024 但 单击按钮调用的内部函数是768?我没有改变设备方向。我还在下面粘贴了第一个和第二个函数对 self.view 的描述。

之前

Printing description of self->_view:
<UIView: 0x8b20720; frame = (0 0; 1024 748); 
autoresize = RM+BM; layer = <CALayer: 0x8b291c0>>

之后

<UIView: 0x8b1da70; frame = (0 0; 768 1024); transform = [0, -1, 1, 0, 0, 0]; 
autoresize =  RM+BM; layer = <CALayer: 0x8b20810>>

【问题讨论】:

【参考方案1】:

来自UIView docs:

框架

警告:如果变换属性不是恒等变换,则该属性的值未定义,因此应被忽略。

请改用bounds 属性。

【讨论】:

即使是bounds 也可能会在viewDidLoad 中的0, 0, 1024, 768 并保持这种状态直到viewDidAppear【参考方案2】:

viewDidLoad 内部设置self.view.transform 属性,如下所示:

self.view.transform = CGAffineTransformIdentity;

看看是否有帮助。它会将 UIView(此处为 self.view)返回到其原始预期方向。

还应该注意的是,iOS 模拟器对于方向错误无望。最好在设备上测试这些东西,因为模拟器没有加速度计或陀螺仪。

【讨论】:

以上是关于为啥即使在纵向模式下,主要活动框架的宽度也大于高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制对话框的横向模式?

即使我的活动在 android 2.3.1 中处于纵向模式,如何将 framelayout 设置为横向

iPad横向尺寸问题

即使纵向模式被锁定,Android 应用程序也会自动旋转到横向模式几秒钟

android获取纵向和横向的可用高度和宽度

即使启用了自动布局,我能否以编程方式设置特定视图的框架?