水平滚动视图浮动在UIView上而不是Paging

时间:2016-02-10 13:31:19

标签: ios swift uiscrollview

我正在尝试执行类似于我正在添加3个视图的分页类型的水平滚动视图。我把滚动视图放在我的故事板上面的UIView(myView)&有限制。以下是我的约束和我的相同代码 -

ScrollView约束

enter image description here

我的相同代码 -

@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)固定到视图,因此视图“view1,view2,view3”应具有宽度& myView的高度,其高度应等于(mainView - TopView)&宽度为mainView。

请帮忙,因为我非常需要这个解决方案而且我无法弄明白该怎么办?感谢。

1 个答案:

答案 0 :(得分:0)

您对MyView使用约束,因此您应该对其他视图使用约束。使用制图在运行时制作约束的最简单方法 https://github.com/robb/Cartography 不要忘记在故事板中为scrollview设置高度约束。

在你的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
    }