프로젝트에서 이용약관을 보여줘야 하는 VC가 필요했다.
대부분 이용약관 text는 상당히 길다.
어떻게 표현할지 고민하다 ScrollView를 사용했는데
ScollView의 레이아웃을 잡는 과정을 포스팅 하려한다.
일단 ScollView를 만들겠다.
private let scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.isScrollEnabled = true
scrollView.indicatorStyle = .black
scrollView.showsVerticalScrollIndicator = true
return scrollView
}()
Scroll 사용 여부를 결정하는 Bool 값인 isScrollEnabled 속성은 true로 설정하고
Scroll 할 때 indicatorStyle로 우측에 indicator의 색상을 설정할 수 있다.
scrollView.showsVerticalScrollIndicator는 false로 설정하면 indicator를 보이지 않게 할 수 있다.
위에는 true로 설정해줬는데
기본 값이 True여서 따로 숨기고 싶지 않을때는 설정을 해주지 않아도 보여진다.
이제 레이아웃을 잡아 볼껀데 그전에
라벨의 text에 따라 유동적인 ScrollView를 만들거니깐 라벨도 하나 만들겠다.
private let contentLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.textAlignment = .center
return label
}()
이제 진짜 레이아웃 잡아볼껀데 오토레이아웃을 Snapkit으로 진행하겠다.
Anchor로 잡을때의 번거로움을 없에주는데 다음에 Snapkit과 Anchor와의 비교를 포스팅 하겠다.
[scrollView].forEach {
view.addSubview($0)
}
scrollView.snp.makeConstraints { (make) in
make.edges.equalTo(view.safeAreaLayoutGuide)
}
scrollView.addSubview(contentLabel)
contentLabel.snp.makeConstraints { (make) in
make.top.equalTo(scrollView).inset(30)
make.width.equalToSuperview().multipliedBy(0.85)
make.centerX.equalToSuperview()
make.bottom.equalToSuperview()
}
일단 addSubView 해주고
edge를 safeAreaLayoutGuide에 맞춰주면
safeAreaLayoutGuide에 사방이 맞춰진다.
따로 height을 설정하지 않았다.
그리고 Label도 height을 따로 설정하지 않고 top, width, centerX, bottom만 설정해놓은걸 볼 수 있다.
label의 numberOfLines을 0으로 설정하면 1줄에서 끝나는게 아니라 특성상 text양에 따라 줄이 추가되거나 감소해서
ScrollView와 같이 유동적으로 사이즈가 만들어저서 레이아웃이 잡히는걸 볼 수 있다.
'IOS' 카테고리의 다른 글
[IOS] UserInterfaceStyle (0) | 2020.12.22 |
---|---|
[IOS] 이미지와 라벨을 같이 사용한 NavigationBarButtonItem (0) | 2020.12.21 |
[IOS] User Event & MainRunLoop (0) | 2020.12.19 |
[IOS] PickerView의 element를 직접구성하는 방법 (0) | 2020.12.15 |
[IOS] AttributedString을 사용한 Label에 Image 속성 추가 (0) | 2020.12.10 |