Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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를 이용해 요약, 편집했습니다.

SwiftUI View 구조와 최적화

View 컴포넌트 구성 전략

  • 작은 단위의 View로 분리하여 구성하는 것이 권장됨
    • "작은 뷰를 구축해서 큰 뷰를 만든다"는 원칙 강조
    • 단일 책임을 가진 작은 View로 구성하는 것이 좋음
  • 구조체로 View를 분리할 때 주의사항
    • iOS 15에서 TabView 사용 시 하위 View를 구조체로 분리하면 렌더링 문제 발생
    • TabView의 tabStyle을 .page로 설정 시 init과 body는 호출되지만 화면에 그려지지 않음
    • 해결방법: 구조체 대신 ViewModifier로 구현

SwiftUI의 View 렌더링 특성

  • Mental Model 이해
    • Modifier가 기존 View를 수정하는 것이 아님
    • 새로운 View를 계속 생성하는 형태로 동작
  • UIKit과 SwiftUI의 차이점
    • UIKit: View 인스턴스를 직접 조작
    • SwiftUI: View를 표현하기 위한 선언적 방식 사용

디버깅과 개발 도구

View Hierarchy 디버깅

  • SwiftUI의 View Hierarchy 확인의 한계
    • UIKit에 비해 계층 구조 파악이 어려움
    • 실제 뷰 구조와 디버깅 도구에서 보이는 구조가 다를 수 있음
  • Metal/Shader 관련 이슈
    • Metal 사용 시 View Hierarchy에서 제대로 표시되지 않는 문제
    • Gradient 등 특정 효과 사용 시 디버깅이 어려울 수 있음

성능 최적화

  • View 계층 구조 최적화
    • SwiftUI는 내부적으로 View 계층을 효율적으로 관리
    • 개발자가 View를 많이 중첩해도 성능에 큰 영향 없음
  • 메모리 관리
    • SwiftUI가 자동으로 처리하는 부분이 많음
    • UIKit보다 메모리 관리가 수월함

고급 UI 구현 사례

커스텀 차트 구현

  • 레이더 차트 구현 사례
    • Shape 프로토콜 활용
    • 동적 각형 계산 및 그리기
    • 코너 라운딩 처리를 위한 벡터 계산
  • 애니메이션 구현
    • Animatable 프로토콜 활용
    • 벡터 값 합성을 위한 Accelerate 프레임워크 사용
    • VDSP 활용한 벡터 계산

블러 효과 구현

  • 네이티브 블러 효과의 한계
    • SwiftUI의 기본 블러가 원하는 효과를 내지 못함
    • 틴트 색상 문제로 인한 제약
  • UIVisualEffectView 활용
    • UIKit 컴포넌트 활용
    • 필터 커스터마이징
    • 가우시안 블러 구현

개발 프로세스와 협업

프로젝트 관리

  • UI 변경으로 인한 코드 폐기 사례
    • 3일간 개발한 복잡한 차트 기능이 디자인 변경으로 폐기
    • API 구현까지 완료된 상태에서 변경
    • 재사용 가능한 컴포넌트는 보존

크로스 플랫폼 개발

  • SwiftUI와 Jetpack Compose 간의 코드 변환
    • 선언형 UI 특성으로 인해 변환이 비교적 수월
    • AI 도구를 활용한 코드 변환 가능

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /