启动屏幕 XIB:缺少宽度/高度约束 (Xcode 6)
Launch Screen XIB: Missing Width / Height Constraints (Xcode 6)
使用 Xcode 6,我正在构建一个针对 iOS8[=36= 的 iOS 应用].
我正在处理 LaunchScreen.xib
文件,该文件是从菜单创建的:File > New > File > iOS - User Interface - Launch Screen
。 "Use Auto Layout" 已启用。
在 XIB 的主要 UIView
中,我放置了一个 UIImageView
。我想添加宽度和高度约束,以便 UIImageView
具有与容器相同的大小。但是,Xcode 不允许我这样做:我只能处理间距和对齐。
这是我看到的:
我做错了什么?为什么我看不到如下所示的菜单?
我知道我可以通过将容器的前导 space、尾随 space、顶部 space 和底部 space 设置为 0 来达到相同的结果,但我也想了解这里发生了什么。
每个 .xib 都会发生这种情况,您只是不能制作与主视图宽度相等的视图。另一方面,当您在故事板中时也可以这样做。
最后,正如您所说,您可以通过设置前导、尾随顶部和底部距离来完成所需的布局。
您的应用 运行 会在单个设备上运行吗?如果不是,你怎么知道容器的大小?它会在 iPhone 5、iPhone 6、iPod 或 iPad 之间变化。最好的方法仍然是将前导 space、尾随 space、顶部 space 和底部 space 指定为 0。您确定它可以在任何设备上工作。
无论如何,我尝试重现该问题,但无论是在 Editor/Pin 中还是通过按底部的按钮,我都可以在进入 Pin 菜单时指定图像视图的宽度和高度编辑。我可以毫无问题地指定任何 width/height。
希望对您有所帮助!
编辑:
Xcode 7+ 默认为启动屏幕的故事板文件。
如下所述,与 XIB 不同,Storyboard 文件允许您为根 UIView
.
设置宽度和高度约束
我无法找到关于为什么 XIB 表现如此的官方解释,当它们在根部有一个 UIView
.
在我看来奇怪的是,我们默认提供的内容 (LaunchScreen.xib
) 并未设置为与我们习惯的 Storyboards 完全一样。
我选择的第一个解决方案是使用故事板而不是 XIB 来绘制启动屏幕:
- 删除
LaunchScreen.xib
- 创建一个
LaunchScreen.storyboard
(菜单:File > New > File > iOS - User Interface - Storyboard
)
- 转到您的项目属性,select 导航到目标的常规属性,然后 select
LaunchScreen.storyboard
在 "Launch Screen File" 组合框中
- 打开
LaunchScreen.storyboard
,添加一个View Controller,然后确保勾选"Is Initial View Controller Box"
- 您现在可以将视图控制器的视图作为您的启动屏幕,并且您将获得我最初寻找的宽度和高度限制
另一种解决方案是删除 LaunchScreen.xib
中的默认 UIView
并将其替换为视图控制器。
就像前面的例子一样,如果你这样做,你可以在 View Controller 的 View 上工作,你会得到通常的约束菜单。
一个非常简单的解决方案是添加一个清晰的 UIView 并将其固定到容器中,然后您可以通过将它们与您添加的清晰 "root" UIView 相关联来访问所有约束。
使用 Xcode 6,我正在构建一个针对 iOS8[=36= 的 iOS 应用].
我正在处理 LaunchScreen.xib
文件,该文件是从菜单创建的:File > New > File > iOS - User Interface - Launch Screen
。 "Use Auto Layout" 已启用。
在 XIB 的主要 UIView
中,我放置了一个 UIImageView
。我想添加宽度和高度约束,以便 UIImageView
具有与容器相同的大小。但是,Xcode 不允许我这样做:我只能处理间距和对齐。
这是我看到的:
我做错了什么?为什么我看不到如下所示的菜单?
我知道我可以通过将容器的前导 space、尾随 space、顶部 space 和底部 space 设置为 0 来达到相同的结果,但我也想了解这里发生了什么。
每个 .xib 都会发生这种情况,您只是不能制作与主视图宽度相等的视图。另一方面,当您在故事板中时也可以这样做。
最后,正如您所说,您可以通过设置前导、尾随顶部和底部距离来完成所需的布局。
您的应用 运行 会在单个设备上运行吗?如果不是,你怎么知道容器的大小?它会在 iPhone 5、iPhone 6、iPod 或 iPad 之间变化。最好的方法仍然是将前导 space、尾随 space、顶部 space 和底部 space 指定为 0。您确定它可以在任何设备上工作。
无论如何,我尝试重现该问题,但无论是在 Editor/Pin 中还是通过按底部的按钮,我都可以在进入 Pin 菜单时指定图像视图的宽度和高度编辑。我可以毫无问题地指定任何 width/height。
希望对您有所帮助!
编辑:
Xcode 7+ 默认为启动屏幕的故事板文件。
如下所述,与 XIB 不同,Storyboard 文件允许您为根 UIView
.
我无法找到关于为什么 XIB 表现如此的官方解释,当它们在根部有一个 UIView
.
在我看来奇怪的是,我们默认提供的内容 (LaunchScreen.xib
) 并未设置为与我们习惯的 Storyboards 完全一样。
我选择的第一个解决方案是使用故事板而不是 XIB 来绘制启动屏幕:
- 删除
LaunchScreen.xib
- 创建一个
LaunchScreen.storyboard
(菜单:File > New > File > iOS - User Interface - Storyboard
) - 转到您的项目属性,select 导航到目标的常规属性,然后 select
LaunchScreen.storyboard
在 "Launch Screen File" 组合框中 - 打开
LaunchScreen.storyboard
,添加一个View Controller,然后确保勾选"Is Initial View Controller Box" - 您现在可以将视图控制器的视图作为您的启动屏幕,并且您将获得我最初寻找的宽度和高度限制
另一种解决方案是删除 LaunchScreen.xib
中的默认 UIView
并将其替换为视图控制器。
就像前面的例子一样,如果你这样做,你可以在 View Controller 的 View 上工作,你会得到通常的约束菜单。
一个非常简单的解决方案是添加一个清晰的 UIView 并将其固定到容器中,然后您可以通过将它们与您添加的清晰 "root" UIView 相关联来访问所有约束。