xcode - 澄清 Xcode 6 的限制

标签 xcode interface-builder ios8 constraints

我有一个应用程序,正在从 iOS 7 更新到 8,并尝试利用 Apple 现在提供的新尺寸类别。我似乎遇到很多麻烦的一件事是约束系统的工作原理。我已经完成了一些教程并查看了其他帖子,但事情似乎仍然对我不利。

首先,我将解释我的文件结构并提供一些图像,以防万一我不清楚我所拥有的内容。

我的 View Controller 设置如下:

View Controller 看法 导航栏 键盘避免 ScrollView (UIScrollView) 看法 什么类型( child View ) 账单名称 欠款金额查看 可选 View 提醒 View 节省 这是该结构的屏幕截图:enter image description here

对于我的限制,我将导航栏和键盘避免 (UIScrollView) 设置为 0 右上角、左下角和底部。参见下图。 enter image description here

到目前为止,一切都很顺利。 Xcode 不会提示缺少任何东西。

接下来是 ScrollView 内的 View ,我将其用作 ScrollView 内所有内容的容器。当我尝试从大约开始重复该过程时,我收到一些约束警告......但为什么呢?我在右上角、左下角和底部给了它一个约束,为什么这不足以让 Xcode 知道它应该有多高和多高。似乎也需要 View 的宽度和高度。如果我设置宽度,那么购买时它会假定宽度为 600,这对于任何 iPhone 来说都太宽了。

我确信我的想法在某些地方不正确..我只是不知道在哪里以及为什么。我真的很想了解这个系统是如何工作的,所以任何见解都会有帮助

谢谢!!

** 更新 **

这是检查员的样子 :enter image description here

这就是 Xcode 提示的地方 enter image description here

最佳答案

UIScrollView 是约束方面的一个特殊情况。对 UIScrollView 的直接子级的约束实际上设置了 ScrollView 的 contentSize。它实际上非常强大,因为它意味着您可以用东西填充 UIView ,并且只要您适本地设置了所有约束,它就会自动设置 UIScrollView 的 contentSize无需您在代码中执行任何操作。但是,如果您没有将子 UIView 在各个方向上固定到 ScrollView 的约束,您将收到“不明确的可滚动内容”警告,因为这就是它计算 contentSize 的方式。

但是,这意味着您不能期望固定在 UIScrollView 左侧和右侧的子 UIViewUIScrollView< 的宽度相匹配,因为默认宽度是由其内容决定的。

但是有一种方法可以解决这个问题。您可以在 Interface Builder 中选择 UIScrollViewUIView,然后添加“等宽度”约束。这将绕过 contentSize 的设置,并且实际上将 UIView 的宽度与 UIScrollView 的框架宽度相匹配。

希望有帮助。

关于xcode - 澄清 Xcode 6 的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071202/

相关文章:

ios - 一个xib,几个子类

ios - 通过 Interface Builder 创建的 UIView 在 vi​​ewDidLoad 中没有 subview

iphone - 如何将UIButton的highlighted属性设置为NO?

ios - 已弃用 UIActivityViewController 的完成处理程序

avaudiosession - iOS8 AVAudioSession setActive错误

ios - 线程 1 : EXC_BAD_INSTRUCTION when trying to write a message JSQMessagesViewController

ios - 类型 'any View' 不能符合泛型协议(protocol)上的 'View'

iphone - Xcode 5 - DVTPlugInCompatibilityUUID 中不存在所需的插件?

ios - 从 iOS 可操作通知交叉启动其他应用程序

ios - Xcode Source Control - 将本地更改推送到加载中