Skip to content

Comments

Style/#66 마이페이지 #71

Merged
y-eonee merged 3 commits intodevelopfrom
style/#66-마이페이지
Jan 16, 2026

Hidden character warning

The head ref may contain hidden characters: "style/#66-\ub9c8\uc774\ud398\uc774\uc9c0"
Merged

Style/#66 마이페이지 #71
y-eonee merged 3 commits intodevelopfrom
style/#66-마이페이지

Conversation

@y-eonee
Copy link
Contributor

@y-eonee y-eonee commented Jan 16, 2026

🔗 연결된 이슈

📄 작업 내용

  • 마이페이지 UI 구현했습니다
구현 내용 IPhone 16 pro IPhone 13 mini
GIF

@y-eonee y-eonee requested a review from a team January 16, 2026 07:00
@y-eonee y-eonee self-assigned this Jan 16, 2026
@y-eonee y-eonee requested review from soseoyo12, sum130 and wotjs020708 and removed request for a team January 16, 2026 07:00
@y-eonee y-eonee linked an issue Jan 16, 2026 that may be closed by this pull request
1 task
@coderabbitai
Copy link

coderabbitai bot commented Jan 16, 2026

📝 Walkthrough

Walkthrough

마이페이지 관련 UI 구성(프로필 헤더·준비 화면)과 아이콘 자산을 추가하고, Info.plist 및 Xcode 빌드 설정에서 UIUserInterfaceStyle과 배포 타겟, UIDesignRequiresCompatibility 값을 업데이트했습니다. 작은 컴포넌트 시그니처도 한 곳 수정되었습니다.

Changes

Cohort / File(s) 변경 요약
빌드 설정
Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj
Debug/Release XCBuildConfiguration에 INFOPLIST_KEY_UIUserInterfaceStyle = Light 추가 및 IPHONEOS_DEPLOYMENT_TARGET16.6에서 17.6으로 상향
Info.plist 설정
Cherrish-iOS/Cherrish-iOS/Info.plist
UIDesignRequiresCompatibility 값을 truefalse로 변경
마이페이지 아이콘 리소스
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/*
mypage_icon 에셋셋 추가: Contents.json, illustration_my.imageset(1x/2x/3x) 추가 및 illustration_profile.imageset/Contents.json에서 파일명 변경(체리.svgillustration_profile.svg)
마이페이지 뷰
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift
기존 ZStack 플레이스홀더를 VStack 기반 구조로 대체: headerView, prepareView, 구분선 등 구성 및 SwiftUI Preview 추가
UI 컴포넌트 수정
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift
TreatmentCheckBoxView 이니셜라이저의 후행 쉼표 제거(시그니처 미세 조정)

Sequence Diagram(s)

(해당 변경들은 단일 뷰·자산·설정 수정 위주로, 복합적 컴포넌트 상호작용 흐름 시각화 조건을 충족하지 않아 다이어그램을 생략합니다.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • wotjs020708
  • soseoyo12
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning 일부 변경 사항(배포 대상 업데이트, UIDesignRequiresCompatibility 변경)이 마이페이지 UI 구현과 직접 관련이 없습니다. 배포 대상 버전 및 UI 호환성 변경 사항을 별도의 PR로 분리하거나 관련 이슈와 연결해주세요.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 마이페이지 UI 구현이라는 변경 사항과 직접 관련이 있으며 주요 변경 사항을 명확히 나타냅니다.
Description check ✅ Passed 설명이 마이페이지 UI 구현과 관련되어 있으며 변경 사항의 일부를 설명하고 있습니다.
Linked Issues check ✅ Passed 연결된 이슈 #66은 마이페이지 UI 구현을 요구하며, PR의 변경 사항들이 이를 충족하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch style/#66-마이페이지


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c619a11 and 7be0ac1.

📒 Files selected for processing (1)
  • Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj
🔇 Additional comments (2)
Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj (2)

324-325: Debug 설정과 일관성 유지 확인됨

Release 설정이 Debug 설정과 동일하게 UIUserInterfaceStyle = LightIPHONEOS_DEPLOYMENT_TARGET = 17.6으로 설정되어 일관성이 유지됩니다.

위 Debug 설정 리뷰에서 언급한 프로젝트 레벨(18.2)과의 배포 타겟 불일치 문제는 동일하게 적용됩니다.


288-289: 타겟 배포 타겟과 프로젝트 레벨 설정 간 불일치 정정 필요

프로젝트 레벨 설정(lines 202, 259)에서는 IPHONEOS_DEPLOYMENT_TARGET = 18.2인 반면, 타겟 레벨 설정(lines 289, 325)에서는 17.6으로 설정되어 있습니다. 타겟 레벨 설정이 우선 적용되므로 실제 배포 타겟은 17.6이 되며, 일관성을 위해 프로젝트 레벨 설정과 맞춰야 합니다.

또한 INFOPLIST_KEY_UIUserInterfaceStyle = Light가 추가되어 다크 모드가 비활성화됩니다. 디자인 의도에 맞는지 확인 바랍니다.

Likely an incorrect or invalid review comment.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`:
- Around line 25-36: The header currently hardcodes the user name and D+ value
inside the headerView (TypographyText calls); refactor headerView to read those
values from the view's data source (e.g., inject a MyPageViewModel or accept
parameters like userName: String and daysSinceStart: Int) and replace the
hardcoded strings ("안녕하세요, 김채채 님" and "관리 시작 D + 13") with computed values
(e.g., "안녕하세요, \(userName) 님" and "관리 시작 D + \(daysSinceStart)"). Update any
other hardcoded usages around the same area (noted also at the block around
lines 69–71) and refresh the SwiftUI preview to supply sample userName and
daysSinceStart so the preview renders correctly. Ensure bindings/observed object
property names (e.g., MyPageViewModel, userName, daysSinceStart) are referenced
consistently where used.
- Around line 46-55: The decorative illustration Image(.illustrationMy) should
be hidden from VoiceOver and the hard-coded Korean message in TypographyText
should be localized; update prepareView by adding .accessibilityHidden(true) (or
.accessibilityHidden(true) modifier) to Image(.illustrationMy) so it’s ignored
by assistive tech, and replace the literal "앗! 아직 준비 중이에요." with a localized
string lookup (e.g., use LocalizedStringKey or NSLocalizedString with a key like
"mypage_preparing_message") in TypographyText and add the corresponding entry to
Localizable.strings.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b13a523 and c619a11.

⛔ Files ignored due to path filters (5)
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/home_icon/cherrish_character.imageset/체리.svg is excluded by !**/*.svg
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my.png is excluded by !**/*.png
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my@2x.png is excluded by !**/*.png
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my@3x.png is excluded by !**/*.png
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/illustration_profile.svg is excluded by !**/*.svg
📒 Files selected for processing (7)
  • Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Info.plist
  • Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift
  • Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift
🧰 Additional context used
🧬 Code graph analysis (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/View+Color.swift (4)
  • gray1000 (49-51)
  • gray800 (41-43)
  • gray500 (29-31)
  • gray100 (13-15)
🔇 Additional comments (8)
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/Contents.json (1)

4-4: 파일명 변경 적절합니다.

한글 파일명(체리.svg)에서 영문 파일명(illustration_profile.svg)으로 변경한 것은 잠재적인 인코딩 문제를 방지하고 에셋 네이밍 일관성을 높이는 좋은 변경입니다.

Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift (1)

103-116: LGTM!

이니셜라이저의 마지막 파라미터에서 불필요한 후행 콤마를 제거한 스타일 수정입니다. 코드 동작에 영향 없습니다.

Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj (1)

288-288: 다크 모드 비활성화 설정 확인

Debug와 Release 두 설정 모두에 UIUserInterfaceStyle = Light가 일관되게 적용되었습니다. 커밋 메시지("다크모드 끄기")와 일치하는 의도적인 변경으로 보입니다.

향후 다크 모드 지원 계획이 있다면, 앱 전체 스타일 대응이 필요할 수 있으니 참고 바랍니다.

Also applies to: 324-324

Cherrish-iOS/Cherrish-iOS/Info.plist (1)

12-13: UIDesignRequiresCompatibility 설정 변경

UIDesignRequiresCompatibilityfalse로 변경하여 최신 iOS 디자인 기능을 활용할 수 있게 됩니다. 배포 타겟(iOS 16.6)을 고려했을 때 적절한 설정입니다.

다양한 iOS 버전(16.6~18.x)에서 UI가 의도대로 렌더링되는지 실기기 테스트를 권장합니다.

Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/Contents.json (1)

1-23: 에셋 카탈로그 구성 완료

PNG 파일을 1x, 2x, 3x 스케일로 올바르게 구성했습니다.

참고: illustration_profile은 SVG를 사용하고 이 에셋은 PNG를 사용하고 있습니다. 디자인 소스 형식에 따른 것이라면 괜찮지만, 향후 에셋 관리 일관성을 위해 가능하다면 포맷 통일을 고려해 보세요.

Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/Contents.json (1)

1-6: 표준 asset catalog 메타데이터 추가 확인

기본 info 메타데이터만 포함되어 있어 문제 없어 보입니다.

Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift (2)

12-20: 레이아웃 구성 깔끔합니다

헤더/구분선/콘텐츠의 구조가 명확해서 유지보수성이 좋아 보입니다.


62-65: 구분선 컴포넌트 사용 OK

단순하고 재사용 가능한 형태라 좋습니다.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines +25 to +36
private var headerView: some View {
HStack (spacing: 14.adjustedW) {
Image(.illustrationProfile)
.resizable()
.frame(width: 48.adjustedW, height: 48.adjustedH)

VStack(alignment: .leading, spacing: 0){
TypographyText("안녕하세요, 김채채 님", style: .title1_sb_18, color: .gray1000)
.frame(height: 27.adjustedH)

TypographyText("관리 시작 D + 13", style: .body1_m_14, color: .gray800)
.frame(height: 20.adjustedH)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

사용자 정보 하드코딩 제거 필요

실사용 화면에서 사용자명이 고정으로 표시되고 D+ 값도 고정됩니다. 뷰 모델/입력 파라미터로 전달받도록 변경해 주세요. 프리뷰도 함께 갱신이 필요합니다.

🛠️ 개선 예시
-struct MyPageView: View {
+struct MyPageView: View {
+    let userDisplayName: String
+    let daysSinceStart: Int
     var body: some View {
         VStack {
             Spacer()
                 .frame(height: 52.adjustedH)
             headerView
             grayEmptyBar
             prepareView
                 .padding(.horizontal, 35)
             grayEmptyBar
         }
     }
 }
 
 extension MyPageView {
     private var headerView: some View {
         HStack (spacing: 14.adjustedW) {
             Image(.illustrationProfile)
                 .resizable()
                 .frame(width: 48.adjustedW, height: 48.adjustedH)
             
             VStack(alignment: .leading, spacing: 0){
-                TypographyText("안녕하세요, 김채채 님", style: .title1_sb_18, color: .gray1000)
+                TypographyText("안녕하세요, \(userDisplayName) 님", style: .title1_sb_18, color: .gray1000)
                     .frame(height: 27.adjustedH)
                 
-                TypographyText("관리 시작 D + 13", style: .body1_m_14, color: .gray800)
+                TypographyText("관리 시작 D + \(daysSinceStart)", style: .body1_m_14, color: .gray800)
                     .frame(height: 20.adjustedH)
             }
             
             Spacer()
         }
         .frame(maxWidth: .infinity)
         .padding(.leading, 24.adjustedW)
     }
 }
 
 `#Preview`  {
-    MyPageView()
+    MyPageView(userDisplayName: "김채채", daysSinceStart: 13)
 }

Also applies to: 69-71

🤖 Prompt for AI Agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`
around lines 25 - 36, The header currently hardcodes the user name and D+ value
inside the headerView (TypographyText calls); refactor headerView to read those
values from the view's data source (e.g., inject a MyPageViewModel or accept
parameters like userName: String and daysSinceStart: Int) and replace the
hardcoded strings ("안녕하세요, 김채채 님" and "관리 시작 D + 13") with computed values
(e.g., "안녕하세요, \(userName) 님" and "관리 시작 D + \(daysSinceStart)"). Update any
other hardcoded usages around the same area (noted also at the block around
lines 69–71) and refresh the SwiftUI preview to supply sample userName and
daysSinceStart so the preview renders correctly. Ensure bindings/observed object
property names (e.g., MyPageViewModel, userName, daysSinceStart) are referenced
consistently where used.

Comment on lines +46 to +55
private var prepareView: some View {
VStack(alignment: .center) {
Spacer()
.frame(height: 100.adjustedH)

Image(.illustrationMy)
.resizable()
.frame(width: 308.adjustedW, height: 250.adjustedH)

TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

장식 이미지 접근성 처리 + 문구 로컬라이징 권장

장식용 일러스트는 VoiceOver 노이즈를 줄이기 위해 숨기는 편이 좋고, 안내 문구는 로컬라이징 대상으로 분리하는 것이 안전합니다.

🔧 예시
-            Image(.illustrationMy)
+            Image(.illustrationMy)
                 .resizable()
                 .frame(width: 308.adjustedW, height: 250.adjustedH)
+                .accessibilityHidden(true)
             
-            TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500)
+            TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500) // 로컬라이징 분리 권장
🤖 Prompt for AI Agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`
around lines 46 - 55, The decorative illustration Image(.illustrationMy) should
be hidden from VoiceOver and the hard-coded Korean message in TypographyText
should be localized; update prepareView by adding .accessibilityHidden(true) (or
.accessibilityHidden(true) modifier) to Image(.illustrationMy) so it’s ignored
by assistive tech, and replace the literal "앗! 아직 준비 중이에요." with a localized
string lookup (e.g., use LocalizedStringKey or NSLocalizedString with a key like
"mypage_preparing_message") in TypographyText and add the corresponding entry to
Localizable.strings.

Copy link
Contributor

@sum130 sum130 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔합니다!! 빠르게 구현하시느라 고생하셨습니당ㅎㅎ

KakaoTalk_Photo_2026-01-09-23-22-17 004

Copy link
Contributor

@wotjs020708 wotjs020708 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확실히 빠르군요 고생하셨습니다!

Copy link
Contributor

@soseoyo12 soseoyo12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~~~ 어푸푸푸푸푸ㅜ
image

@y-eonee y-eonee merged commit 894e048 into develop Jan 16, 2026
1 check passed
@y-eonee y-eonee deleted the style/#66-마이페이지 branch January 16, 2026 19:19
Kimgyuilli pushed a commit that referenced this pull request Jan 21, 2026
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.

[Style] 마이페이지

4 participants