From 3fd8a2bcd11a6c5cbf64018c44a935c479a57c08 Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Fri, 3 Oct 2025 14:43:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C?= =?UTF-8?q?=20AI=20=EB=B8=8C=EB=A6=AC=ED=95=91=EC=97=90=EC=84=9C=20Default?= =?UTF-8?q?ProgressView=20=EA=B8=80=EC=9E=90=EA=B0=80=20=EC=9E=98=EB=A6=AC?= =?UTF-8?q?=EB=8A=94=20=EC=9D=B4=EC=8A=88=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DefaultProgressView의 Text가 줄어들지 않도록 `fixedSize(horizontal: false, vertical: true)` modifier 사용 - 기존에는 250이라는 값을 하드코딩해서 사용 -> DefaultProgressView도 높이를 계산해서 적용될 수 있도록 수정 --- AIProject/iCo/Features/Base/DefaultProgressView.swift | 1 + AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/AIProject/iCo/Features/Base/DefaultProgressView.swift b/AIProject/iCo/Features/Base/DefaultProgressView.swift index 2ce6f173..33543c5b 100644 --- a/AIProject/iCo/Features/Base/DefaultProgressView.swift +++ b/AIProject/iCo/Features/Base/DefaultProgressView.swift @@ -86,6 +86,7 @@ struct DefaultProgressView: View { .multilineTextAlignment(.center) .lineSpacing(4) .padding(.bottom, 10) + .fixedSize(horizontal: false, vertical: true) switch status { case .loading: diff --git a/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift b/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift index 9108178a..81dc8aa3 100644 --- a/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift +++ b/AIProject/iCo/Features/Dashboard/View/AIBriefingView.swift @@ -71,7 +71,7 @@ struct AIBriefingView: View { }, content: { Text($0.summary.byCharWrapping) } ) - .frame(height: max(maxHeight, 250)) + .frame(height: maxHeight) } } } From 4d2b4fba018096e4628e24d3777f573c83bae0d0 Mon Sep 17 00:00:00 2001 From: jihyeonjjang Date: Fri, 3 Oct 2025 15:21:53 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EC=B0=A8=ED=8A=B8=20=EC=98=81?= =?UTF-8?q?=EC=97=AD=EC=9D=B4=20=ED=95=98=EB=8B=A8=EA=B9=8C=EC=A7=80=20?= =?UTF-8?q?=EA=B8=B8=EC=96=B4=EC=A7=80=EB=8A=94=20=EC=9D=B4=EC=8A=88=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 - GeometryReader의 proxy는 해당 뷰의 레이아웃 사이클마다 다시 계산됨. @State로 관리할 필요가 없음 - 차트 영역이 하단까지 길어긴 건, 초기에 접근할 때 baseHeight 측정 타이밍 때문에 생긴 문제라고 예측됨 --- .../iCo/Features/CoinDetail/View/CoinDetailView.swift | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/AIProject/iCo/Features/CoinDetail/View/CoinDetailView.swift b/AIProject/iCo/Features/CoinDetail/View/CoinDetailView.swift index 7546fc66..4cef38ba 100644 --- a/AIProject/iCo/Features/CoinDetail/View/CoinDetailView.swift +++ b/AIProject/iCo/Features/CoinDetail/View/CoinDetailView.swift @@ -19,7 +19,6 @@ struct CoinDetailView: View { @StateObject var reportViewModel: ReportViewModel @State private var selectedTab: Tab = .chart - @State private var baseHeight: CGFloat? @State private var isKeyboardVisible = false @State private var keyboardObserver: NSObjectProtocol? @@ -36,7 +35,8 @@ struct CoinDetailView: View { var body: some View { ZStack(alignment: .top) { GeometryReader { proxy in - let containerHeight = baseHeight ?? proxy.size.height + let safeArea = proxy.safeAreaInsets.top + proxy.safeAreaInsets.bottom + let containerHeight = proxy.size.height - safeArea ScrollView { VStack(spacing: 0) { @@ -45,9 +45,6 @@ struct CoinDetailView: View { content(containerHeight: containerHeight) } .padding(.horizontal, 16) - .onAppear { - if baseHeight == nil { baseHeight = proxy.size.height } - } } } .scrollIndicators(.hidden) @@ -134,7 +131,7 @@ extension CoinDetailView { /// 차트 높이 비율은 size class에 따라 다르게 적용됩니다. private enum Layout { static let regularChartRatio: CGFloat = 0.55 - static let compactChartRatio: CGFloat = 0.8 + static let compactChartRatio: CGFloat = 0.85 } }