fix(creator-channel): 내 채널 커뮤니티 아이템이 위/아래가 잘리는 버그 수정
- HeightPreferenceKey를 사용해 아이템 사이즈 동적으로 갱신하여 LazyHStack의 사이즈를 현재 보이는 아이템의 사이즈로 설정하여 잘리는 버그 수정
This commit is contained in:
		@@ -20,6 +20,8 @@ struct UserProfileView: View {
 | 
			
		||||
    @State private var isShowRouletteSettings: Bool = false
 | 
			
		||||
    @State private var isShowMenuSettings: Bool = false
 | 
			
		||||
    
 | 
			
		||||
    @State private var maxCommunityPostHeight: CGFloat? = nil
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        GeometryReader { proxy in
 | 
			
		||||
            BaseView(isLoading: $viewModel.isLoading) {
 | 
			
		||||
@@ -95,6 +97,12 @@ struct UserProfileView: View {
 | 
			
		||||
                                                                        step: .creatorCommunityAll(creatorId: userId)
 | 
			
		||||
                                                                    )
 | 
			
		||||
                                                            }
 | 
			
		||||
                                                            .background(
 | 
			
		||||
                                                                GeometryReader { geo in
 | 
			
		||||
                                                                    Color.clear
 | 
			
		||||
                                                                        .preference(key: HeightPreferenceKey.self, value: geo.size.height)
 | 
			
		||||
                                                                }
 | 
			
		||||
                                                            )
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                    
 | 
			
		||||
                                                    CreatorCommunityMoreItemView {
 | 
			
		||||
@@ -105,8 +113,15 @@ struct UserProfileView: View {
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                                .padding(.horizontal, 13.3)
 | 
			
		||||
                                                .frame(height: maxCommunityPostHeight)
 | 
			
		||||
                                                .onPreferenceChange(HeightPreferenceKey.self) { value in
 | 
			
		||||
                                                    if let current = maxCommunityPostHeight {
 | 
			
		||||
                                                        maxCommunityPostHeight = max(current, value)
 | 
			
		||||
                                                    } else {
 | 
			
		||||
                                                        maxCommunityPostHeight = value
 | 
			
		||||
                                                    }
 | 
			
		||||
                                                }
 | 
			
		||||
                                            }
 | 
			
		||||
                                            .frame(minHeight: 146)
 | 
			
		||||
                                            .padding(.top, 26.7)
 | 
			
		||||
                                        } else {
 | 
			
		||||
                                            if UserDefaults.int(forKey: .userId) == creatorProfile.creator.creatorId {
 | 
			
		||||
@@ -211,7 +226,7 @@ struct UserProfileView: View {
 | 
			
		||||
                                        .padding(.top, 26.7)
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                                    
 | 
			
		||||
                                
 | 
			
		||||
                                UserProfileFanTalkView(
 | 
			
		||||
                                    userId: userId,
 | 
			
		||||
                                    cheers: creatorProfile.cheers,
 | 
			
		||||
@@ -399,6 +414,13 @@ struct UserProfileView: View {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct HeightPreferenceKey: PreferenceKey {
 | 
			
		||||
    static var defaultValue: CGFloat = 0
 | 
			
		||||
    static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
 | 
			
		||||
        value = max(value, nextValue()) // 가장 큰 height로 갱신
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct UserProfileView_Previews: PreviewProvider {
 | 
			
		||||
    static var previews: some View {
 | 
			
		||||
        UserProfileView(userId: 0)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user