-
Notifications
You must be signed in to change notification settings - Fork 3
Boost‐SwiftUI‐2024年07月16日(화)
junbok97 edited this page Jul 21, 2024
·
2 revisions
- 2024年07月16日 화 오후 9:01 ・ 81분 0초
- 권승용 유정주 홍승현 이준복 김대황
- 클로버노트를 이용해 회의 내용을 기록하고, GPT를 이용해 요약, 편집했습니다.
- Version 2
- SwiftUI와 UIKit의 장단점을 비교하고, TCA를 포함한 다양한 디자인 패턴과 UI 구현 문제를 해결하기 위한 논의를 진행함.
- Version 1
- SwiftUI를 사용한 UI 구현에서 빈 공간 처리, 뷰 최적화 및 구성 방법, 선언형 문법의 장단점을 중심으로 논의했다.
- SwiftUI와 UIKit의 장단점을 비교하며, SwiftUI의 장점과 단점을 논의함.
- UIKit으로 해결할 수 있는 문제들을 SwiftUI로 구현할 때의 어려움을 공유.
- SwiftUI의 프레임 처리와 스크롤 뷰에서의 빈 공간 처리 문제를 해결하는 방법을 고민함.
- TCA를 사용하는 것에 대해 논의, TCA를 SwiftUI와 UIKit에서 어떻게 사용할 수 있는지 검토.
- TCA와 관련된 참고 자료의 부족으로 인해 학습의 어려움을 공유함.
- TCA의 라이브러리 특성보다는 디자인 패턴으로 접근하는 방법을 제안.
- 뷰 모델과 뷰 컨트롤러의 역할을 구분하여 사용하려는 시도.
- 뷰 모델을 뷰 컨트롤러와 뷰에서 어떻게 분리할 것인지에 대해 논의.
- 회사 프로젝트에서 호스팅 뷰 컨트롤러를 사용해야 하는 이유와 그에 따른 구조 설계.
- 각 뷰마다 이벤트를 처리하는 문제에 대한 고민을 나눔.
- 퍼블리시드를 사용하여 뷰 모델과 뷰 간의 데이터 흐름을 설정하는 방법을 논의.
- 이벤트 처리의 딜레마와 이를 해결하기 위한 방법들에 대해 의견을 나눔.
- 개인 프로젝트와 회사 프로젝트에서 사용하는 기술과 라이브러리에 대해 공유.
- 회사 프로젝트에서 TCA를 사용하는 경험을 바탕으로 한 의견 교환.
- 개인 프로젝트에서 TCA를 사용하며 겪은 문제와 해결 방안에 대해 논의.
- UI를 구현하는 과정에서 발생하는 다양한 문제에 대해 논의.
- 프레임을 사용하여 UI 요소를 배치하는 방법과 그로 인한 문제 해결.
- 스크롤 뷰와 프레임 설정 시 발생하는 빈 공간 문제를 해결하는 방법을 공유.
- 공식 문서와 오픈 소스 자료를 활용한 학습 방법을 공유.
- 강의나 멘토링을 통해 학습할 수 있는 방법을 제안.
- 다양한 참고 자료와 학습 자료의 활용에 대해 논의.
- 캘린더 UI에서 빈 공간을 처리하는 문제를 논의했다.
- UIKit에서는 오토레이아웃으로 공간을 채울 수 있지만, SwiftUI에서는 뷰의 크기가 콘텐츠에 따라 변동되어 빈 공간이 생길 수 있다.
- ScrollView를 사용하면 의도하지 않은 스크롤이 발생할 수 있다.
- 이를 해결하기 위해 프레임 지정, 색상 저장 등 빈 공간을 채우는 방안을 토의했다.
- 상단에 round를 적용하고, 하단에 뷰를 추가하는 방법을 논의했다.
- 백그라운드 색상을 적용해 빈 공간을 채우는 방법을 시도했지만, 구현 결과가 만족스럽지 않았다.
- 뷰의 백그라운드 컬러를 회색으로 설정하고, 루트 뷰의 백그라운드 컬러를 회색으로 맞추는 방안을 선택했다.
- 뷰를 분리할 때 private 구조체로 정의하거나 @ViewBuilder를 사용하는 방법에 대해 논의했다.
- 구조체가 최적화에 더 유리하지만, @ViewBuilder는 별도의 프로퍼티 전달을 하지 않아도 된다.
- 구조체 분리와 @ViewBuilder의 애니메이션 차이가 있다.
- @ViewBuilder는 다른 뷰에서 재사용할 가능성이 없을 때 고려할 수 있다.
- SwiftUI와 UIKit의 장단점을 비교했다.
- SwiftUI는 선언형 문법으로 코드 양이 줄어들고, 직관적인 UI 설계가 가능하다.
- 일부 UI 구성 요소의 동작이 UIKit과 다르게 작동해 추가적인 고민이 필요하다.
- UIKit에서는 쉽게 해결할 수 있는 문제가 SwiftUI에서는 복잡해질 수 있다.
- 뷰 빌더를 사용하여 뷰를 최적화하고, 리스트 안에 여러 뷰를 효율적으로 배치하는 방법을 논의했다.
- 뷰 빌더를 사용하면 depth가 1인 구조로 작성할 수 있다. List의 재사용 최적화를 노릴 수 있다.
- 리스트 안에서 뷰 빌더를 사용해 배열 형태로 구성하는 것이 효과적이다.
- AnyView를 사용하면 뷰의 최적화가 저하될 수 있다. 따라서 AnyView 대신 @ViewBuilder를 사용해 최적화된 구조를 만드는 것이 좋다.
- 프로퍼티나 함수로 뷰를 구성할 때보다 구조체로 지정했을 때 최적화가 더 잘 이루어진다는 의견이 있다.