我遇到了一个看似简单的难题...
我的视图有一个宽度小于高度的内容,我希望它显示在一个漂亮的方形卡片中。
这是我在这里所做的:
struct SquareView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.font(.system(size: 100))
.padding()
.foregroundColor(.red)
Text("Yo !")
.font(.title)
.fontWeight(.bold)
.foregroundColor(.orange)
}
.aspectRatio(contentMode: .fill) // Same result with or without this line
.padding()
.background(Color.white.opacity(0.5))
.cornerRadius(16)
}
}
struct SquareView_Previews: PreviewProvider {
static var previews: some View {
SquareView()
.padding(30)
.background(.yellow)
}
}
但是aspectRatio
位似乎对我希望实现的正方形部分完全没有影响。
在寻找解决方案之后,似乎X1 M1 N1 X要成为我的救世主了...
好吧,那么,这就是我所做的,我几乎成功了:
struct SquareView: View {
var body: some View {
ZStack {
Rectangle()
.foregroundColor(Color.white.opacity(0.5))
.aspectRatio(contentMode: .fill)
.cornerRadius(16)
VStack {
Image(systemName: "globe")
.font(.system(size: 100))
.padding()
.foregroundColor(.red)
Text("Yo !")
.font(.title)
.fontWeight(.bold)
.foregroundColor(.orange)
}
.padding()
}
.fixedSize()
}
}
瞧!
没错,它是方形的,但ZStack
的大小似乎没有考虑到Rectangle
,因为在Xcode中选择它时会确认它:
因此,唯一的解决方案似乎是一个涉及GeometryReader
和骄傲使我拒绝这个老年的残余!
“我敢肯定,外面有人知道还有别的办法,我肯定离得很近......这件事上的任何帮助都将不胜感激!”
**EDIT:**我在示例中放置了整个文件,而不仅仅是内容。
**编辑2:**由于@Paulw11的回答,这里是我的示例的完整解决方案。
struct SquareView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.font(.system(size: 100))
.padding()
.foregroundColor(.red)
Text("Yo !")
.font(.title)
.fontWeight(.bold)
.foregroundColor(.orange)
}
.padding()
.background {
Rectangle()
.aspectRatio(contentMode: .fill)
.foregroundColor(.white.opacity(0.5))
.cornerRadius(16)
}
}
}
其结果是:
1条答案
按热度按时间xtfmy6hx1#
您可以简单地为现有内容设置一个背景,并给予它一个负向插入: