在我的应用中,我的所有控件都是在代码中创建的。我没有使用IB进行控制。现在我想将视图旋转到横向模式。我知道我必须为此目的使用shouldAutorotate方法。
但由于我没有使用过IB,如何在横向模式下调整控件的大小?如何仅使用代码正确定位它们?
答案 0 :(得分:1)
在大多数情况下,您可以通过将autoresizingMask属性设置为以下组合来获取视图以适当调整自身大小:
UIViewAutoresizingFlexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin
UIViewAutoresizingFlexibleTopMargin
UIViewAutoresizingFlexibleBottomMargin
UIViewAutoresizingFlexibleWidth
UIViewAutoresizingFlexibleHeight
例如,假设您希望视图的宽度在将其旋转为横向时增加,您希望它相对于屏幕的顶部,左侧和右侧保持相同的边距,并且您希望其高度为保持不变。这意味着在上述六个属性中,只有宽度和底部边距应该是灵活的。其他四个属性是固定的。所以你会这样做:
yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
在极少数情况下,如果无法使用autoresizingMask属性使视图正常运行,则可以将它们包装在自定义视图中并覆盖该视图的layoutSubviews
方法。当视图的帧因自动旋转而发生变化时,会调用此方法,因此您可以检查[[UIApplication sharedApplication] statusBarOrientation]
并手动更新子视图的帧。
答案 1 :(得分:0)
您可以使用与原始方向相同的方式正确放置代码,例如设置框架。
至于代码中的位置,请查看UIViewController的各种方向更改方法,这些方法将在设备方向更改时调用。例如,您可以在willAnimateRotationToInterfaceOrientation:duration:内的视图中移动/调整控件的大小。