具有固定宽度视图的 ScrollView 宽度约束

ScrollView width constraint with fixed width views

我正在 XCode 10 中使用 Swift 4 开发一个应用程序。我已经按照以下方式在故事板中为 iPhone (wC, hR) 设置了我的视图:

我对这个设置没有任何问题。

问题出在我对 iPad (wR, hR) 进行调整时。在这里,我禁用了尾部和前导约束,而是添加了 690 的宽度约束,并水平对齐到超级视图。当我这样做时,我收到一个约束错误,显示 "Ambiguous scrollable content width".

我认为问题是我相对于作为滚动视图的超级视图水平对齐,因此没有参考基本视图,但我不确定如何调整它才能正常工作.

虽然它没有多大意义,但如果您还向 Container View 添加对齐水平和垂直中心约束(关于其 superviewScroll View).

这是根据 this answer 和我自己与 AL 的斗争得出的。

我想你需要使用两个"container"个视图。

对于 iPhone (wC, hR):

  • scrollView -- Top: superview, Bottom: superview, Trailing: Safe area, Leading: safe area)
  • "SuperContainerView" scrollView 的子视图 -- Top/Bot/Lead/Trail 到 scrollView(超级视图),等于 scrollView
  • 的宽度
  • "ContainerView" SuperContainerView 的子视图 -- Top/Bot/Lead/Trail 到 SuperContainerView

对 ContainerView 子视图的约束将控制 ContainerView 的高度,这将控制 SuperContainerView 的高度,后者将控制滚动。

对于 iPad (wR, hR):

  • 禁用 ContainerView 的前导和尾随约束
  • 添加 690 的宽度限制
  • 向 SuperContainerView 添加 CenterX 约束

结果...绿色是ContainerView,蓝色是SuperContainerView(滚动视图每边插入8):

如果 phone 上的 运行 旋转到横向时,如果您希望最大宽度为 690,则需要对 wC、hC

进行类似的约束修改