제약 조건을 사용하여 프로그래밍 방식으로 나란히 배치 된 두 개의보기 컨트롤러간에 간단한 가로 스크롤을 만들려고합니다. 내가 여기있는 것은 작동하는 것처럼 보이지만 내가 읽은 모든 것은 제약 조건이 올바르게 설정되면 contentSize
의 크기를 구성 할 필요가 없다고 말합니다. autolayout이 나를 대신 할 것입니다. 그러나 scrollView.contentSize = CGSize(width: view.bounds.width * 2, height: view.bounds.height)
을 viewWillLayoutSubviews
에서 제거하면 스크롤되지 않습니다. 나는 어디로 잘못 갔는가? 당신이 설정되어있는 contentView trailingAnchor이 trailingAnchor을 볼 수 설정, "(view.trailingAnchor EqualTo가) .isActive = 사실 contentView.trailingAnchor.constraint"프로그래밍 방식으로 제약 조건이있는 UIScrollView를 올바르게 설정하는 방법은 무엇입니까?
class ViewController0: UIViewController {
let scrollView = UIScrollView()
let contentView = UIView()
let page1 = ViewController1()
let page2 = ViewController2()
override func loadView() {
setView()
addScrollView()
fillScrollView()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
scrollView.contentSize = CGSize(width: view.bounds.width * 2, height: view.bounds.height)
}
func setView() {
view = UIView()
view.frame = UIScreen.main.bounds
view.backgroundColor = UIColor.blue
}
func addScrollView() {
scrollView.bounces = false
scrollView.isPagingEnabled = true
scrollView.backgroundColor = UIColor.brown
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
contentView.backgroundColor = UIColor.green
contentView.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(contentView)
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
contentView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1).isActive = true
contentView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 2).isActive = true
}
func fillScrollView() {
addChildViewController(page1)
page1.didMove(toParentViewController: self)
page1.view.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(page1.view)
page1.view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true
page1.view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
page1.view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
page1.view.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1).isActive = true
addChildViewController(page2)
page2.didMove(toParentViewController: self)
page2.view.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(page2.view)
page2.view.leadingAnchor.constraint(equalTo: page1.view.trailingAnchor).isActive = true
page2.view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
page2.view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
page2.view.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 1).isActive = true
}
}
작동합니다 뷰의 폭과 같은 contentView 폭 또한 scrollView와 관련하여 contentView의 모든 레이아웃 제약 조건을 생성해야합니다. –