我正在尝试在 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)
}
}
}
结果是