【发布时间】:2013-10-30 21:45:31
【问题描述】:
这是我一直在努力解决的问题:
我正在使用 loadView 以编程方式创建 view。
加载后,它在纵向视图中看起来很棒。但是,我想处理设备的旋转。因此我使用willAnimateRotationToInterfaceOrientation 方法。
在这个方法中,我调用了一个调整所有元素的函数。该函数所做的只是遍历我的所有视图并为每个视图设置新的CGRect。它适用于纵向(上下),但一旦我将方向更改为水平,它就会裁剪。
两个问题:
- 这种行为最可能的原因是什么?
- 您如何建议在不为水平/垂直方向创建单独视图的情况下处理设备旋转?
【问题讨论】:
-
好吧,如果它们被裁剪,您显然没有将它们设置为正确的
CGRects。这也是 stuts/springs 和 autolayout 的设计目的。看看这些,看看它们是否适合您的需求。 -
不建议在 iPhone 上允许倒置视图,只是让您知道。但正如@Firo 指出的那样,您可能没有正确设置您的
CGRects。您可以使用struts/springs以便自动布局可以正确处理旋转,而无需以编程方式执行任何操作。 -
您的目标是 IOS 5.1 还是早期版本,如果是,您可以使用 AutoResizingMasks 来调整视图,如果您的目标是 IOS 6.0 或更高版本,您应该使用 AutoLayout。对于某些视图,您必须手动设置框架。
-
大家好!谢谢你的cmets。我会检查
struts/springs。我要提到的另一件事是,当我在调整大小后为CGRects执行NSLog时,它们在技术上似乎还可以。因此,如果我将 iPad 从纵向旋转到横向,当我执行NSLog时,全屏子视图的CGRect表示它已从(0,0,768,1024)更改为(0,0,1024,768)。但是,裁剪区域看起来坐标系没有改变......是否有意义? (我没有足够的业力点来上传图片,否则我肯定会)。
标签: ios objective-c uiview