如果使用滚动视图,内容视图宽度不占用主视图宽度

Content view width not taking main views width if scroll view is used

我已将我的内容视图放在滚动视图中。我还为内容视图和主视图设置了等宽约束。即使这样,内容视图的大小也基于其子视图。

截图:

内容视图后面有一个space。 (内容视图背景为黄色)。这仅适用于 iphone 4s 模拟器

我认为问题在于您的内容视图的子视图在水平方向上不够灵活。由于您的布局需要在所有 iPhone 上工作,因此 iPhone 6 上的内容将比 iPhone 4 上的内容宽得多。

例如,如果您的 "NO" 图片宽度有一个绝对值,并且它有一个到内容视图的绝对前导距离和到内容视图的绝对尾随距离,那么内容视图将被过度约束.您有竞争约束告诉内容视图它应该有多宽:1) 等于屏幕的宽度或 2) 等于包含图像的宽度加上它到屏幕两侧的距离。由于对内容视图大小的限制过多,Auto Layout 可能无法选择您想要的限制,最终内容视图的大小可能不符合您的意愿或预期。

相反,您应该:

  1. 允许图片浮动: 定义图片的宽度,然后在内容视图中居中。这将允许两侧的距离在更大的设备上扩大。

  2. 允许图像增长:将前后边缘约束设置为恒定距离,但不要为图像设置宽度。这将允许图像在更大的设备上拉伸。设置一个 宽高比 约束以允许图像高度与图像宽度成比例增长以保持比例。如果您设置 宽高比 ,请务必移除图像上的任何其他高度限制,否则您的图像可能会受到过度限制而无法增长。

  3. 对内容视图中的其他子视图重复此操作,确保它们水平 浮动增长在内容视图中。

  4. 您可能需要以不同方式处理内容视图的垂直尺寸。在垂直方向上,您可能没有限制内容视图的高度,因此您必须确保子视图具有明确的高度(或者以其他方式受到限制,例如 纵横比 constraint), 子视图应该在从屏幕顶部到屏幕底部的链中以绝对距离相互连接。最顶层的子视图应该与内容视图的顶部有一个垂直距离。最底部的子视图应该与内容视图的底部有一个垂直距离。这将为 Auto Layout 提供足够的信息来计算内容视图的高度。