2010-09-03 51 views
0

在我的应用程序中,我的所有控件都是在代码中创建的。我没有使用IB来控制。现在我想旋转视图到风景模式。我知道我必须为此使用shouldAutorotate方法。但由于我没有使用过IB,所以当它们处于横向模式时,如何调整控件大小?我怎样才能正确使用代码定位他们? PLZ帮助我,这是一种重要而紧迫的事情。 thnx提前。旋转UI查看IB

回答

1

在大多数情况下,你可以得到的观点,只是由他们autoresizingMask属性设置的某种组合适当地调整自己:

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

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

yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 

在那些极少数情况下,当你不能得到的意见,做出相应的表现用他们autoresizingMask属性,你可以自定义视图将它们包装和覆盖该视图的layoutSubviews方法。此方法在视图的框架由于自转而更改时被调用,因此您可以检查[[UIApplication sharedApplication] statusBarOrientation]并手动更新子视图的框架。

+0

hey thnx。我认为这将帮助我与笏我试图实现。我认为autoresizing属性会锻炼得很好。 – Jayshree 2010-09-03 06:26:25

0

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

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

+0

嗨。 thnx的回应。但我关心的是,我必须为每个对象设置帧的横向格式吗?我的意思是我将不得不为每个对象设置两次帧,即 - 纵向和横向?这将变得很麻烦,因为我有很多的意见,并在他们每一个很多的控制?你有什么样的例子或代码能帮助我吗? – Jayshree 2010-09-03 04:56:23