2017-10-05 5 views
1

UIScrollView의 작동 방식을 파악하려고하고 다른 backgroundColor 속성을 사용하여 일부 하위 뷰를 추가했습니다. ios9 autolayout을 사용하여 하위 뷰를 배치했지만 뷰가 화면 외부에 있더라도 UIScrollView는 여전히 스크롤하지 않습니다. UIScrollViews에서 자동 레이아웃을 사용하는 경우프로그래밍 방식으로 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

당신의 contentSize을 계산하는있는 ScrollView를 허용있는 ScrollView의 상단과 하단에 서브 뷰 모두를 고정해야합니다.

이 줄을 추가하면 그것을 해결

view4.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0).isActive = true