为啥即使在纵向模式下,主要活动框架的宽度也大于高度?
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 设置为横向