티스토리 뷰
스크롤 뷰를 추가하면
Content Layout Guide와 Frame Layout Guide가 생깁니다.
contentLayoutGuide는 스크롤 되는 긴 뷰를 생각하시면 될 것 같습니다.
frameLayoutGuide는 스크롤뷰에서 화면에 보여주는 영역을 설정한다고 생각하면 될 것 같아요.
구분을 위해서 백그라운드는 노란색으로 칠하고 스크롤뷰는 20씩 제약을 줬습니다.
다음으로 스크롤뷰 안에 실제 내용을 담을 View를 넣어줍니다.
처음에 Content Layout Guide를 스크롤되는 긴 뷰라고 했죠.
그래서 이 내부 View의 제약을 Content Layout Guide에 설정합니다.
이렇게 제약을 설정하면 문제가 생기는데
이렇게 제가 의도하지 않은 숫자들이 추가되니까 0으로 고쳐주세요.
Frame Layout Guide는 화면에 보여지는 영역이라고 했죠.
이 프레임에 Equal Widths를 하면 가로는 Frame과 일치시켜 세로로 스크롤이 되고,
이 프레임에 Equal Heights를 하면 세로가 Frame과 일치시켜 가로로 스크롤이 됩니다.
여기서도 이렇게 설정하면 다음과 같이 제가 원하는대로 설정이 안되니
수정을 해주세요.
그 다음 뷰의 높이를 정해주시면 됩니다.
저는 이 뷰의 높이를 1000으로 했습니다.
이렇게 표시되면 정상적으로 설정된겁니다.
코드로 스크롤 뷰를 만들어보겠습니다.
class ViewController: UIViewController {
let scrollView = UIScrollView()
let innerView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemYellow
createUI()
}
}
extension ViewController {
func createUI() {
let safeArea = view.safeAreaLayoutGuide
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.topAnchor.constraint(equalTo: safeArea.topAnchor, constant: 20).isActive = true
scrollView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor, constant: -20).isActive = true
scrollView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 20).isActive = true
scrollView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: -20).isActive = true
scrollView.addSubview(innerView)
innerView.backgroundColor = .white
innerView.translatesAutoresizingMaskIntoConstraints = false
innerView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor).isActive = true
innerView.bottomAnchor.constraint(equalTo: scrollView.contentLayoutGuide.bottomAnchor).isActive = true
innerView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor).isActive = true
innerView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor).isActive = true
innerView.widthAnchor.constraint(equalTo: scrollView.frameLayoutGuide.widthAnchor).isActive = true
innerView.heightAnchor.constraint(equalToConstant: 1000).isActive = true
}
}
아래 log에 대해서 아시는 분 댓글 부탁드립니다. 무시해도 된다고 하는데 맞겠죠??
2020-11-13 16:07:16.811547+0900 ScrollViewCode[13272:263968] [TraitCollection] Class CKBrowserSwitcherViewController overrides the -traitCollection getter, which is not supported. If you're trying to override traits, you must use the appropriate API.
'iOS' 카테고리의 다른 글
[iOS] Swift UNUserNotificationCenter 특정 시간에 알림, 로컬노티 보내기, Date()를 DateComponents로 변환 (0) | 2020.11.19 |
---|---|
[iOS] Date() 계산하기, swift 날짜 시간 더하기, 비교하기 (0) | 2020.11.18 |
[iOS] Swift AppIcon 쉽게 설정하기, 앱 아이콘 설정 (0) | 2020.11.14 |
[iOS] Swift 회원가입 화면 만들기 (0) | 2020.11.03 |
Swift iOS 공부 정리 (0) | 2020.10.15 |