使用AutoLayout只旋转视图

时间:2013-06-25 22:37:03

标签: ios objective-c autolayout

使用AutoLayout,可以将视图(按钮,图像等)保持在同一位置,但只需将设备旋转90度旋转吗?

例如,在下面的图像中,“视图”保持与纵向方向(距边缘相同的距离)完全一样,但在横向上旋转。

Portrait Landscape

2 个答案:

答案 0 :(得分:2)

如果您允许旋转界面方向,则必须更改旋转约束以将视图放在所需位置。

如果您不允许旋转界面方向,则必须订阅设备方向更改通知。方向更改时,您可以更新视图的变换以旋转它们。如果观点是正方形,那就足够了。如果视图不是方形,则还需要根据旋转的帧修改约束。

答案 1 :(得分:2)

您将所提供的图像中的视图描述为“停留在完全相同的位置”,但我认为这会误解自动布局和旋转行为。您的布局在两个示例之间发生了显着变化。如果两个视图先前沿其左边缘对齐,则现在它们沿着它们的底边对齐。

基本上:当你旋转设备时(比如从标准肖像到家庭左侧风景),你正在改变哪个视图是顶部,而不是顶视图指向的方向。

如果要重新创建所提供的旋转视图的外观,可以选择几个选项。我建议查看visual formatting language,这是一种以编程方式添加约束的好方法......它看起来更容易。如果您想要一个很好的介绍,请查看WWDC 2012的iOS自动布局讲座。然后,您可以在设备旋转时添加和删除相应的约束。 (可能需要一些游戏)。 “creating a custom landscape orientation”上的“View Controller编程指南”中还有一节可能会有所帮助。