Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[정주] Pillyze - 내건강 화면 구현 (내부 콘텐츠 제외) #3

Merged
merged 8 commits into from
Jul 14, 2024

Conversation

jeongju9216
Copy link
Contributor

@jeongju9216 jeongju9216 commented Jul 13, 2024

📓 Overview

  • 내건강 화면을 구현했습니다.
    • 내부 콘텐츠를 제외한 외부 틀을 구현했습니다.
  • 캘린더는 1 ~ 31, 요일은 월 ~ 일을 단순 표시했습니다.

🤔 고민 내용

UIKit이 SwiftUI View 사용하기

  • UIKit의 NavigationController를 사용하기 위해 UIKit이 SwiftUI의 View를 사용하는 것으로 결정했습니다.
  • SwiftUI에서 VC를 생성해야 하나? UIKit에서 View를 생성해야 하나? 고민이 있었습니다.
  • 아래와 같은 이유로 UIKit에서 SwiftUI View를 사용하도록 결정했습니다.
    • NavigationController는 UIKit에서 사용할 수 있음
    • NavigationController는 도착지 VC를 알아야 함
    • 따라서 SwiftUI View를 ViewController로 변환, 관리해야함
  • 현재 MyHealthViewController에서 MyHealthViewUIHostingViewController에 전달하여 VC로 사용하고 있습니다.

빈 여백을 가진 View를 어떻게 구현할 수 있을까?

  • 내건강 화면에는 상단에 Round를 가진 공간이 표시됨
  • UIKit이었다면 오토 레이아웃으로 쉽게 구현할 수 있었을 것
  • SwiftUI에서는 "~까지 꽉 채운다"라는 개념이 없음
    • iOS 17부터 containerRelativeFrame가 생겼지만 최소지원버전이 iOS 15라 사용 못함
  • 따라서 View 구조를 변형하여 빈 여백을 구현함
    • to-be: 전체 화면의 background를 primary-normal 색으로 설정, Header의 background를 설정하지 않음
    • to-be: 전체 화면의 background를 primary-placeholder 색으로 설정, Header의 background를 primary-normal 색상으로 설정함
  • 이제 내부 콘텐츠가 생긴다면 자연스럽게 View가 추가되고, 콘텐츠가 없다면 primary-placeholder 색의 여백이 표시된다.

📸 Screenshot

@jeongju9216 jeongju9216 added the 고민 내용 고민 내용을 작성하는 경우 사용하세요. label Jul 13, 2024
@jeongju9216 jeongju9216 added this to the Pillyze milestone Jul 13, 2024
@jeongju9216 jeongju9216 merged commit 8ac8034 into main Jul 14, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
고민 내용 고민 내용을 작성하는 경우 사용하세요.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant