Ant*_*ony 3 iphone size landscape frame
我通过IB设置了视图控制器的视图.视图设置为横向,宽度为480,高度为320.它在模拟器中正确加载.但是,当我使用NSLog检查self.frame.size时,我发现帧大小自行改变而没有任何设备或任何代码的旋转.这是我得到的:
在viewDidLoad - > size = 480 x 320
在viewWillAppear - > size = 480 x 320
在viewDidAppear - > size = 320 x 480
我只在viewDidLoad中有代码,但没有viewWillAppear和viewDidAppear.谁知道幕后发生了什么?谢谢.
tc.*_*tc. 14
尝试这样的事情:
NSLog("frame=%@ transform=%@", NSStringFromCGRect(self.frame), NSStringFromCGAffineTransform(self.transform));
Run Code Online (Sandbox Code Playgroud)
我愿意打赌,当帧大小为480x320,旋转90°(0,1,-1,0,0,0或0)时,变换是标识(1,0,0,1,0,0) ,-1,1,0,0,0)当帧大小为320x480时.
这是怎么回事?
好吧,在将视图添加到视图层次结构之前调用viewDidLoad(我认为是 viewWillAppear).当它被添加到层次结构中时,UIKit还会设置视图变换,即旋转发生的方式.
但为什么这会改变框架呢?
好吧,"框架"是相对于父视图,即UIWindow.窗户不旋转; 视图控制器的视图.从窗口的角度来看,一切都在纵向模式下有效.
你可能想要self.view.bounds.
| 归档时间: |
|
| 查看次数: |
3386 次 |
| 最近记录: |