在没有IB的情况下旋转uiview

问题描述 投票:-1回答:2

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

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

iphone uiview uiinterfaceorientation
2个回答
1
投票

在大多数情况下,只需将autoresizingMask属性设置为以下组合,就可以获得适当调整大小的视图:

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

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

yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

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


0
投票

您可以使用与原始方向相同的方式正确定位它们,例如通过设置框架。

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

© www.soinside.com 2019 - 2024. All rights reserved.