Skip to content

Comments

Style/#74 스플래시 구현#80

Merged
y-eonee merged 2 commits intodevelopfrom
style/#74-스플래시
Jan 18, 2026

Hidden character warning

The head ref may contain hidden characters: "style/#74-\uc2a4\ud50c\ub798\uc2dc"
Merged

Style/#74 스플래시 구현#80
y-eonee merged 2 commits intodevelopfrom
style/#74-스플래시

Conversation

@y-eonee
Copy link
Contributor

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

🔗 연결된 이슈

📄 작업 내용

  • 스플래시 만들었어요
구현 내용 IPhone 16 pro IPhone 13 mini
GIF

@y-eonee y-eonee requested a review from a team January 16, 2026 16:49
@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 16:49
@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

스플래시 화면 기능을 추가합니다: 그래디언트 색상 및 앱 아이콘 자산을 추가하고, AppState에 splash 상태를 도입해 앱 시작 시 SplashView를 표시하고 3초 후 온보딩으로 전환하도록 합니다.

Changes

Cohort / File(s) 변경 사항 요약
스플래시 그래디언트 색상 자산
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_1.colorset/Contents.json, Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_2.colorset/Contents.json
두 개의 색상 세트 추가(각각 유니버설 및 다크 모드 변형 포함). sRGB 색공간, 알파 1.0, 지정된 RGB 값 포함.
스플래시 자산 메타데이터
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/Contents.json
스플래시 자산 그룹용 Contents.json 추가 (author: "xcode", version: 1).
스플래시 앱 아이콘
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/Contents.json
스플래시 로고 이미지 정의 추가(1x, 2x, 3x 스케일, 파일명 참조).
앱 코디네이터 상태 관리
Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinator.swift
AppState 열거형에 case splash 추가 및 초기 appState 기본값을 .splash로 변경.
앱 코디네이터 뷰 라우팅
Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinatorView.swift
appState switch에 .splash 케이스 추가하여 SplashView 렌더링.
스플래시 뷰 구현
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift
전체화면 그라디언트 배경과 앱 아이콘을 표시하는 SplashView 추가. onAppear에서 3초 후 navigationToOnboarding() 호출.
마이너 수정
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift
TreatmentCheckBoxView 초기화 인자 목록의 불필요한 쉼표 제거(형식 수정).

Sequence Diagram

sequenceDiagram
    participant App as App Launch
    participant AC as AppCoordinator
    participant ACV as AppCoordinatorView
    participant SV as SplashView
    participant ON as OnboardingView

    App->>AC: 초기화 (appState = .splash)
    AC->>ACV: appState 발행
    ACV->>SV: .splash로 SplashView 렌더링
    SV->>SV: onAppear → 3초 타이머 시작
    SV->>AC: 3초 후 navigationToOnboarding()
    AC->>AC: appState = .onboarding 설정
    AC->>ACV: appState 발행
    ACV->>ON: OnboardingView 렌더링
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • sum130
  • soseoyo12
  • wotjs020708
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경 사항의 핵심을 명확하게 설명합니다. 스플래시 화면 구현이라는 주요 변경 사항을 잘 반영합니다.
Description check ✅ Passed PR 설명이 스플래시 구현과 관련된 작업 내용을 포함하며, 연결된 이슈 #74를 명시합니다. 구현 결과를 시각적으로 보여주는 GIF도 포함되어 있습니다.
Linked Issues check ✅ Passed PR의 변경 사항들이 이슈 #74의 스플래시 화면 구현 요구사항을 충족합니다. 스플래시 뷰, 색상 자산, 앱 아이콘, 앱 코디네이터 수정 등이 모두 스플래시 구현에 필요한 요소들입니다.
Out of Scope Changes check ✅ Passed TreatmentRowView의 마이너한 포맷팅 수정을 제외하고는 모든 변경 사항이 스플래시 구현과 직접적으로 관련되어 있습니다.

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch style/#74-스플래시


📜 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 2e6125c and 537f9a2.

📒 Files selected for processing (2)
  • Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift
  • Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift
🧰 Additional context used
🧬 Code graph analysis (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift (2)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/View+Shadow.swift (1)
  • body (9-17)
Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinator.swift (1)
  • navigationToOnboarding (26-29)
🔇 Additional comments (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift (1)

108-108: 코드 스타일 개선 확인 완료

마지막 파라미터 뒤의 trailing comma를 제거한 것은 올바른 스타일 개선입니다.

다만, 이 파일(TreatmentRowView.swift)은 스플래시 화면 구현이라는 PR 목표와 무관해 보입니다. 이 변경사항이 의도적으로 포함된 것인지, 아니면 IDE의 자동 포맷팅 결과인지 확인이 필요합니다.

혹시 스플래시 화면 관련 파일들(SplashView, AppState, AppCoordinator 등)이 리뷰 대상에서 누락된 것은 아닌지 확인해주세요.

✏️ 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: 1

🤖 Fix all issues with AI agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift`:
- Around line 26-30: Replace the DispatchQueue-based delay in SplashView's
onAppear with a Swift concurrency Task tied to the view lifecycle so it cancels
when the view disappears: remove the DispatchQueue.main.asyncAfter block and use
a .task (or Task in onAppear tied to the view) that awaits Task.sleep for 3
seconds (3_000_000_000 nanoseconds) then calls
appCoordinator.navigationToOnboarding() on the MainActor; ensure you use
try/await and MainActor.run (or `@MainActor`) when invoking
appCoordinator.navigationToOnboarding to keep UI work on the main thread.
📜 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 2e6125c.

⛔ Files ignored due to path filters (3)
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/splash_logo.png is excluded by !**/*.png
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/splash_logo@2x.png is excluded by !**/*.png
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/splash_logo@3x.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_1.colorset/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_2.colorset/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/Contents.json
  • Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinator.swift
  • Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinatorView.swift
  • Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift
🧰 Additional context used
🧬 Code graph analysis (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift (2)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/View+Shadow.swift (1)
  • body (9-17)
Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinator.swift (1)
  • navigationToOnboarding (26-29)
🔇 Additional comments (7)
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/splash/appicon.imageset/Contents.json (1)

1-23: 구성 확인 완료

스플래시 아이콘 이미지셋의 스케일 정의와 메타데이터가 정상 구성입니다.

Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_2.colorset/Contents.json (1)

1-38: 색상 자산 정의 정상

라이트/다크 모드 정의와 메타데이터 구성이 표준 형식으로 잘 들어갔습니다.

Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinatorView.swift (1)

15-18: 스플래시 라우팅 추가 OK

새 앱 상태에 대해 SplashView로 분기되는 로직이 깔끔합니다.

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

1-5: 기본 에셋 카탈로그 메타데이터 정상

표준 형식대로 잘 추가되었습니다.

Cherrish-iOS/Cherrish-iOS/Assets.xcassets/Color/splash_gradient_1.colorset/Contents.json (1)

1-38: 그라디언트 색상 자산 추가 정상

라이트/다크 모드 대응 정의가 올바릅니다.

Cherrish-iOS/Cherrish-iOS/Presentation/Coordinator/AppCoordinator.swift (1)

11-19: LGTM!

AppState 열거형에 splash 케이스 추가와 초기 상태를 .splash로 변경한 것이 적절합니다. 스플래시 → 온보딩 플로우가 명확하게 구현되었습니다.

Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift (1)

13-25: LGTM!

ZStackLinearGradient를 활용한 스플래시 화면 UI 구성이 깔끔합니다. 그래디언트 스탑 위치(0.6, 1.0)도 적절하게 설정되어 있습니다.

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

Comment on lines +26 to +30
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
appCoordinator.navigationToOnboarding()
}
}
Copy link

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

뷰 생명주기 관리를 위해 Task 사용을 권장합니다.

DispatchQueue.main.asyncAfter는 뷰가 사라져도 취소되지 않습니다. 뷰가 일찍 해제될 경우 예기치 않은 동작이 발생할 수 있습니다. Task를 사용하면 뷰가 사라질 때 자동으로 취소됩니다.

♻️ 권장 수정안
-        .onAppear {
-            DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
-                appCoordinator.navigationToOnboarding()
-            }
-        }
+        .task {
+            try? await Task.sleep(nanoseconds: 3_000_000_000)
+            appCoordinator.navigationToOnboarding()
+        }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
appCoordinator.navigationToOnboarding()
}
}
.task {
try? await Task.sleep(nanoseconds: 3_000_000_000)
appCoordinator.navigationToOnboarding()
}
🤖 Prompt for AI Agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Onboarding/SplashView.swift`
around lines 26 - 30, Replace the DispatchQueue-based delay in SplashView's
onAppear with a Swift concurrency Task tied to the view lifecycle so it cancels
when the view disappears: remove the DispatchQueue.main.asyncAfter block and use
a .task (or Task in onAppear tied to the view) that awaits Task.sleep for 3
seconds (3_000_000_000 nanoseconds) then calls
appCoordinator.navigationToOnboarding() on the MainActor; ensure you use
try/await and MainActor.run (or `@MainActor`) when invoking
appCoordinator.navigationToOnboarding to keep UI work on the main thread.

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 수고하셨숨니당

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

@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-18 025

@y-eonee y-eonee merged commit 5cc43d9 into develop Jan 18, 2026
1 check passed
@y-eonee y-eonee deleted the style/#74-스플래시 branch January 18, 2026 12:52
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