From 1f2743014811c10c4bce44852c39579ac482bcdb Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Wed, 19 Nov 2025 15:29:57 +0900 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20ScrollView=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EC=B2=9C=20=EC=BD=94=EC=9D=B8=20sheet?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=8F=B0=ED=8A=B8=20=ED=81=AC=EA=B8=B0?= =?UTF-8?q?=EA=B0=80=20=ED=81=B4=20=EB=95=8C,=20=EC=BB=A8=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EA=B0=80=20=ED=99=94=EB=A9=B4=EC=9D=84=20=EB=84=98?= =?UTF-8?q?=EC=96=B4=EA=B0=80=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dashboard/View/CoinCarouselView.swift | 77 ++++++++++--------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift b/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift index 1af5e0ce..6ec2f846 100644 --- a/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift +++ b/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift @@ -139,50 +139,53 @@ struct CoinCarouselView: View { wrappedCoins.removeAll() } .sheet(item: $selectedCoin) { coin in - VStack(spacing: 30) { - CoinInfoView(recommendCoin: coin) { - selectedCoin = nil - } - - VStack(alignment: .leading, spacing: 12) { - HStack(spacing: 8) { - Image(systemName: "sparkles") - .font(.ico16B) - .foregroundStyle(.iCoAccent) + ScrollView { + VStack(spacing: 30) { + CoinInfoView(recommendCoin: coin) { + selectedCoin = nil + } + + VStack(alignment: .leading, spacing: 12) { + HStack(spacing: 8) { + Image(systemName: "sparkles") + .font(.ico16B) + .foregroundStyle(.iCoAccent) + + Text("아이코가 추천하는 이유") + .font(.ico18B) + .foregroundStyle(.iCoLabel) + } + + Text(String.aiGeneratedContentNotice) + .font(.ico13) + .foregroundStyle(.iCoNeutral) + .lineSpacing(6) - Text("아이코가 추천하는 이유") - .font(.ico18B) + Text(coin.comment.byCharWrapping) + .font(.ico16) + .lineSpacing(6) .foregroundStyle(.iCoLabel) } + .fixedSize(horizontal: false, vertical: true) - Text(String.aiGeneratedContentNotice) - .font(.ico13) - .foregroundStyle(.iCoNeutral) - .lineSpacing(6) - - Text(coin.comment.byCharWrapping) - .font(.ico16) - .lineSpacing(6) - .foregroundStyle(.iCoLabel) - } - .fixedSize(horizontal: false, vertical: true) - - RoundedRectangleFillButton(title: "더 자세히 보러가기", imageName: "info.circle", isHighlighted: .constant(true)) { - selectedCoin = nil - showDetailCoin = coin + RoundedRectangleFillButton(title: "더 자세히 보러가기", imageName: "info.circle", isHighlighted: .constant(true)) { + selectedCoin = nil + showDetailCoin = coin + } } + .padding(20) + .background(.background) + .background( + GeometryReader { geo in + Color.clear + .onAppear { + measuredHeight = geo.size.height + } + } + ) } - .padding(20) - .background(.background) - .background( - GeometryReader { geo in - Color.clear - .onAppear { - measuredHeight = geo.size.height - } - } - ) .presentationDetents([detent]) + } .onChange(of: selectedCoin) { _, newValue in updateTimerState() From ba7fb91b1838ce8c33d9dae78b8c7564d93298c4 Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Thu, 20 Nov 2025 13:33:20 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=EC=BB=A4=EB=AE=A4=EB=8B=88=ED=8B=B0?= =?UTF-8?q?=20=EB=B6=84=EC=9C=84=EA=B8=B0=20=EB=94=94=EC=BD=94=EB=94=A9=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=EB=A1=9C=20=ED=94=84=EB=A1=AC=ED=94=84?= =?UTF-8?q?=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIProject/iCo/Domain/Model/Common/Prompt.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AIProject/iCo/Domain/Model/Common/Prompt.swift b/AIProject/iCo/Domain/Model/Common/Prompt.swift index acdd698a..ba88f9d1 100644 --- a/AIProject/iCo/Domain/Model/Common/Prompt.swift +++ b/AIProject/iCo/Domain/Model/Common/Prompt.swift @@ -85,7 +85,7 @@ enum Prompt { let summary: String } - 커뮤니티 분위기(호재, 악재, 중립)와 그렇게 평가한 이유를 한글로 200자 이상으로 요약해 위 형식으로 작성해서 JSON으로 제공 (답변은 한글, 마크다운 금지, 출처 제외) + 커뮤니티 분위기(호재, 악재, 중립)와 그렇게 평가한 이유를 한글로 200자 이상으로 요약해 위 InsightDTO로 디코딩 할 수 있도록 작성해서 JSON으로 제공 (답변은 한글, 종결 어미는 '-ㅂ니다', 마크다운 금지, 출처 제외) """ case .generateBookmarkBriefing(let importance, let bookmarks): """ From 34830e0a5c11b92f2274447a84ac0938014ef207 Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Thu, 20 Nov 2025 15:03:07 +0900 Subject: [PATCH 3/5] =?UTF-8?q?design:=20=EB=86=92=EC=9D=B4=EA=B0=80=20?= =?UTF-8?q?=EB=8B=A4=EB=A5=B8=20=EA=B2=BD=EC=9A=B0=20=EC=83=81=EB=8B=A8=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift b/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift index 49c15f68..24b15bf8 100644 --- a/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift +++ b/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift @@ -34,7 +34,7 @@ struct AIBriefingView: View { VStack(spacing: 16) { if isPadLayout { - HStack(spacing: 16) { + HStack(alignment: .top, spacing: 16) { briefingView TopCoinListView() } From f8d8bc1a46aa97179483d5abeb7790ffc405560e Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Thu, 20 Nov 2025 15:04:20 +0900 Subject: [PATCH 4/5] =?UTF-8?q?design:=20=ED=8F=B0=ED=8A=B8=20=ED=81=AC?= =?UTF-8?q?=EA=B8=B0=EA=B0=80=20=ED=81=B0=20=EA=B2=BD=EC=9A=B0=20=EA=B3=B5?= =?UTF-8?q?=ED=8F=AC=ED=83=90=EC=9A=95=20=EC=B0=A8=ED=8A=B8=EA=B0=80=20?= =?UTF-8?q?=EC=95=84=EB=9E=98=EB=A1=9C=20=EA=B0=80=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dashboard/View/FearGreedView.swift | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/AIProject/iCo/Features/Dashboard/View/FearGreedView.swift b/AIProject/iCo/Features/Dashboard/View/FearGreedView.swift index 08ec55c1..758d6d4a 100644 --- a/AIProject/iCo/Features/Dashboard/View/FearGreedView.swift +++ b/AIProject/iCo/Features/Dashboard/View/FearGreedView.swift @@ -26,27 +26,43 @@ struct FearGreedView: View { case .xSmall, .small, .medium, .large: return baseWidth case .xLarge, .xxLarge, .xxxLarge: - return baseWidth * 0.9 + return baseWidth * 1.2 default: - return baseWidth * 0.7 + return baseWidth * 1.4 } } var body: some View { VStack { - HStack(alignment: .center, spacing: 0) { - headerSection - - Spacer() + if typeSize >= .xLarge && hSizeClass == .compact { + VStack(alignment: .leading, spacing: 0) { + headerSection + + if showFearGreedDescription { + fearGreedDescription + .opacity(!showFearGreedDescription ? 0 : 1) + .animation(.snappy(duration: 0.3), value: showFearGreedDescription) + } + + chartSection + .padding(.top, 22) + .frame(maxWidth: .infinity, alignment: .center) + } + .frame(maxWidth: .infinity, alignment: .leading) + } else { + HStack(alignment: .center, spacing: 0) { + headerSection + + Spacer() + + chartSection + } - chartSection - .fixedSize(horizontal: true, vertical: false) - } - - if showFearGreedDescription { - fearGreedDescription - .opacity(!showFearGreedDescription ? 0 : 1) - .animation(.snappy(duration: 0.3), value: showFearGreedDescription) + if showFearGreedDescription { + fearGreedDescription + .opacity(!showFearGreedDescription ? 0 : 1) + .animation(.snappy(duration: 0.3), value: showFearGreedDescription) + } } } .padding(.horizontal, 22) @@ -57,7 +73,6 @@ struct FearGreedView: View { RoundedRectangle(cornerRadius: Self.cornerRadius) .strokeBorder(.defaultGradient, lineWidth: 0.5) ) - .animation(.snappy(duration: 0.2), value: showFearGreedDescription) } var headerSection: some View { @@ -119,6 +134,7 @@ struct FearGreedView: View { .font(.ico12M) .foregroundStyle(.secondary) } + .fixedSize(horizontal: true, vertical: false) } var fearGreedDescription: some View { From d75a6392ec1797523a1629c6125af1ab78018c00 Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Thu, 20 Nov 2025 15:18:18 +0900 Subject: [PATCH 5/5] =?UTF-8?q?design:=20scrollIndicator=20=EC=88=A8?= =?UTF-8?q?=EA=B8=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift b/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift index 6ec2f846..43a06742 100644 --- a/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift +++ b/AIProject/iCo/Features/Dashboard/View/CoinCarouselView.swift @@ -184,6 +184,7 @@ struct CoinCarouselView: View { } ) } + .scrollIndicators(.hidden) .presentationDetents([detent]) }