일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ios
- Human interface guide
- 리펙토링
- 애니메이션
- 리펙터링
- 스위프트
- 리팩토링
- uiscrollview
- HIG
- RxCocoa
- uitableview
- Refactoring
- UICollectionView
- Observable
- clean architecture
- tableView
- Clean Code
- UITextView
- SWIFT
- combine
- MVVM
- Xcode
- rxswift
- map
- collectionview
- 클린 코드
- ribs
- swiftUI
- swift documentation
- Protocol
- Today
- Total
목록layoutIfNeeded() (4)
김종권의 iOS 앱 개발 알아가기
layoutIfNeeded() 레이아웃 시스템을 업데이트하고 뷰의 크기와 위치를 조정 subview의 레이아웃을 즉시 업데이트 layoutIfNeeded() 동작 원리 a.layoutIfNeeded() 위와같이 호출하는 경우 뷰의 레이아웃 업데이트 범위? a뷰는 업데이트 안됨 a의 subview들만 업데이트됨 (공식 문서에서도 subviews들을 업데이트 한다고 명시) 주의사항 a뷰가 b뷰를 가지고 있을때, a.layoutIfNeeded()를 호출하면 b.layoutIfNeeded()가 호출되지 않음 a.layoutIfNeeded()를 호출해서 a뷰의 레이아웃이 업데이트되고 b입장에서 a뷰의 레이아웃이 업데이트 되었으므로 자동으로 업데이트 되는 것 autolayout 사용할 경우 superview에 따라..
layoutSubviews() 호출되는 시점 해당 뷰가 업데이트 되고난 직후 x 해당 뷰와 subview들이 업데이트가 완료된 후 x 해당 뷰와 subview들이 업데이트가 완료되고 레이아웃의 변화가 있을때만 o layoutIfNeeded() 동작 해당 뷰와 superview들을 업데이트? x 해당 뷰와 subview들을 업데이트 o setNeedsLayout() 동작 setNeedsLayout()을 호출하면 런 루프 스케쥴링에 자신의 뷰를 다시 계산해달라고 요청 (다음 렌더링 업데이트 주기에서 해당 레이아웃을 재계산 해달라고 요청) 사용 시 주의사항 viewDidLayoutSubviews() 안에서 view.layoutIfNeeded()를 호출하면? viewDidLayoutSubviews()는 해당 뷰..
Layout 용어와 layoutSubviews() 메소드 UIView의 layout이라는 의미는 위치와 크기를 의미 layoutSubviews() 메소드는 UIView의 layout을 변경 즉, layoutSubviews() 메소드는 UIView의 위치와 크기를 재조정하는 메소드 layoutSubviews()는 재귀적으로 자식들의 layoutSubviews()도 재귀적으로 실행 layoutSubviews()가 실행되는 시점은 main run loop에 따라서 실행 UI를 건드리는 작업은 디바이스에 부담이 되는 작업이므로 내부적으로 UI 작업에 main run loop라는 방법을 통해 해결 Main Run Loop 개념 앱이 실행되면 iOS는 내부적으로 메인 스레드에서 main run loop를 실행 iO..
intrinsicContentSize intrinsicContentSize UILabel과 같은 UI에는 본질적인 크기와, 프레임 크기가 존재하는데 이 때 본질적인 크기를 의미 intrinsicContentSize를 가지고 있는 UI와 가지고 있지 않는것들로 분류 ex) UILabel은 intrinsicContentSize가 자동으로 불리는 형태 3초후에 text를 입력하고, 화면에 잘리지 않고 길이만큼 content가 표시되는지 테스트 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { self.nameLabel.text..