scrollview自动布局问题xcode 8有约束

时间:2016-11-30 06:25:56

标签: ios xcode autolayout constraints scrollview

我在滚动视图中添加我的介绍屏幕。所以我只需要水平滚动。我为scrollview设置了约束(top,bottom.leading,trailing)。我添加了以下的子视图

 for i in 0..<self.arrIntro.count{

                let view = IntroScreenView.instanceFromNib()
                let x = CGFloat(i) * self.scrollIntro.frame.size.width

                view.frame = CGRect(x: x, y: 0, width: self.scrollIntro.frame.size.width, height: self.scrollIntro.frame.size.height)
                print(view,self.scrollIntro)
                view.imgIntro.image = UIImage(named: "image-1")//UIImage(contentsOfFile: self.arrIntro[i]["Link"] as! String)
                print(self.arrIntro[i]["Link"] as! String)
                self.scrollIntro.addSubview(view)
            }
            self.scrollIntro.contentSize = CGSize(width: (CGFloat(self.arrIntro.count) * self.scrollIntro.frame.size.width ) , height: self.scrollIntro.frame.size.height)

但是我的滚动视图是垂直滚动的一点。我该如何避免这种情况。任何自动布局问题?

2 个答案:

答案 0 :(得分:0)

您未在视图中添加任何约束。为每个项添加高度和宽度约束,视图之间的约束以及从视图到滚动视图的约束。请注意,Su视图和滚动视图之间的约束将为您设置内容大小。

答案 1 :(得分:0)

contentSize.height大于scrollView高度时,滚动视图会垂直滚动。

请确保您的contentSize.height不大于scrollView.frame.size.height

我可以猜到的一个原因是,您可能正在设置contentSize一个点,之后滚动视图的帧会发生变化。您应该在viewDidLayoutSubviews()

中移动设置contentSize

示例:此代码进行垂直滚动

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height)
    }
}

这不是

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet var scrollView: UIScrollView!

    override func viewDidLayoutSubviews() {
        scrollView.contentSize = CGSize(width: self.scrollView.bounds.width*5, height: self.scrollView.frame.height)
    }
}