2017-10-05 70 views
1

我想弄清楚UIScrollView是如何工作的,我用不同的backgroundColor屬性爲它添加了一些子視圖。我用ios9 autolayout展示了子視圖,但即使視圖在屏幕之外,UIScrollView仍然不會滾動。以編程方式佈置UIScrollView,並添加了自動佈局的子視圖,但它不滾動

import UIKit 

class ViewController: UIViewController { 

    let scrollView: UIScrollView = { 
     let sv = UIScrollView() 
     sv.translatesAutoresizingMaskIntoConstraints = false 
     sv.backgroundColor = .gray 
     return sv 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.addSubview(scrollView) 

     scrollView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
     scrollView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true 
     scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true 
     scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 

     let view1 = UIView() 
     view1.backgroundColor = .red 

     let view2 = UIView() 
     view2.backgroundColor = .blue 

     let view3 = UIView() 
     view3.backgroundColor = .green 

     let view4 = UIView() 
     view4.backgroundColor = .purple 

     let views = [view1, view2, view3, view4] 

     for view in views { 
      scrollView.addSubview(view) 
      view.translatesAutoresizingMaskIntoConstraints = false 
     } 

     view1.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true 
     view1.leftAnchor.constraint(equalTo: scrollView.leftAnchor).isActive = true 
     view1.heightAnchor.constraint(equalToConstant: 140).isActive = true 
     view1.widthAnchor.constraint(equalToConstant: 140).isActive = true 

     view2.topAnchor.constraint(equalTo: view1.bottomAnchor, constant: 100).isActive = true 
     view2.leftAnchor.constraint(equalTo: view1.rightAnchor).isActive = true 
     view2.heightAnchor.constraint(equalToConstant: 140).isActive = true 
     view2.widthAnchor.constraint(equalToConstant: 140).isActive = true 

     view3.topAnchor.constraint(equalTo: view2.bottomAnchor, constant: 50).isActive = true 
     view3.leftAnchor.constraint(equalTo: view1.rightAnchor).isActive = true 
     view3.heightAnchor.constraint(equalToConstant: 140).isActive = true 
     view3.widthAnchor.constraint(equalToConstant: 140).isActive = true 

     view4.topAnchor.constraint(equalTo: view3.bottomAnchor, constant: 20).isActive = true 
     view4.leftAnchor.constraint(equalTo: view1.rightAnchor).isActive = true 
     view4.heightAnchor.constraint(equalToConstant: 140).isActive = true 
     view4.widthAnchor.constraint(equalToConstant: 140).isActive = true 
    } 

} 

回答

0

當UIScrollViews使用自動佈局,你必須針子視圖既允許滾動視圖來計算它的contentSize滾動視圖的頂部和底部。

添加此行修復它:

view4.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0).isActive = true 
相關問題