2016-11-30 92 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) 
    } 
}