2011-11-29 92 views
1

是否可以从界面构建器(XCode 4.1)为布局设置横向和纵向方向的布局?我问这个问题,因为当我为肖像设置布局,然后将视图方向更改为风景并根据风景再次重新设置布局时,它将与最后一个布局保持横向方向!这意味着,当我切换回纵向时,布局不会改变。从界面构建器更改布局的两个方向

从IB的这个问题的任何解决方案?

编辑:

我现在明白了主意,于是IB会给你有限的灵活性,我从两个方向查看打,这是有限的,因为我不能为我的每个方向图产生一个完全新的布局从IB,例如,如果我有六个UIButtons(与它们的影子图像视图)放置在纵向如下面的截图:enter image description here

,并给予每个按钮和阴影图像视图中的所有调整口罩在这个截图:

enter image description here

结果在景观将被搞砸了在这个截图:

enter image description here

所以我有两个问题:

1)它可以设置自动缩放这些对象(来自IB),这样景观视图将与肖像视图匹配?如果是的话如何?

2)我可以设计(从IB)一个完全不同的布局景观(不影响纵向原来的布局),如下面的截图:

enter image description here

如果我不能,我认为解决方案是从代码中提出新的观点,这是真的吗?

谢谢你的帮助。

回答

2

要在界面构建器中自动更改视图的布局,必须为视图的所有图形对象设置自动识别遮罩选项。你可以做到这一点编程,如:

myObj.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 

或者在每个对象的Size Inspector选项卡界面生成器。您应该看到这样的事情:

enter image description here

当线路是红色的,这意味着保证金(关于物体的容器)将保持不变,如果设备方向的变化。在其他情况下,边距将更改以适应视图容器中的对象放置。

不太可能的,当行是在NOT为红色,则表示TEH对象的大小将保持不变中的所有的设备取向,否则该尺寸将被修改

所以(例如用于背景图像是有用的) ,在上面的例子中,对象的大小不会改变,左边和上边距不会改变它的容器。

希望这已经够清楚了。不要犹豫的情况下,反应还不清楚

编辑

你可以简单地做下面的伎俩检查调整面膜的结果,而无需重新编译应用程序:

  • 选择uiviewcontroller主视图(self.view)
  • 转到属性检查器
  • 在“模拟度量标准”部分,您应该看到'方向'项目
  • 切断并从“肖像”,以“山水”,查看结果视图

EDIT1

如果我正确理解你的意思,我想你可以这样来做:

enter image description here

配售您的按钮,在视图中容器的阴影图像视图。然后设置视图容器自动调整,因为您正在为自己的按钮执行右键操作,并锁定与该视图容器有关的按钮和图像视图大小/边距。

这应该工作。

+0

非常感谢你的彻底澄清。不过,请在问题正文中查看我的(EDIT)。 – JAHelia

1

这当然不是IB的问题。没有内置的机制来切换到完全不同的方向变化布局。

如果您的对象(按钮/阴影)大小不同,那么您必须将它们分组到视图中,@Niko表示用于自动调整掩码才能正常工作。

+0

对象的大小不一样。所以要完全切换到一个新的不同的方向变化布局,我应该返回代码并为该布局创建一个新的视图? – JAHelia

+0

您可以为纵向和横向定位(在IB中)设计两个单独的视图,将它们添加到顶部视图(例如viewDidLoad中),然后在方向更改时显示/隐藏适当的子视图。 – mifki

+0

对不起mifki,我没有想到,如何将viewDidLoad中的两个视图添加到顶部视图?如果我这样做了(创建第二个不同的方向改变视图),那么,我必须创建(例如)两个按钮,标记为(1)和两个按钮(标记为2)等...直到(6)根据我上面的屏幕截图,这意味着每个按钮的功能加倍(考虑到每个按钮触发一个IBAction方法),这反过来会产生很多冗余代码。所以你认为最好的情况是什么? – JAHelia