添加具有比例宽度的子视图以滚动视图

时间:2018-02-04 19:14:14

标签: ios swift uikit

我有一个滚动视图,其中包含三个子视图,如下所示:

enter image description here

问题在于,由于包含标签的堆栈视图占子视图总宽度的80%,因此当用户滚动应用程序时,这看起来很奇怪:

enter image description here

正如您所看到的,由于应用于宽度约束的80%乘数,底部滚动视图中的视图看起来不太合适。用户滚动滚动视图越多,“偏移”越大。我想让子视图始终居中。

如何在保持80%比例的同时保持观点居中?

内容插页:

slideScrollView.contentSize.width = view.bounds.width * CGFloat(introArray.count)

子视图设置:

slideScrollView.addSubview(introView)
introView.frame = CGRect(x: view.bounds.width * CGFloat(index), y: 0, width: view.bounds.width, height: slideScrollView.frame.height)

堆栈视图设置:

enter image description here

2 个答案:

答案 0 :(得分:2)

考虑这个视图层次结构,其中每一行都是它下面一行的父级......

|<------------contentSize.width---------->|  scroll view

|-----p0------|------p1-----|------p2-----|  pages

  |-------|      |--------|   |--------|     orange views, 80%

  |-------|      |--------|   |--------|     labels, center justified" 

关键是添加“页面”图层,将滚动视图内容划分为三分之一。橙色视图将80%的宽度应用于那些。

答案 1 :(得分:1)

对于横幅,我会使用UIPageViewController。每个页面的每个控制器都有UIColor.clear背景,橙色部分将是其子视图正确居中并根据控制器的视图对齐。