-
Notifications
You must be signed in to change notification settings - Fork 2
Boost‐SwiftUI‐2024.11.26(화).md
유정주 JeongJu Yu edited this page Dec 14, 2024
·
2 revisions
Boost-SwiftUI-2024.11.26(화).txt
- 2024.11.26 화 오후 9:01 ・ 73분 46초
- 권승용 김대황 김인환 유정주 윤동주 이창준
- 클로버노트를 이용해 회의 내용을 기록하고, Claude를 이용해 요약, 편집했습니다.
- 작은 단위의 View로 분리하여 구성하는 것이 권장됨
- "작은 뷰를 구축해서 큰 뷰를 만든다"는 원칙 강조
- 단일 책임을 가진 작은 View로 구성하는 것이 좋음
- 구조체로 View를 분리할 때 주의사항
- iOS 15에서 TabView 사용 시 하위 View를 구조체로 분리하면 렌더링 문제 발생
- TabView의 tabStyle을 .page로 설정 시 init과 body는 호출되지만 화면에 그려지지 않음
- 해결방법: 구조체 대신 ViewModifier로 구현
- Mental Model 이해
- Modifier가 기존 View를 수정하는 것이 아님
- 새로운 View를 계속 생성하는 형태로 동작
- UIKit과 SwiftUI의 차이점
- UIKit: View 인스턴스를 직접 조작
- SwiftUI: View를 표현하기 위한 선언적 방식 사용
- SwiftUI의 View Hierarchy 확인의 한계
- UIKit에 비해 계층 구조 파악이 어려움
- 실제 뷰 구조와 디버깅 도구에서 보이는 구조가 다를 수 있음
- Metal/Shader 관련 이슈
- Metal 사용 시 View Hierarchy에서 제대로 표시되지 않는 문제
- Gradient 등 특정 효과 사용 시 디버깅이 어려울 수 있음
- View 계층 구조 최적화
- SwiftUI는 내부적으로 View 계층을 효율적으로 관리
- 개발자가 View를 많이 중첩해도 성능에 큰 영향 없음
- 메모리 관리
- SwiftUI가 자동으로 처리하는 부분이 많음
- UIKit보다 메모리 관리가 수월함
- 레이더 차트 구현 사례
- Shape 프로토콜 활용
- 동적 각형 계산 및 그리기
- 코너 라운딩 처리를 위한 벡터 계산
- 애니메이션 구현
- Animatable 프로토콜 활용
- 벡터 값 합성을 위한 Accelerate 프레임워크 사용
- VDSP 활용한 벡터 계산
- 네이티브 블러 효과의 한계
- SwiftUI의 기본 블러가 원하는 효과를 내지 못함
- 틴트 색상 문제로 인한 제약
- UIVisualEffectView 활용
- UIKit 컴포넌트 활용
- 필터 커스터마이징
- 가우시안 블러 구현
- UI 변경으로 인한 코드 폐기 사례
- 3일간 개발한 복잡한 차트 기능이 디자인 변경으로 폐기
- API 구현까지 완료된 상태에서 변경
- 재사용 가능한 컴포넌트는 보존
- SwiftUI와 Jetpack Compose 간의 코드 변환
- 선언형 UI 특성으로 인해 변환이 비교적 수월
- AI 도구를 활용한 코드 변환 가능
권승용 | 김대황 | 김인환 | 유정주 | 윤동주 | 이준복 | 이창준 | 홍승현 |
---|---|---|---|---|---|---|---|
ericKwon95 | qwerty3345 | loinsir | jeongju9216 | yoondj98 | junbok97 | SwiftyJunnos | WhiteHyun |