Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Refactoring
- 애니메이션
- map
- 클린 코드
- combine
- Observable
- uiscrollview
- RxCocoa
- 스위프트
- tableView
- ios
- 리펙터링
- SWIFT
- swiftUI
- ribs
- Clean Code
- rxswift
- UITextView
- clean architecture
- Xcode
- uitableview
- 리펙토링
- MVVM
- Human interface guide
- UICollectionView
- swift documentation
- collectionview
- HIG
- Protocol
- 리팩토링
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 하단 버튼 SafeArea, 노치 대응 방법 (auto layout) 본문
* (편의를 위해 SnapKit 사용)
하단 버튼 safe area 대응 방법
- notch가 있는 경우와 없는 디바이스 모두 대응 방법
- 버튼의 layout
- left, right, bottom 모두 superview와 동일하도록 설정
self.button.snp.makeConstraints { $0.left.right.bottom.equalToSuperview() // TODO: height }
- 버튼의 크기를 60으로 맞추어야 하는 경우, 버튼의 상단을 safeArea의 하단으로부터 위로 60만큼 올라오도록 설정
self.button.snp.makeConstraints { $0.left.right.bottom.equalToSuperview() $0.top.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-60) // <- 추가 }
- left, right, bottom 모두 superview와 동일하도록 설정
- 버튼의 inset값 부여
- 버튼 안의 컨텐츠 (label)을 위쪽으로 붙인 후 위에서 18만큼 inset 부여
// 버튼 안의 컨텐츠(label)을 위로 붙이는 옵션 self.button.contentVerticalAlignment = .top // 버튼의 top inset을 18만큼 부여 self.button.contentEdgeInsets.top = 18
- 버튼 안의 컨텐츠 (label)을 위쪽으로 붙인 후 위에서 18만큼 inset 부여
- 전체 코드
import SnapKit
class ViewController: UIViewController {
private let button: UIButton = {
let button = UIButton()
button.setTitle("버튼", for: .normal)
button.setTitleColor(.white, for: .normal)
button.setTitleColor(.blue, for: .highlighted)
button.backgroundColor = .systemBlue
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
// 버튼 안의 컨텐츠(label)을 위로 붙이는 옵션
self.button.contentVerticalAlignment = .top
// 버튼의 top inset을 18만큼 부여
self.button.contentEdgeInsets.top = 18
self.view.addSubview(self.button)
self.button.snp.makeConstraints {
$0.left.right.bottom.equalToSuperview()
$0.top.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-60) // <- 추가
}
}
}
'iOS 기본 (swift)' 카테고리의 다른 글
Comments