2016-11-30 94 views
0

我加入我的介绍屏幕在scrollview.So我必须滚动水平only.I已设置限制了滚动(顶部,bottom.leading,结尾)。我已经添加子视图像以下滚动型自动布局问题的Xcode 8约束

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) 

但我的scrollview是垂直滚动一点点。如何避免this.Any自动布局问题?

+1

你为什么不使用'UICollectionView'? – clemens

回答

0

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

0

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

只要确保你的contentSize.height不大于scrollView.frame.size.height

一个原因,我可以猜测的是,你可能会设置contentSize点的滚动视图变化框架之后。你应该将你的设置中contentSize viewDidLayoutSubviews()

示例:此代码使垂直滚动

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) 
    } 
}