在ib中布局app时的格式与在模拟器中的格式不同

时间:2013-06-14 00:38:17

标签: ios xcode4.6

我正在学习如何制作应用程序,我注意到的第一件事就是当我在界面生成器中以图形方式布置我的应用程序时,当我在模拟器或我自己的设备上运行它时,它是不一样的。我有两个关于正在发生的事情的屏幕截图..

In Interface builder

On the simulator

注意段和开关之间的空间......它们是不同的,当我想要移动开关时会引起问题......

我该如何解决这个问题?看起来好像可能与更大屏幕尺寸的新款iphone有关,而这不是在我的模拟器中运行的......如果是这样,在设计两款手机上看起来都不错的应用时,我应该知道些什么?

2 个答案:

答案 0 :(得分:1)

我认为你被诊断出来的问题是Interface Builder正在向你显示4“屏幕,但你的模拟器正在向你显示3.5”屏幕。在Interface Builder中,您可以单击主面板右下角的以下按钮,在4“和3.5”显示之间切换:

toggle iphone screen size

您也可以在模拟器中从“硬件”菜单中选择“设备”为3.5英寸屏幕或4英寸屏幕,这样您就可以模拟在两个尺寸的应用程序屏幕上运行您的应用程序。顺便说一句,当你去一个“视网膜”模拟器时,它会在屏幕上显示两倍大(因为屏幕的分辨率是两倍)。但您可以通过在模拟器的“窗口”菜单上使用“缩放”选项来控制模拟器窗口的大小。这只会改变模拟器在Mac屏幕上模拟设备的再现大小。但如果您正在使用较小的Mac屏幕,有时您会发现此“缩放”选项也很有用。

但是你真的想确保你的应用程序运行良好,无论屏幕大小如何,所以你真的应该测试这两种尺寸的应用程序。您希望您的应用在iPhone 4设备和iPhone 5设备上都能很好地呈现。幸运的是,您可以通过一个故事板实现这一目标。

根据在两种尺寸的屏幕上规定控件布局的内容,这取决于您是否使用自动布局。您可以通过单击最右侧面板的第一个选项卡并选中或取消选中“使用自动布局”复选框来控制它:

autolayout

如果不使用autolayout(例如,如果您的应用程序要在iOS 5上运行,这很重要),您可以转到自动调整遮罩选项卡并控制指示布局的“弹簧和支柱”。例如,如果单击场景中的某个控件,则可以通过查看“尺寸检查器”选项卡来控制边距是否应随尺寸的变化而变化,或者布局是否应该更改:

strings and struts

如果将鼠标悬停在该“示例”窗口上,它将根据其超级视图的大小(例如,iPhone是否具有3.5英寸屏幕或4英寸屏幕)来设置大小将如何变化的动画。

另一方面,如果您正在使用autolayout(仅适用于运行iOS 6及更高版本的设备),则屏幕上的布局由您为视图定义的“约束”决定(请参阅后者)下图的一半):

auto layout

答案 1 :(得分:0)

如果你想完全控制布局,你应该有2个不同的XIB,一个用于标准屏幕(320 x 480),另一个用于新的iPhone 5屏幕(320 x 568)。这样您就可以指定每个元素出现的完全,并且您不会有任何不同屏幕尺寸的惊喜。

但无论如何,你应该总是将你放入XIB的每个元素的锚定和自动调整保持良好配置。

以下内容来自this tutorial

  

当屏幕在iOS设备上旋转时,您可以管理UI的方式   物体会改变它们的位置,或者它们是否会伸展以填充新物体   窗口。这可以通过这个简单的小工具来管理   Interface Builder。

     

enter image description here

     

左侧的框是您决定对象如何缩放的位置   右边的框是关于对象如何的动画可视化   将在修改布局框架时执行。外箱上   left是您设置“锚点”的位置或对象将锁定的边   上。选择的任何一方都会使物体粘在那边   屏幕尺寸变化。内部广场有控制权   拉伸。当物体被锁定在两侧和屏幕上时   改变它的宽度然后可以告诉对象拉伸   屏幕。值得玩这些设置,看看   不同配置的结果。