在哪里可以为iOS上的特定方向指定视图的框架/位置?

时间:2013-06-03 16:30:11

标签: ios uiview uiviewcontroller rotation autoresize

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

enter image description here

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

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

enter image description here

如果我在didRotateFromInterfaceOrientation方法中重置textView的框架,那么唯一可行的方法就是这样。当然这“有效”,但这不是我想要的。因为首先,一旦设备旋转到横向,textView仍然会延伸。直到旋转动画结束,textView才会捕捉到我想要的大小和位置。第二,如果应用程序在横向启动,textView仍然会拉伸。重置textView的框架仅适用于旋转。

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

1 个答案:

答案 0 :(得分:0)

您应该在IB中设置布局约束,使其达到您想要的效果。使文本视图以您想要的任何大小为纵向。给它中心x,中心y,顶部空间到superview,以及宽度约束。如果您拥有所有这些约束(并且不再有),则在旋转时它应保持相同的宽度。