반응형
iOS 15, Xcode 13.31, Swift 5, UIKit 환경에서 진행했습니다.
// 스크롤뷰와 컨텐츠를 담을 contentView 생성
private let contentScrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.backgroundColor = .white
scrollView.showsVerticalScrollIndicator = true
return scrollView
}()
private let contentView: UIView = {
let view = UIView()
return view
}()
// 스크롤뷰 view에 등록
view.addSubview(contentScrollView)
contentScrollView.addSubview(contentView)
applyScrollConstraints() // Constraints 등록
// 스크롤뷰는 최상위뷰에 컨텐츠뷰는 스크롤뷰에 맞춰 등록합니다.
// 세로로 스크롤을 줄 때는 contentView.widthAnchor를 등록합니다.
func applyScrollConstraints() {
contentScrollView.translatesAutoresizingMaskIntoConstraints = false
contentView.translatesAutoresizingMaskIntoConstraints = false
let scrollViewConstraints = [
contentScrollView.topAnchor.constraint(equalTo: self.view.topAnchor),
contentScrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
contentScrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
contentScrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
]
let contentViewConstraints = [
contentView.topAnchor.constraint(equalTo: contentScrollView.topAnchor),
contentView.leadingAnchor.constraint(equalTo: contentScrollView.leadingAnchor),
contentView.trailingAnchor.constraint(equalTo: contentScrollView.trailingAnchor),
contentView.bottomAnchor.constraint(equalTo: contentScrollView.bottomAnchor),
contentView.widthAnchor.constraint(equalTo: contentScrollView.widthAnchor)
]
NSLayoutConstraint.activate(scrollViewConstraints)
NSLayoutConstraint.activate(contentViewConstraints)
}
주의점으로 contentView에 담긴 뷰들의 Constraints 값이
상위 뷰가 아닌 contentView에 제약이 걸려있어야 스크롤이 잘 작동합니다.
반응형
'iOS > 코드조각' 카테고리의 다른 글
[iOS, Swift] CollectionView 초기 position 변경하기 (0) | 2022.07.06 |
---|---|
[iOS, Swift] NotificationCenter Example (0) | 2022.07.06 |
[iOS, Swift] 두개 이상의 뷰에 tapGesture 추가하기 (0) | 2022.06.22 |
[iOS, Swift] UIColor hex값 사용하기(extension) (0) | 2022.06.22 |
[iOS, Swift] 현재 뷰 이미지로 변경하기 UIView to UIImage (0) | 2022.06.22 |