SwiftUI在VStack/HStack中复制了边框
我在HStack和VStack中有许多瓷砖视图。每个瓷砖周围都应该有一个边框。我面临的问题是,我不希望堆栈中有任何间距。但是,由于视图彼此相邻,因此会产生重复的边界 以下是我的例子:SwiftUI在VStack/HStack中复制了边框,swiftui,Swiftui,我在HStack和VStack中有许多瓷砖视图。每个瓷砖周围都应该有一个边框。我面临的问题是,我不希望堆栈中有任何间距。但是,由于视图彼此相邻,因此会产生重复的边界 以下是我的例子: struct TileMain: View { var body: some View { VStack { HStack(spacing: 0.0) { Tile()
struct TileMain: View {
var body: some View {
VStack
{
HStack(spacing: 0.0)
{
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
}
HStack(spacing: 0.0)
{
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
}
.padding(.bottom, 15)
}
}
}
struct Tile : View
{
var body: some View
{
VStack
{
Spacer()
Text("Test")
Spacer()
}.frame(width: 150, height: 150)
}
}
底部的边框宽度为1.0。然而,任何有邻居的地方,边界都将是2.0宽。这方面有什么办法吗?我只需要在特殊的边缘设置边框,这样我就不会得到任何重复。但这不可能是我在SwiftUI中的默认设置。让我们把我们的想法颠倒过来。。。并使用如下内容 使用Xcode 11.4/macOS 10.15.6进行测试 您可以使用间距:-1.0(或任意边框宽度):)
又来了,阿斯佩里!谢谢事实上,我发现间距-1也可以,但你的看起来更好。
struct TileMain: View {
var body: some View {
VStack(spacing: 1)
{
HStack(spacing: 1)
{
Tile()
Tile()
Tile()
}
HStack(spacing: 1)
{
Tile()
Tile()
Tile()
}
}
.padding(1)
.background(Color.red)
}
}
struct Tile : View
{
var body: some View
{
VStack
{
Spacer()
Text("Test")
Spacer()
}.frame(width: 150, height: 150)
.background(Color(NSColor.windowBackgroundColor))
}
}
struct TileMain: View {
var body: some View {
VStack(spacing: -1.0)
{
HStack(spacing: -1.0)
{
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
}
HStack(spacing: -1.0)
{
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
Tile()
.border(Color.red, width: 1.0)
}
.padding(.bottom, 15)
}
}
}