Drawing Cycle 관련 질문
72
投稿した質問数 3
안녕하세요, 강의 늘 잘 듣고 있습니다.
다름이 아니라, 뷰의 레이아웃을 잡아주는 과정에서 Drawing Cycle & 생성자 중 어디에 무엇을 작성해야 할지 헷갈려서 개인적으로 알아보던 중 궁금증이 생겨서 질문드립니다!
Drawing Cycle에 맞추어 뷰 업데이트하는 몇가지 예시
init(생성자)
subview 추가 (addSubview, stackView.addArrangedSubview)
제약 생성 + NSLayoutConstraint.activate (1회)
정적인 스타일(폰트, 색, axis, spacing 등)
즉, ‘한번 바뀌고 안 바뀔 것들’을 세팅해 준다.
updateConstraints()
상태에 따라 레이아웃이 바뀔 때 (expanded/collapsed, 이미지 크기 토글, padding 변경, 어떤 뷰 숨김에 따른 높이 변경)
constraint를 프로퍼티로 보관해두고
updateConstraints()에서 constant 바꾸거나 isActive 토글
필요 시 setNeedsUpdateConstraints() 호출
즉, ‘동적으로 바뀔 레이아웃’을 세팅해 준다.
layoutSubviews()
frame이 계산된 뒤의 후처리를 수행해줘야 할 때 (그림자 경로, cornerRadius 등 frame의 정보가 필요한 것들)
먼저 제가 정리한 바는 다음과 같습니다.
그런데, constraint를 updateConstraint() Drawing Cycle 내에서 지정해주는 강의 내 파트와 살짝 충돌이 발생하더라구요.
GPT 및 개인적인 공부를 통해 확인했을 때에는,
'constraint가 여러번 중복 적용될 수도 있으므로, 동적으로 constraint를 변경할 상황이 아니라면 생성자에서 초기화해주는 것이 좋다'라고 이해했습니다.
동적으로 변경되지 않는 기본 레이아웃 제약은 생성자에서 설정하는 것이 원칙적으로 더 적절한지,
아니면 updateConstraints()에서 설정하는 방식도 올바른 패턴인지 궁금합니다.
어떤 방식이 더 권장되는지 명확히 알고 싶습니다..!
回答 1
1
네 안녕하세요 taehun0933 님.
아마 강의 내에서 제가 여러가지를 이론적으로 설명을 드리면서 다양한 가능성에 대한 설명을 먼저 드려서.. 조금 헷갈리실 수도 있을 것 같은데 (기본적으로 동적으로 변하는 상황이 드물기 때문에) 생성자에서 하시면 된다고 보시면 됩니다. :)
==> '동적으로 constraint를 변경할 상황이 아니라면 생성자에서 초기화해주는 것이 좋다'라고 정확하게 이해하셨습니다.
감사합니다. :)
수강연장부탁드려도될까요..
0
42
2
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
0
95
2
델리게이트 패턴 관련 질문
0
66
2
수강 기간 연장 부탁드릴 수 있을까요?
0
61
1
활용 앱 57강 질문입니다.
0
55
1
활용 앱 30강 에러 질문입니다
0
64
2
기초앱 17강 Contraints 설정 질문입니다.
0
67
2
기초 앱 4강 Type Any -> UIButton
0
66
2
34강 유용한 앱 추천에 나오는 UIKitViewer에 대해서 질문이 있습니다
0
78
1
깃에 코드는 올려도 된다고 하셨는데
0
109
1
수강기간 연장신청 드려도 될까요?
0
82
1
수강 기간 연장 부탁드려도 될까요?
0
120
2
수강 기간 연장 신청 요청드립니다.
0
131
2
playground에서 상단 실행?아이콘 회전 관련하여...
0
136
1
활용앱53강에서 질문있습니다.
0
164
2
Project 명칭 변경방법이 궁금합니다.
0
140
1
override 에 대해서 궁금한 것이 있습니다.
0
125
2
섹션8] 코드 리팩토링 문의
0
99
1
xcode 에서 ios 버전 선택 및 시뮬레이터 관련 질문
0
566
2
수강 기간 연장 부탁드려도 될까요?
0
130
2
뷰모델의 상태변화 와 didSet
0
98
1
@Sendable 키워드
0
94
1
클로저
0
105
2
ThreadSafe하지 않을때 해경 방법
0
108
1

