0

在 iPad 应用程序中,将 UITextView 作为 UINavigationController 的子视图,设置为纵向占据大部分屏幕。当 iPad 旋转到横向时,我希望 UINavigationController 拉伸并调整到屏幕大小,但 textview 保持相同的大小,但它的位置调整为在中心。这是一个视觉效果:

在此处输入图像描述

textView 的大小与纵向相同。唯一的区别是它被搬迁到了中心。问题是我不知道该怎么做。

第一个问题是,当我旋转设备时,textView 占据了整个灰色区域,整个视图。textView 是在故事板的界面构建器中设置的,我没有设置或指示我想要这种行为。它只是发生。这不是我想要的。textView 是在界面生成器中设置的,所以我看到的唯一复选标记是“Autoresize Subviews”。我假设这种行为是“自动调整大小”,所以我取消选中它,但仍然没有。我假设是因为它只适用于它的子视图。所以我去 UINavigationController 并取消选中它的导航栏的“自动调整子视图”。依然没有:

在此处输入图像描述

唯一有效的方法是我在didRotateFromInterfaceOrientation方法中重置 textView 的框架。当然这“有效”,但这不是我想要的。因为首先,一旦设备旋转到横向,textView 仍然会拉伸。直到旋转动画结束,textView 才捕捉到我想要的大小和位置。其次,如果应用程序以横向启动,textView 仍然会被拉伸。textView 的框架的重置仅发生在旋转时。

摘要:如何为特定方向的视图设置框架?

4

1 回答 1

0

您应该在 IB 中设置布局约束以使其执行您想要的操作。将文本视图设置为您希望它处于纵向的任何大小。给它中心 x,中心 y,超级视图的顶部空间和宽度约束。如果您有所有这些限制(并且没有更多限制),那么在您旋转时它应该保持相同的宽度。

于 2013-06-03T18:10:47.540 回答