KFImage를 이용하여 불러오는 이미지 다운샘플링
This commit is contained in:
		| @@ -21,6 +21,13 @@ struct ContentNewAllItemView: View { | ||||
|             VStack(alignment: .leading, spacing: 8) { | ||||
|                 ZStack(alignment: .bottom) { | ||||
|                     KFImage(URL(string: item.coverImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: width, | ||||
|                                 height: width | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: width, height: width, alignment: .top) | ||||
| @@ -76,6 +83,13 @@ struct ContentNewAllItemView: View { | ||||
|                  | ||||
|                 HStack(spacing: 5.3) { | ||||
|                     KFImage(URL(string: item.creatorProfileImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 21.3, | ||||
|                                 height: 21.3 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 21.3, height: 21.3) | ||||
|   | ||||
| @@ -49,6 +49,13 @@ struct ContentRankingAllView: View { | ||||
|                                 } label: { | ||||
|                                     HStack(spacing: 0) { | ||||
|                                         KFImage(URL(string: item.coverImageUrl)) | ||||
|                                             .cancelOnDisappear(true) | ||||
|                                             .downsampling( | ||||
|                                                 size: CGSize( | ||||
|                                                     width: 66.7, | ||||
|                                                     height: 66.7 | ||||
|                                                 ) | ||||
|                                             ) | ||||
|                                             .resizable() | ||||
|                                             .scaledToFill() | ||||
|                                             .frame(width: 66.7, height: 66.7, alignment: .top) | ||||
|   | ||||
| @@ -17,6 +17,8 @@ struct ContentListItemView: View { | ||||
|             HStack(spacing: 0) { | ||||
|                 ZStack(alignment: .topLeading) { | ||||
|                     KFImage(URL(string: item.coverImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling(size: CGSize(width: 66.7, height: 66.7)) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 66.7, height: 66.7, alignment: .top) | ||||
|   | ||||
| @@ -47,6 +47,13 @@ struct ContentCreateSelectThemeView: View { | ||||
|                         ForEach(viewModel.themes, id: \.self) { theme in | ||||
|                             VStack(spacing: 16.7) { | ||||
|                                 KFImage(URL(string: theme.image)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: 60, | ||||
|                                             height: 60 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame(width: 60, height: 60, alignment: .top) | ||||
|   | ||||
| @@ -143,6 +143,13 @@ struct ContentCreateView: View { | ||||
|                                 HStack(spacing: 13.3) { | ||||
|                                     if let theme = viewModel.theme { | ||||
|                                         KFImage(URL(string: theme.image)) | ||||
|                                             .cancelOnDisappear(true) | ||||
|                                             .downsampling( | ||||
|                                                 size: CGSize( | ||||
|                                                     width: 33.3, | ||||
|                                                     height: 33.3 | ||||
|                                                 ) | ||||
|                                             ) | ||||
|                                             .resizable() | ||||
|                                             .frame(width: 33.3, height: 33.3) | ||||
|                                             .clipShape(Circle()) | ||||
|   | ||||
| @@ -28,6 +28,13 @@ struct AudioContentCommentItemView: View { | ||||
|             VStack(alignment: .leading, spacing: 0) { | ||||
|                 HStack(spacing: 6.7) { | ||||
|                     KFImage(URL(string: commentItem.profileUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 40, | ||||
|                                 height: 40 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(width: 40, height: 40) | ||||
|                         .clipShape(Circle()) | ||||
|   | ||||
| @@ -15,6 +15,13 @@ struct ContentDetailAnotherItemView: View { | ||||
|     var body: some View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             KFImage(URL(string: item.coverUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 93.3, | ||||
|                         height: 93.3 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .frame(width: 93.3, height: 93.3, alignment: .center) | ||||
|                 .clipped() | ||||
|   | ||||
| @@ -17,6 +17,13 @@ struct ContentDetailCreatorProfileView: View { | ||||
|     var body: some View { | ||||
|         HStack(spacing: 0) { | ||||
|             KFImage(URL(string: creator.profileImageUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 26.7, | ||||
|                         height: 26.7 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .frame(width: 26.7, height: 26.7) | ||||
|                 .clipShape(Circle()) | ||||
|   | ||||
| @@ -26,6 +26,13 @@ struct ContentDetailPlayView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack { | ||||
|                 KFImage(URL(string: audioContent.coverImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: screenSize().width - 26.7, | ||||
|                             height: screenSize().width - 26.7 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame( | ||||
|   | ||||
| @@ -32,6 +32,13 @@ struct ContentOrderConfirmDialogView: View { | ||||
|                 HStack(spacing: 11) { | ||||
|                     ZStack(alignment: .topLeading) { | ||||
|                         KFImage(URL(string: audioContent.coverImageUrl)) | ||||
|                             .cancelOnDisappear(true) | ||||
|                             .downsampling( | ||||
|                                 size: CGSize( | ||||
|                                     width: 88.7, | ||||
|                                     height: 88.7 | ||||
|                                 ) | ||||
|                             ) | ||||
|                             .resizable() | ||||
|                             .frame(width: 88.7, height: 88.7, alignment: .center) | ||||
|                             .clipped() | ||||
| @@ -54,6 +61,12 @@ struct ContentOrderConfirmDialogView: View { | ||||
|                         HStack(spacing: 4.3) { | ||||
|                             KFImage(URL(string: audioContent.creator.profileImageUrl)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: 13.3, | ||||
|                                         height: 13.3 | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .frame(width: 13.3, height: 13.3) | ||||
|                                 .clipShape(Circle()) | ||||
|   | ||||
| @@ -21,6 +21,13 @@ struct ContentMainBannerView: View { | ||||
|                             let item = viewModel.bannerList[index] | ||||
|                             if let url = item.thumbnailImageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { | ||||
|                                 KFImage(URL(string: url)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: screenSize().width - 26.7, | ||||
|                                             height: (screenSize().width - 26.7) * 0.53 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame( | ||||
| @@ -42,6 +49,13 @@ struct ContentMainBannerView: View { | ||||
|                                     .cornerRadius(4.7) | ||||
|                             } else { | ||||
|                                 KFImage(URL(string: item.thumbnailImageUrl)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: screenSize().width - 26.7, | ||||
|                                             height: (screenSize().width - 26.7) * 0.53 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame( | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct ContentMainItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack(alignment: .topLeading) { | ||||
|                 KFImage(URL(string: item.coverImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 133.3, | ||||
|                             height: 133.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 133.3, height: 133.3, alignment: .top) | ||||
| @@ -32,6 +39,13 @@ struct ContentMainItemView: View { | ||||
|              | ||||
|             HStack(spacing: 5.3) { | ||||
|                 KFImage(URL(string: item.creatorProfileImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 21.3, | ||||
|                             height: 21.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 21.3, height: 21.3) | ||||
|   | ||||
| @@ -60,6 +60,13 @@ struct ContentMainRankingView: View { | ||||
|                         let content = viewModel.contentRankingItemList[index] | ||||
|                         HStack(spacing: 0) { | ||||
|                             KFImage(URL(string: content.coverImageUrl)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: 60, | ||||
|                                         height: 60 | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .frame(width: 60, height: 60) | ||||
|                                 .cornerRadius(2.7) | ||||
|   | ||||
| @@ -41,6 +41,13 @@ struct ContentModifyView: View { | ||||
|                                             .clipped() | ||||
|                                     } else if let coverImageUrl = viewModel.coverImageUrl { | ||||
|                                         KFImage(URL(string: coverImageUrl)) | ||||
|                                             .cancelOnDisappear(true) | ||||
|                                             .downsampling( | ||||
|                                                 size: CGSize( | ||||
|                                                     width: 107, | ||||
|                                                     height: 107 | ||||
|                                                 ) | ||||
|                                             ) | ||||
|                                             .resizable() | ||||
|                                             .scaledToFill() | ||||
|                                             .frame(width: 107, height: 107) | ||||
|   | ||||
| @@ -16,6 +16,8 @@ struct SeriesContentListItemView: View { | ||||
|         VStack(spacing: 12) { | ||||
|             HStack(spacing: 11) { | ||||
|                 KFImage(URL(string: item.coverImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling(size: CGSize(width: 66.7, height: 66.7)) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 66.7, height: 66.7) | ||||
|   | ||||
| @@ -50,6 +50,13 @@ struct SeriesDetailView: View { | ||||
|                                     .padding(.top, 94) | ||||
|                                  | ||||
|                                 KFImage(URL(string: seriesDetail.coverImage)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: 400 * screenSize().width / 1080, | ||||
|                                             height: 564 * screenSize().width / 1080 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame( | ||||
| @@ -113,6 +120,13 @@ struct SeriesDetailView: View { | ||||
|                                  | ||||
|                                 HStack(spacing: 5.3) { | ||||
|                                     KFImage(URL(string: seriesDetail.creator.profileImage)) | ||||
|                                         .cancelOnDisappear(true) | ||||
|                                         .downsampling( | ||||
|                                             size: CGSize( | ||||
|                                                 width: 26.7, | ||||
|                                                 height: 26.7 | ||||
|                                             ) | ||||
|                                         ) | ||||
|                                         .resizable() | ||||
|                                         .scaledToFit() | ||||
|                                         .clipShape(Circle()) | ||||
|   | ||||
| @@ -42,6 +42,13 @@ struct MemberProfileDialog: View { | ||||
|                         .foregroundColor(Color.grayee) | ||||
|                      | ||||
|                     KFImage(URL(string: profile.profileImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: screenSize().width - 66.7, | ||||
|                                 height: screenSize().width - 66.7 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(maxWidth: screenSize().width - 66.7, maxHeight: screenSize().width - 66.7) | ||||
|                         .aspectRatio(CGSize(width: 1, height: 1), contentMode: .fit) | ||||
|   | ||||
| @@ -28,6 +28,13 @@ struct CreatorCommunityCommentItemView: View { | ||||
|             VStack(alignment: .leading, spacing: 0) { | ||||
|                 HStack(spacing: 6.7) { | ||||
|                     KFImage(URL(string: commentItem.profileUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 40, | ||||
|                                 height: 40 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(width: 40, height: 40) | ||||
|                         .clipShape(Circle()) | ||||
|   | ||||
| @@ -33,6 +33,13 @@ struct CreatorCommunityCommentView: View { | ||||
|             HStack(spacing: 8) { | ||||
|                 if let comment = commentItem { | ||||
|                     KFImage(URL(string: comment.profileUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 33.3, | ||||
|                                 height: 33.3 | ||||
|                             ) | ||||
|                         ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 33.3, height: 33.3) | ||||
|                     .clipShape(Circle()) | ||||
| @@ -44,6 +51,13 @@ struct CreatorCommunityCommentView: View { | ||||
|                         .padding(.leading, 3) | ||||
|                 } else { | ||||
|                     KFImage(URL(string: UserDefaults.string(forKey: .profileImage))) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 33.3, | ||||
|                                 height: 33.3 | ||||
|                             ) | ||||
|                         ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 33.3, height: 33.3) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -47,6 +47,13 @@ struct CreatorCommunityAllItemView: View { | ||||
|         VStack(spacing: 13.3) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: item.creatorProfileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 40, | ||||
|                             height: 40 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 40, height: 40) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct CreatorCommunityItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             HStack(spacing: 11) { | ||||
|                 KFImage(URL(string: item.creatorProfileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 40, | ||||
|                             height: 40 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 40, height: 40) | ||||
|                     .clipShape(Circle()) | ||||
| @@ -42,6 +49,13 @@ struct CreatorCommunityItemView: View { | ||||
|                  | ||||
|                 if let imageUrl = item.imageUrl { | ||||
|                     KFImage(URL(string: imageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 53.3, | ||||
|                                 height: 53.3 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(width: 53.3, height: 53.3) | ||||
|                         .cornerRadius(4.7) | ||||
|   | ||||
| @@ -43,6 +43,13 @@ struct CreatorCommunityModifyView: View { | ||||
|                                                 .clipped() | ||||
|                                         } else if let postImageUrl = viewModel.postImageUrl { | ||||
|                                             KFImage(URL(string: postImageUrl)) | ||||
|                                                 .cancelOnDisappear(true) | ||||
|                                                 .downsampling( | ||||
|                                                     size: CGSize( | ||||
|                                                         width: 107, | ||||
|                                                         height: 107 | ||||
|                                                     ) | ||||
|                                                 ) | ||||
|                                                 .resizable() | ||||
|                                                 .scaledToFill() | ||||
|                                                 .frame(width: 107, height: 107) | ||||
|   | ||||
| @@ -18,6 +18,13 @@ struct FollowerListItemView: View { | ||||
|         VStack(spacing: 13.3) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: item.profileImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 60, | ||||
|                             height: 60 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 60, height: 60) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -20,6 +20,13 @@ struct UserProfileCreatorView: View { | ||||
|         VStack(alignment: .leading, spacing: 0) { | ||||
|             HStack(spacing: 20) { | ||||
|                 KFImage(URL(string: creator.profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 90, | ||||
|                             height: 90 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 90, height: 90) | ||||
|   | ||||
| @@ -44,6 +44,13 @@ struct UserProfileDonationView: View { | ||||
|                         VStack(spacing: 6.7) { | ||||
|                             ZStack { | ||||
|                                 KFImage(URL(string: item.profileImage)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: 60, | ||||
|                                             height: 60 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame(width: 60, height: 60, alignment: .top) | ||||
|   | ||||
| @@ -23,6 +23,13 @@ struct UserProfileLiveView: View { | ||||
|                     HStack(spacing: 20) { | ||||
|                         ZStack(alignment: .topLeading) { | ||||
|                             KFImage(URL(string: liveRoom.coverImageUrl)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: 80, | ||||
|                                         height: 116.7 | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .scaledToFill() | ||||
|                                 .frame(width: 80, height: 116.7, alignment: .center) | ||||
|   | ||||
| @@ -18,6 +18,13 @@ struct FollowCreatorItemView: View { | ||||
|         VStack(spacing: 13.3) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: creator.profileImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 60, | ||||
|                             height: 60 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 60, height: 60) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -23,6 +23,13 @@ struct SectionEventBannerView: View { | ||||
|                         let item = items[index] | ||||
|                         if let url = item.thumbnailImageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { | ||||
|                             KFImage(URL(string: url)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: proxy.size.width, | ||||
|                                         height: proxy.size.height | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .frame(width: proxy.size.width, height: proxy.size.height, alignment: .center) | ||||
|                                 .tag(index) | ||||
| @@ -35,6 +42,13 @@ struct SectionEventBannerView: View { | ||||
|                                 } | ||||
|                         } else { | ||||
|                             KFImage(URL(string: item.thumbnailImageUrl)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: proxy.size.width, | ||||
|                                         height: proxy.size.height | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .frame(width: proxy.size.width, height: proxy.size.height, alignment: .center) | ||||
|                                 .tag(index) | ||||
|   | ||||
| @@ -17,6 +17,13 @@ struct LiveNowAllItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack { | ||||
|                 KFImage(URL(string: item.coverImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: itemWidth, | ||||
|                             height: itemWidth * 144 / 102 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: itemWidth, height: itemWidth * 144 / 102, alignment: .center) | ||||
| @@ -100,6 +107,13 @@ struct LiveNowAllItemView: View { | ||||
|              | ||||
|             HStack(spacing: 5.3) { | ||||
|                 KFImage(URL(string: item.creatorProfileImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 21.3, | ||||
|                             height: 21.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 21.3, height: 21.3, alignment: .center) | ||||
|   | ||||
| @@ -19,6 +19,13 @@ struct LiveNowItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack { | ||||
|                 KFImage(URL(string: item.coverImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: width, | ||||
|                             height: height | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: width, height: height, alignment: .center) | ||||
| @@ -80,6 +87,13 @@ struct LiveNowItemView: View { | ||||
|              | ||||
|             HStack(spacing: 5.3) { | ||||
|                 KFImage(URL(string: item.creatorProfileImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 21.3, | ||||
|                             height: 21.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 21.3, height: 21.3, alignment: .center) | ||||
|   | ||||
| @@ -32,6 +32,13 @@ struct SectionRecommendLiveView: View { | ||||
|                     let item = items[index] | ||||
|                     if let url = item.imageUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { | ||||
|                         KFImage(URL(string: url)) | ||||
|                             .cancelOnDisappear(true) | ||||
|                             .downsampling( | ||||
|                                 size: CGSize( | ||||
|                                     width: screenSize().width - 26.7, | ||||
|                                     height: (screenSize().width - 26.7) * 0.53 | ||||
|                                 ) | ||||
|                             ) | ||||
|                             .resizable() | ||||
|                             .scaledToFill() | ||||
|                             .frame( | ||||
| @@ -44,6 +51,13 @@ struct SectionRecommendLiveView: View { | ||||
|                             .cornerRadius(4.7) | ||||
|                     } else { | ||||
|                         KFImage(URL(string: item.imageUrl)) | ||||
|                             .cancelOnDisappear(true) | ||||
|                             .downsampling( | ||||
|                                 size: CGSize( | ||||
|                                     width: screenSize().width - 26.7, | ||||
|                                     height: (screenSize().width - 26.7) * 0.53 | ||||
|                                 ) | ||||
|                             ) | ||||
|                             .resizable() | ||||
|                             .scaledToFill() | ||||
|                             .frame( | ||||
|   | ||||
| @@ -55,6 +55,13 @@ struct SectionRecommendChannelView: View { | ||||
|                         VStack(spacing: 13.3) { | ||||
|                             ZStack(alignment: .bottom) { | ||||
|                                 KFImage(URL(string: item.profileImageUrl)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: screenSize().width * 0.18, | ||||
|                                             height: screenSize().width * 0.18 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center) | ||||
|   | ||||
| @@ -17,6 +17,13 @@ struct LiveReservationAllItemView: View { | ||||
|             HStack(spacing: 20) { | ||||
|                 ZStack(alignment: .topLeading) { | ||||
|                     KFImage(URL(string: item.coverImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 80, | ||||
|                                 height: 116 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 80, height: 116.7, alignment: .top) | ||||
|   | ||||
| @@ -17,6 +17,13 @@ struct LiveReservationItemView: View { | ||||
|             HStack(spacing: 20) { | ||||
|                 ZStack(alignment: .topLeading) { | ||||
|                     KFImage(URL(string: item.coverImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 80, | ||||
|                                 height: 116 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 80, height: 116, alignment: .top) | ||||
|   | ||||
| @@ -29,6 +29,13 @@ struct MyLiveReservationItemView: View { | ||||
|                 HStack(alignment: .top, spacing: 20) { | ||||
|                     ZStack(alignment: .topLeading) { | ||||
|                         KFImage(URL(string: item.coverImageUrl)) | ||||
|                             .cancelOnDisappear(true) | ||||
|                             .downsampling( | ||||
|                                 size: CGSize( | ||||
|                                     width: 80, | ||||
|                                     height: 116 | ||||
|                                 ) | ||||
|                             ) | ||||
|                             .resizable() | ||||
|                             .scaledToFill() | ||||
|                             .frame(width: 80, height: 116, alignment: .top) | ||||
|   | ||||
| @@ -49,6 +49,13 @@ struct LiveRoomChatItemView: View { | ||||
|                 } | ||||
|                  | ||||
|                 KFImage(URL(string: chatMessage.profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 30, | ||||
|                             height: 30 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 30, height: 30, alignment: .top) | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct LiveRoomDonationChatItemView: View { | ||||
|         HStack(spacing: 13.3) { | ||||
|             ZStack(alignment: .bottomTrailing) { | ||||
|                 KFImage(URL(string: chatMessage.profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 33.3, | ||||
|                             height: 33.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 33.3, height: 33.3, alignment: .top) | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct LiveRoomRouletteDonationChatItemView: View { | ||||
|         HStack(spacing: 13.3) { | ||||
|             ZStack(alignment: .bottomTrailing) { | ||||
|                 KFImage(URL(string: chatMessage.profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 33.3, | ||||
|                             height: 33.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 33.3, height: 33.3, alignment: .top) | ||||
|   | ||||
| @@ -85,6 +85,13 @@ struct LiveRoomCreateView: View { | ||||
|                                                 .cornerRadius(10) | ||||
|                                         } else if let coverImageUrl = viewModel.coverImageUrl { | ||||
|                                             KFImage(URL(string: coverImageUrl)) | ||||
|                                                 .cancelOnDisappear(true) | ||||
|                                                 .downsampling( | ||||
|                                                     size: CGSize( | ||||
|                                                         width: 80, | ||||
|                                                         height: 116.8 | ||||
|                                                     ) | ||||
|                                                 ) | ||||
|                                                 .resizable() | ||||
|                                                 .scaledToFill() | ||||
|                                                 .frame(width: 80, height: 116.8, alignment: .top) | ||||
|   | ||||
| @@ -56,6 +56,13 @@ struct LiveRoomCreateTagView: View { | ||||
|                             VStack(spacing: 16.7) { | ||||
|                                 ZStack { | ||||
|                                     KFImage(URL(string: tag.image)) | ||||
|                                         .cancelOnDisappear(true) | ||||
|                                         .downsampling( | ||||
|                                             size: CGSize( | ||||
|                                                 width: 60, | ||||
|                                                 height: 60 | ||||
|                                             ) | ||||
|                                         ) | ||||
|                                         .resizable() | ||||
|                                         .scaledToFill() | ||||
|                                         .frame(width: 60, height: 60, alignment: .top) | ||||
|   | ||||
| @@ -138,6 +138,13 @@ struct LiveDetailView: View { | ||||
|                                             let manager = room.manager | ||||
|                                              | ||||
|                                             KFImage(URL(string: manager.profileImageUrl)) | ||||
|                                                 .cancelOnDisappear(true) | ||||
|                                                 .downsampling( | ||||
|                                                     size: CGSize( | ||||
|                                                         width: 60, | ||||
|                                                         height: 60 | ||||
|                                                     ) | ||||
|                                                 ) | ||||
|                                                 .resizable() | ||||
|                                                 .scaledToFill() | ||||
|                                                 .frame(width: 60, height: 60, alignment: .top) | ||||
| @@ -427,6 +434,13 @@ struct LiveDetailView: View { | ||||
|                 ForEach(room.participatingUsers, id: \.self) { user in | ||||
|                     VStack(spacing: 6.7) { | ||||
|                         KFImage(URL(string: user.profileImageUrl)) | ||||
|                             .cancelOnDisappear(true) | ||||
|                             .downsampling( | ||||
|                                 size: CGSize( | ||||
|                                     width: 46.7, | ||||
|                                     height: 46.7 | ||||
|                                 ) | ||||
|                             ) | ||||
|                             .resizable() | ||||
|                             .scaledToFill() | ||||
|                             .frame(width: 46.7, height: 46.7, alignment: .top) | ||||
| @@ -447,6 +461,13 @@ struct LiveDetailView: View { | ||||
|                 ForEach(0..<userCount, id: \.self) { index in | ||||
|                     let user = room.participatingUsers[index] | ||||
|                     KFImage(URL(string: user.profileImageUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 33.3, | ||||
|                                 height: 33.3 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 33.3, height: 33.3, alignment: .top) | ||||
|   | ||||
| @@ -84,6 +84,13 @@ struct LiveRoomInfoEditDialog: View { | ||||
|                                     .cornerRadius(10) | ||||
|                             } else if let coverImageUrl = coverImageUrl { | ||||
|                                 KFImage(URL(string: coverImageUrl)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: 80, | ||||
|                                             height: 116.8 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame(width: 80, height: 116.8, alignment: .top) | ||||
|   | ||||
| @@ -28,6 +28,13 @@ struct LiveRoomNoChattingDialogView: View { | ||||
|                  | ||||
|                 HStack(spacing: 8) { | ||||
|                     KFImage(URL(string: profileUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 26.7, | ||||
|                                 height: 26.7 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(width: 26.7, height: 26.7) | ||||
|                      | ||||
|   | ||||
| @@ -29,6 +29,13 @@ struct LiveRoomProfileDialog: View { | ||||
|              | ||||
|             HStack(spacing: 13.3) { | ||||
|                 KFImage(URL(string: profileInfo.profileImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 80, | ||||
|                             height: 116.7 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 80, height: 116.7, alignment: .top) | ||||
|                     .clipped() | ||||
|   | ||||
| @@ -49,6 +49,13 @@ struct LiveRoomProfileItemMasterView: View { | ||||
|         VStack(alignment: .leading, spacing: 20) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 60, | ||||
|                             height: 60 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 60, height: 60) | ||||
|                     .clipShape(Circle()) | ||||
| @@ -90,6 +97,13 @@ struct LiveRoomProfileItemUserView: View { | ||||
|             VStack(spacing: 10) { | ||||
|                 HStack(spacing: 0) { | ||||
|                     KFImage(URL(string: profileUrl)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling( | ||||
|                             size: CGSize( | ||||
|                                 width: 46.7, | ||||
|                                 height: 46.7 | ||||
|                             ) | ||||
|                         ) | ||||
|                         .resizable() | ||||
|                         .frame(width: 46.7, height: 46.7) | ||||
|                         .clipShape(Circle()) | ||||
|   | ||||
| @@ -21,6 +21,13 @@ struct LiveRoomTopCreatorView: View { | ||||
|     var body: some View { | ||||
|         HStack(spacing: 5.3) { | ||||
|             KFImage(URL(string: profileImageUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 33.3, | ||||
|                         height: 33.3 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .scaledToFill() | ||||
|                 .frame(width: 33.3, height: 33.3) | ||||
|   | ||||
| @@ -27,6 +27,13 @@ struct LiveRoomInfoCreatorView: View { | ||||
|         HStack(spacing: 5.3) { | ||||
|             ZStack(alignment: .center) { | ||||
|                 KFImage(URL(string: creatorProfileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 33.3, | ||||
|                             height: 33.3 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 33.3, height: 33.3) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -22,6 +22,13 @@ struct LiveRoomInfoSpeakerView: View { | ||||
|         VStack(spacing: 5) { | ||||
|             ZStack(alignment: .center) { | ||||
|                 KFImage(URL(string: profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 25, | ||||
|                             height: 25 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 25, height: 25) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -15,6 +15,13 @@ struct EventPopupDialogView: View { | ||||
|     var body: some View { | ||||
|         VStack(spacing: 13.3) { | ||||
|             KFImage(URL(string: eventPopup.popupImageUrl!)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: screenSize().width, | ||||
|                         height: screenSize().width | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .frame(width: screenSize().width, height: screenSize().width) | ||||
|                 .scaledToFill() | ||||
|   | ||||
| @@ -56,6 +56,13 @@ struct HomeView: View { | ||||
|                     if contentPlayManager.isShowingMiniPlayer { | ||||
|                         HStack(spacing: 0) { | ||||
|                             KFImage(URL(string: contentPlayManager.coverImage)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: 36.7, | ||||
|                                         height: 36.7 | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .frame(width: 36.7, height: 36.7) | ||||
|                                 .cornerRadius(5.3) | ||||
|   | ||||
| @@ -43,6 +43,13 @@ struct TextMessageDetailView: View { | ||||
|                                 messageItem.senderProfileImageUrl | ||||
|                         ) | ||||
|                     ) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 26.7, | ||||
|                             height: 26.7 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 26.7, height: 26.7, alignment: .top) | ||||
|   | ||||
| @@ -38,6 +38,13 @@ struct SelectRecipientView: View { | ||||
|                         ForEach(viewModel.users, id: \.self) { user in | ||||
|                             HStack(spacing: 13.3) { | ||||
|                                 KFImage(URL(string: user.profileImageUrl)) | ||||
|                                     .cancelOnDisappear(true) | ||||
|                                     .downsampling( | ||||
|                                         size: CGSize( | ||||
|                                             width: 46.7, | ||||
|                                             height: 46.7 | ||||
|                                         ) | ||||
|                                     ) | ||||
|                                     .resizable() | ||||
|                                     .scaledToFill() | ||||
|                                     .frame(width: 46.7, height: 46.7, alignment: .top) | ||||
|   | ||||
| @@ -20,6 +20,13 @@ struct TextMessageItemView: View { | ||||
|          | ||||
|         HStack(spacing: 13.3) { | ||||
|             KFImage(URL(string: profileUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 46.7, | ||||
|                         height: 46.7 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .scaledToFill() | ||||
|                 .frame(width: 46.7, height: 46.7, alignment: .top) | ||||
|   | ||||
| @@ -33,6 +33,13 @@ struct VoiceMessageItemView: View { | ||||
|         VStack(spacing: 10) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: profileUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 46.7, | ||||
|                             height: 46.7 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 46.7, height: 46.7, alignment: .top) | ||||
|   | ||||
| @@ -20,6 +20,13 @@ struct BlockedMemberListItemView: View { | ||||
|         VStack(spacing: 13.3) { | ||||
|             HStack(spacing: 0) { | ||||
|                 KFImage(URL(string: item.profileImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 60, | ||||
|                             height: 60 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 60, height: 60) | ||||
|                     .clipShape(Circle()) | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct MyInfoCardView: View { | ||||
|     var body: some View { | ||||
|         HStack(spacing: 13.3) { | ||||
|             KFImage(URL(string: data.profileUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 90, | ||||
|                         height: 90 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .scaledToFill() | ||||
|                 .frame(width: 90, height: 90, alignment: .top) | ||||
|   | ||||
| @@ -16,6 +16,13 @@ struct OrderListItemView: View { | ||||
|         VStack(spacing: 12) { | ||||
|             HStack(spacing: 10) { | ||||
|                 KFImage(URL(string: item.coverImageUrl)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling( | ||||
|                         size: CGSize( | ||||
|                             width: 80, | ||||
|                             height: 80 | ||||
|                         ) | ||||
|                     ) | ||||
|                     .resizable() | ||||
|                     .frame(width: 80, height: 80, alignment: .center) | ||||
|                     .clipped() | ||||
|   | ||||
| @@ -292,6 +292,13 @@ struct ProfileUpdateView: View { | ||||
|                                     ZStack { | ||||
|                                         if profileResponse.profileUrl.trimmingCharacters(in: .whitespaces).count > 0 { | ||||
|                                             KFImage(URL(string: profileResponse.profileUrl)) | ||||
|                                                 .cancelOnDisappear(true) | ||||
|                                                 .downsampling( | ||||
|                                                     size: CGSize( | ||||
|                                                         width: 80, | ||||
|                                                         height: 80 | ||||
|                                                     ) | ||||
|                                                 ) | ||||
|                                                 .resizable() | ||||
|                                                 .scaledToFill() | ||||
|                                                 .frame(width: 80, height: 80, alignment: .top) | ||||
|   | ||||
| @@ -51,6 +51,13 @@ struct MemberTagView: View { | ||||
|                             VStack(spacing: 16.7) { | ||||
|                                 ZStack { | ||||
|                                     KFImage(URL(string: tag.image)) | ||||
|                                         .cancelOnDisappear(true) | ||||
|                                         .downsampling( | ||||
|                                             size: CGSize( | ||||
|                                                 width: 60, | ||||
|                                                 height: 60 | ||||
|                                             ) | ||||
|                                         ) | ||||
|                                         .resizable() | ||||
|                                         .scaledToFill() | ||||
|                                         .frame(width: 60, height: 60, alignment: .top) | ||||
|   | ||||
| @@ -72,6 +72,13 @@ struct LiveReservationCancelView: View { | ||||
|                             } else { | ||||
|                                 HStack(spacing: 20) { | ||||
|                                     KFImage(URL(string: item.coverImageUrl)) | ||||
|                                         .cancelOnDisappear(true) | ||||
|                                         .downsampling( | ||||
|                                             size: CGSize( | ||||
|                                                 width: 80, | ||||
|                                                 height: 116.7 | ||||
|                                             ) | ||||
|                                         ) | ||||
|                                         .resizable() | ||||
|                                         .scaledToFill() | ||||
|                                         .frame(width: 80, height: 116.7, alignment: .top) | ||||
|   | ||||
| @@ -15,6 +15,13 @@ struct LiveReservationStatusItemView: View { | ||||
|     var body: some View { | ||||
|         HStack(spacing: 0) { | ||||
|             KFImage(URL(string: item.coverImageUrl)) | ||||
|                 .cancelOnDisappear(true) | ||||
|                 .downsampling( | ||||
|                     size: CGSize( | ||||
|                         width: 80, | ||||
|                         height: 116.7 | ||||
|                     ) | ||||
|                 ) | ||||
|                 .resizable() | ||||
|                 .scaledToFill() | ||||
|                 .frame(width: 80, height: 116.7, alignment: .top) | ||||
|   | ||||
| @@ -21,6 +21,13 @@ struct EventListView: View { | ||||
|                     VStack(spacing: 0) { | ||||
|                         ForEach(viewModel.events, id: \.self) { event in | ||||
|                             KFImage(URL(string: event.thumbnailImageUrl)) | ||||
|                                 .cancelOnDisappear(true) | ||||
|                                 .downsampling( | ||||
|                                     size: CGSize( | ||||
|                                         width: screenSize().width - 26.7, | ||||
|                                         height: (screenSize().width - 26.7) * 300 / 1000 | ||||
|                                     ) | ||||
|                                 ) | ||||
|                                 .resizable() | ||||
|                                 .scaledToFill() | ||||
|                                 .frame( | ||||
|   | ||||
| @@ -18,6 +18,8 @@ struct SeriesListBigItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack { | ||||
|                 KFImage(URL(string: item.coverImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling(size: CGSize(width: 116.7, height: 165)) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: 116.7, height: 165, alignment: .center) | ||||
| @@ -65,6 +67,8 @@ struct SeriesListBigItemView: View { | ||||
|             if isVisibleCreator { | ||||
|                 HStack(spacing: 3) { | ||||
|                     KFImage(URL(string: item.creator.profileImage)) | ||||
|                         .cancelOnDisappear(true) | ||||
|                         .downsampling(size: CGSize(width: 16, height: 16)) | ||||
|                         .resizable() | ||||
|                         .scaledToFill() | ||||
|                         .frame(width: 16, height: 16, alignment: .center) | ||||
|   | ||||
| @@ -18,6 +18,8 @@ struct SeriesListItemView: View { | ||||
|         VStack(alignment: .leading, spacing: 8) { | ||||
|             ZStack { | ||||
|                 KFImage(URL(string: item.coverImage)) | ||||
|                     .cancelOnDisappear(true) | ||||
|                     .downsampling(size: CGSize(width: itemWidth, height: itemWidth * 432 / 306)) | ||||
|                     .resizable() | ||||
|                     .scaledToFill() | ||||
|                     .frame(width: itemWidth, height: itemWidth * 432 / 306) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung