【问题标题】:Content view width not taking main views width if scroll view is used如果使用滚动视图,内容视图宽度不占用主视图宽度
【发布时间】:2015-11-29 21:25:56
【问题描述】:

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

截图:

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

【问题讨论】:

  • 看起来像自动布局问题,您需要提供更多信息
  • @vacawama,我已完成所有步骤,但我已将内容视图宽度设置为等于主视图宽度,而不是引用中提到的滚动视图宽度。哪一个是正确的?

标签: ios swift storyboard


【解决方案1】:

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

例如,如果您的“否”图像宽度具有绝对值,并且它与内容视图具有绝对前导距离,并且与内容视图具有绝对尾随距离,那么内容视图将受到过度约束。您有竞争约束告诉内容视图它应该有多宽:1)等于屏幕的宽度或 2)等于包含的图像的宽度加上它与屏幕两侧的距离。由于对内容视图大小的限制过多,自动布局 可能无法选择您想要的约束,并且您最终可能会导致内容视图的大小与您想要或期望的不一样。

相反,您应该:

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

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

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

  4. 您可能需要区别对待内容视图的垂直大小。在垂直方向上,您可能没有限制内容视图的高度,因此您必须确保子视图具有明确的高度(或以其他方式进行限制,例如 纵横比约束),子视图应该从屏幕顶部到屏幕底部以绝对距离相互连接。最顶部的子视图应该与内容视图的顶部有一个垂直距离。最底部的子视图应该与内容视图的底部有一个垂直距离。这将为 Auto Layout 提供足够的信息来计算内容视图的高度。

【讨论】:

  • 是的,它现在按照第二种方法工作。在将滚动视图宽度设置为内容视图宽度后,水平条也被禁用。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2022-01-14
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多