1

我正在尝试在 SwiftUI 中使用 Material 组件 MDCCard 并尝试使其大小与其子视图完全相同,但最终我得到了拉伸大小以填充其父级中的任何可用空间。

我怎样才能让它的大小包裹它的内容。

这是我的材料卡

struct MaterialCard<Content: View>: UIViewRepresentable {
    let content: () -> Content

    func makeUIView(context: Context) -> MDCCard {
        let card = MDCCard()

        let view = UIHostingController(rootView: content()).view!
        view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        card.addSubview(view)

        return card
    }

    func updateUIView(_ card: MDCCard, context: Context) {
        card.setContentHuggingPriority(.defaultHigh, for: .vertical)
        card.setContentHuggingPriority(.defaultHigh, for: .horizontal)
    }
}

这是使用的预览

struct CCard_Previews: PreviewProvider {
    static var previews: some View {
        VStack {
            MaterialCard(rippled: true) {
                Text("HEllllO")
                    .frame(width: 200, height: 200)
                    .background(Color.red.opacity(0.5))
            }
            .background(Color.gray)
            .environment(\.colorScheme, .light)

            MaterialCard(rippled: true) {
                Text("HEllllO")
                    .frame(width: 200, height: 200)
                    .background(Color.red.opacity(0.5))
            }
            .background(Color.black)
            .environment(\.colorScheme, .dark)
        }
    }
}

结果是

结果

4

0 回答 0