启动屏幕XIB:缺less宽度/高度限制(Xcode 6)
使用Xcode 6 ,我正在构build一个针对iOS8的iOS应用程序。
我正在从菜单创build一个LaunchScreen.xib
文件: File > New > File > iOS - User Interface - Launch Screen
。 “使用自动布局”已启用。
在XIB的主UIView
,我放置了一个UIImageView
。 我想添加宽度和高度约束,以便UIImageView
具有与容器相同的大小。 但是,Xcode不让我这样做:我只能使用间距和alignment。
以下是我所看到的:
我究竟做错了什么? 为什么我看不到像下面这样的菜单?
我知道我可以达到相同的结果,通过设置领先空间,尾随空间,顶部空间和底部空间到容器为0,但我也想知道这里发生了什么。
编辑:
Xcode 7+默认为启动屏幕的Storyboard文件。
如下所述,与XIB不同,故事板文件允许您为根UIView
设置宽度和高度约束。
我还没有find官方的解释,为什么XIB的行为就像这样, 当他们有一个UIView
的根源 。
对我来说奇怪的是,我们提供的默认( LaunchScreen.xib
)没有设置为像我们习惯的故事板一样。
我select的第一个解决scheme是使用Storyboard来绘制启动屏幕,而不是XIB:
- 删除
LaunchScreen.xib
- 创build一个
LaunchScreen.storyboard
(菜单:File > New > File > iOS - User Interface - Storyboard
) - 转到您的项目属性,select导航到您的目标的常规属性,
LaunchScreen.storyboard
在“启动屏幕文件”combobox中selectLaunchScreen.storyboard
- 打开
LaunchScreen.storyboard
,添加一个视图控制器,并确保勾选“是初始视图控制器框” - 现在,您可以将视图控制器的视图作为启动屏幕工作,您将获得我最初寻找的宽度和高度约束
另一种解决scheme是删除LaunchScreen.xib
的默认UIView
,并将其replace为View Controller。
就像在前面的例子中一样,如果你这样做的话,你可以在View Controller的视图上工作,你将得到通常的约束菜单。
对于每个.xib都会发生这种情况,您无法制作与主视图等宽的视图。 另一方面,当你在故事板上时,可以做到这一点。
最后,如您所说,您可以通过设置前端,后端顶部和底部距离来完成所需的布局。
你的应用程序可以在单个设备上运行吗? 如果不是,你怎么知道容器的大小? 它会因iPhone 5,iPhone 6,iPod或iPad而有所不同。 最好的方法仍然是指定前导空间,尾随空间,顶部空间和底部空间为0.您确定它可以在任何设备上工作。
无论如何,我试图重现这个问题,但是无论是在编辑器/编辑中,还是通过按下编辑器底部的button,我都能够在Pin菜单中指定图像视图的宽度和高度。 我可以指定任何宽度/高度没有问题。
希望有所帮助!
一个非常简单的解决scheme是添加一个清晰的UIView并将其固定到容器中,然后通过将它们与已添加的清晰“根”UIView相关联来访问所有约束。