-1

在我的应用程序中,我的所有控件都是在代码中创建的。我没有使用 IB 进行控制。现在我想将视图旋转到横向模式。我知道我必须为此使用 shouldAutorotate 方法。

但是由于我没有使用过 IB,当它们处于横向模式时如何调整控件的大小?如何仅使用代码正确定位它们?

4

2 回答 2

1

在大多数情况下,您可以通过将它们的 autoresizingMask 属性设置为以下组合来适当地调整视图大小:

  • UIViewAutoresizingFlexibleLeftMargin
  • UIViewAutoresizingFlexibleRightMargin
  • UIViewAutoresizingFlexibleTopMargin
  • UIViewAutoresizingFlexibleBottomMargin
  • UIViewAutoresizingFlexibleWidth
  • UIViewAutoresizingFlexibleHeight

例如,假设您希望在将视图旋转为横向时增加视图的宽度,希望它相对于屏幕的顶部、左侧和右侧保持相同的边距,并且希望其高度保持不变. 这意味着在上面的六个属性中,只有宽度和下边距应该是灵活的。其他四个属性是固定的。所以你会这样做:

yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

在极少数情况下,当您无法使用其 autoresizingMask 属性使视图正常运行时,您可以将它们包装在自定义视图中并覆盖该视图的layoutSubviews方法。当视图的框架由于自动旋转而发生变化时,会调用此方法,因此您可以[[UIApplication sharedApplication] statusBarOrientation]手动检查和更新子视图的框架。

于 2010-09-03T06:03:18.137 回答
0

您可以使用代码正确定位它们,就像您可能将它们定位在原始方向一样,例如通过设置它们的框架。

至于在代码中执行此操作的位置,请查看 UIViewController 的各种方向更改方法,这些方法将在设备方向更改时调用。例如,您可以在willAnimateRotationToInterfaceOrientation:duration:中移动/调整视图中的控件大小。

于 2010-09-03T04:35:36.170 回答