浮动在 UIView 而不是 Paging 上的水平滚动视图
Posted
技术标签:
【中文标题】浮动在 UIView 而不是 Paging 上的水平滚动视图【英文标题】:Horizontal Scroll view floating on UIView instead of Paging 【发布时间】:2016-02-10 13:31:19 【问题描述】:我正在尝试做一个类似于分页类型的水平滚动视图,我在其中添加了 3 个视图。我已将滚动视图放在 UIView(myView) 上方的情节提要中并设置了约束。以下是我的约束和相同的代码 -
ScrollView 约束
我的代码相同 -
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var contentView: UIView!
override func viewDidLoad()
super.viewDidLoad()
scrollView.frame = CGRectMake(0, 0, myView.frame.width, myView.frame.height)
let view1 = UIView(frame: CGRectMake(0, 0, scrollView.frame.width, scrollView.frame.height))
view1.backgroundColor = UIColor.blackColor()
let view2 = UIView(frame: CGRectMake(scrollView.frame.width, 0, scrollView.frame.width, scrollView.frame.height))
view2.backgroundColor = UIColor.redColor()
let view3 = UIView(frame: CGRectMake(scrollView.frame.width*2, 0, scrollView.frame.width, scrollView.frame.height))
view3.backgroundColor = UIColor.whiteColor()
self.scrollView.addSubview(view1)
self.scrollView.addSubview(view2)
self.scrollView.addSubview(view3)
scrollView.contentSize = CGSizeMake(self.scrollView.frame.width*3, scrollView.frame.height)
// Do any additional setup after loading the view.
我的问题 -
1) 当我在较小的屏幕上运行滚动视图时,它会浮动。
2)我的view1,view2,view3的宽度和myView的不一样。由于 myView 使用 (0,0,0,0) ping 到视图,因此视图“view1,view2,view3”应该具有 myView 的宽度和高度,其高度应该等于 (mainView - TopView) 和宽度主视图。
请帮忙,因为我非常需要这个解决方案,但我不知道该怎么做?谢谢。
【问题讨论】:
【参考方案1】:您对 MyView 使用约束,因此您可能应该对其他视图使用约束。使用制图在运行时进行约束的最简单方法 https://github.com/robb/Cartography 不要忘记在故事板中为滚动视图设置高度限制。
在你的 viewDidLoad 之后需要这样写:
let views = [UIView(), UIView(), UIView()]
views.forEach
self.scrollView.addSubview($0)
constrain($0) view1 in
view1.left == view1.superview!.left
view1.right == view1.superview!.right
view1.height == view1.superview!.height
constrain(views[0], views[1], views[2]) view1, view2, view3 in
view1.top == view1.superview!.top
view2.top == view1.bottom
view3.top == view2.bottom
view3.bottom == view3.superview!.bottom
【讨论】:
以上是关于浮动在 UIView 而不是 Paging 上的水平滚动视图的主要内容,如果未能解决你的问题,请参考以下文章
swift 4中的页面控制是不是可以有一个无限的水平分页uiscrollview?
如何在 Objective C 中为浮动 UIView 设置动画