启动屏幕XIB:缺少宽度/高度限制(Xcode 6)

时间:2015-01-29 16:34:40

标签: ios xcode interface-builder autolayout

使用 Xcode 6 ,我正在构建一个针对 iOS8 的iOS应用。

我正在使用菜单LaunchScreen.xib创建的File > New > File > iOS - User Interface - Launch Screen文件。 "使用自动布局"已启用。

在XIB的主要UIView内,我已经放置了UIImageView。我想添加宽度和高度约束,以便UIImageView具有与容器相同的大小。但是,Xcode不允许我这样做:我只能使用间距和对齐方式。

这就是我所看到的:

Launch Screen.xib

我做错了什么?为什么我看不到如下菜单?

Size Constraints Menu

我知道通过将前导空格,尾随空格,顶部空间和底部空间设置为0可以达到相同的结果,但我还想了解这里发生了什么。

4 个答案:

答案 0 :(得分:4)

编辑:

Xcode 7 + 默认为启动屏幕的Storyboard文件 如下所述,与XIB不同,Storyboard文件允许您将宽度和高度约束设置为根UIView


我无法找到官方解释为什么XIB的行为如此,当他们在根时有UIView
对我来说看起来很奇怪的是,我们默认提供的内容(LaunchScreen.xib)的设置与我们习惯使用的故事板完全不同。

我选择的第一个解决方案是使用Storyboard绘制Launch Screen而不是XIB:

  • 删除LaunchScreen.xib
  • 创建LaunchScreen.storyboard(菜单:File > New > File > iOS - User Interface - Storyboard
  • 转到项目属性,选择导航到目标的常规属性,然后在“启动屏幕文件”组合框中选择LaunchScreen.storyboard
  • 打开LaunchScreen.storyboard,添加视图控制器,确保勾选“是初始视图控制器框”
  • 您现在可以将视图控制器的视图作为启动屏幕,您将获得我最初寻找的宽度和高度限制

Launch Screen Storyboard

另一种解决方案是删除UIView中的默认LaunchScreen.xib并将其替换为视图控制器。
就像在前一种情况下一样,如果你这样做,你可以使用View Controller的View,你将获得通常的约束菜单。

Launch Screen XIB

答案 1 :(得分:2)

对于每个.xib都会发生这种情况,你只能看到宽度等于主视图的视图。另一方面,当你在故事板上时,可以这样做。

最后,正如您所说,您可以通过设置前导,尾随顶部和底部距离来完成所需的布局。

答案 2 :(得分:0)

您的应用会在单个设备上运行吗?如果不是,你怎么知道容器的大小?它将在iPhone 5,iPhone 6,iPod或iPad之间变化。最好的方法仍然是将前导空格,尾随空格,顶部空间和底部空间指定为0.您确定它可以在任何设备上运行。

无论如何,我试图重现这个问题,但我可以在Pin菜单中指定图像视图的宽度和高度,无论是在Editor / Pin中还是按下编辑器底部的按钮。我可以毫无问题地指定任何宽度/高度。

希望有所帮助!

答案 3 :(得分:0)

一个非常简单的解决方案是添加一个清晰的UIView并将其固定到容器,然后您可以通过将它们与您添加的清晰“根”UIView相关联来访问所有约束。