From 1fc608a9afcadefcc205ebd0173e2f8c301e4f57 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Thu, 23 Oct 2025 14:42:50 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20AsyncImage=20->=20KFImage=20?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Gallery/CharacterDetailGalleryView.swift | 22 ++++++++++--------- .../Detail/Gallery/ImageViewerView.swift | 18 ++++++++------- .../Room/Settings/ChatBgSelectionView.swift | 22 ++++++++++--------- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift b/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift index 96656f1..a0043b1 100644 --- a/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift +++ b/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import Kingfisher struct CharacterDetailGalleryView: View { @StateObject var viewModel = CharacterDetailGalleryViewModel() @@ -146,16 +147,17 @@ struct CharacterDetailGalleryView: View { ZStack { // 이미지 - AsyncImage(url: URL(string: item.imageUrl)) { image in - image - .resizable() - .scaledToFill() - .frame(width: width, height: height) - .clipped() - } placeholder: { - Rectangle() - .fill(Color.gray.opacity(0.3)) - } + KFImage(URL(string: item.imageUrl)) + .placeholder { + Rectangle() + .fill(Color.gray.opacity(0.3)) + } + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: width, height: height)) + .resizable() + .scaledToFill() + .frame(width: width, height: height) + .clipped() // 미소유 이미지 오버레이 if !item.isOwned { diff --git a/SodaLive/Sources/Chat/Character/Detail/Gallery/ImageViewerView.swift b/SodaLive/Sources/Chat/Character/Detail/Gallery/ImageViewerView.swift index aae3487..88f2233 100644 --- a/SodaLive/Sources/Chat/Character/Detail/Gallery/ImageViewerView.swift +++ b/SodaLive/Sources/Chat/Character/Detail/Gallery/ImageViewerView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import Kingfisher struct ImageViewerView: View { let images: [String] @@ -18,14 +19,15 @@ struct ImageViewerView: View { TabView(selection: $selectedIndex) { ForEach(Array(images.enumerated()), id: \.offset) { index, imageUrl in - AsyncImage(url: URL(string: imageUrl)) { image in - image - .resizable() - .aspectRatio(contentMode: .fit) - } placeholder: { - ProgressView() - .tint(.white) - } + KFImage(URL(string: imageUrl)) + .placeholder { + ProgressView() + .tint(.white) + } + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) + .resizable() + .aspectRatio(contentMode: .fit) .tag(index) } } diff --git a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift index cdefd91..b22ed6f 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import Kingfisher struct ChatBgSelectionView: View { @@ -77,16 +78,17 @@ struct ChatBgSelectionView: View { ZStack(alignment: .bottomTrailing) { // 이미지 - AsyncImage(url: URL(string: item.imageUrl)) { image in - image - .resizable() - .scaledToFill() - .frame(width: width, height: height) - .clipped() - } placeholder: { - Rectangle() - .fill(Color.gray.opacity(0.3)) - } + KFImage(URL(string: item.imageUrl)) + .placeholder { + Rectangle() + .fill(Color.gray.opacity(0.3)) + } + .cancelOnDisappear(true) + .downsampling(size: CGSize(width: width, height: height)) + .resizable() + .scaledToFill() + .frame(width: width, height: height) + .clipped() .overlay { Rectangle() .stroke(lineWidth: 5)