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 | 31 |
Tags
- 애니메이션
- MVVM
- map
- 스위프트
- collectionview
- 리펙토링
- HIG
- Refactoring
- Human interface guide
- 리팩토링
- Clean Code
- ios
- uiscrollview
- UITextView
- UICollectionView
- combine
- RxCocoa
- Xcode
- clean architecture
- tableView
- swiftUI
- swift documentation
- uitableview
- 리펙터링
- Observable
- Protocol
- SWIFT
- rxswift
- ribs
- 클린 코드
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] AutoresizingMask, translatesAutoresizingMaskIntoConstraints 개념 본문
iOS 기본 (swift)
[iOS - swift] AutoresizingMask, translatesAutoresizingMaskIntoConstraints 개념
jake-kim 2021. 8. 22. 22:19AutoresizingMask
- superview의 bounds가 변경될때 subview의 크기를 어떻게 크기를 재설정 할것인가에 대한 bit mask
- bit mask: 컴퓨터의 언어인 이진수를 사용하면 연산이 빠른점을 이용해 어떤 정수를 이준수 형태로 표현하여 자료구조로써 사용하는 기법
- 원리: view의 bounds가 변경되면 subview들을 각 subview의 autoresizing mask에 해당되는 부분을 자동으로 재설정
- UIView.AutoresizingMask에 설명된 상수를 결합하여 값을 조정
- default값은 flexibleWidth와 flexibleRightMargin 상수가 포함되어 있지만, flexibleLeftMargin상수는 포함되어 있지않기 때문에 뷰가 왼쪽에 고정되어 있는 것으로 가정
Autoresizing 개념
- Autoresizing mask를 사용하여, superview가 커지거나 줄어듦에 따라 subview의 크기나 위치를 조정
- Autoresizing을 사용하지 않은 경우
class ViewController: UIViewController {
lazy var sampleSuperview: UIView = {
let view = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 200, height: 200)))
view.backgroundColor = .darkGray
return view
}()
lazy var sampleSubview: UIView = {
let view = UIView(frame: CGRect(origin: CGPoint(x: 50, y: 50), size: CGSize(width: 100, height: 100)))
view.backgroundColor = .lightGray
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
sampleSuperview.center = view.center
view.addSubview(sampleSuperview)
sampleSuperview.addSubview(sampleSubview)
UIView.animate(withDuration: 1.5) {
self.sampleSuperview.bounds.size = CGSize(width: 300, height: 300)
}
}
}
- 왼쪽에 margin부여
sampleSubview.autoresizingMask = [.flexibleLeftMargin]
- 크기 부여
sampleSubview.autoresizingMask = [.flexibleWidth, .flexibleHeight]
translatesAutoresizingMaskIntoConstraints 개념
- autoresizingMask는 superview가 변함에 따라 subview의 크기를 어떻게 할것인가이기 때문에, 이와 동일한 기능을 하는 autolayout에서 같이 사용된다면 충돌이 날 수 있는것 > 충돌 방지를 위해 Auturesizing을 사용하지 않는것으로 명시적 선언
subview.translatesAutoresizingMaskIntoConstraints = false
- Storyboard에서는 autolayout을 사용하면 자동으로 false로 설정
* 참고
- https://developer.apple.com/documentation/uikit/uiview/1622559-autoresizingmask
- https://developer.apple.com/documentation/appkit/nsview/1526961-translatesautoresizingmaskintoco
'iOS 기본 (swift)' 카테고리의 다른 글
Comments