如何在SwiftUI中更改分隔符的宽度?

如何在SwiftUI中更改分隔符的宽度?,swiftui,Swiftui,在我的SwiftUI应用程序的几个屏幕上,我在几个元素之间使用了Divider()。此分隔线渲染为非常细的灰色(或黑色?)线。我猜是1分。如何更改分隔符()的宽度?您可以创建任何想要的分隔符、颜色、宽度、内容。。。如下例所示 struct ExDivider: View { let color: Color = .gray let width: CGFloat = 2 var body: some View { Rectangle()

在我的SwiftUI应用程序的几个屏幕上,我在几个元素之间使用了Divider()。此分隔线渲染为非常细的灰色(或黑色?)线。我猜是1分。如何更改分隔符()的宽度?

您可以创建任何想要的分隔符、颜色、宽度、内容。。。如下例所示

struct ExDivider: View {
    let color: Color = .gray
    let width: CGFloat = 2
    var body: some View {
        Rectangle()
            .fill(color)
            .frame(height: width)
            .edgesIgnoringSafeArea(.horizontal)
    }
}

对于任何感兴趣的人,我修改了已接受的答案,支持水平和垂直方向,并使用了支持暗模式的原始分隔颜色:

struct ExtendedDivider: View {
    var width: CGFloat = 2
    var direction: Axis.Set = .horizontal
    @Environment(\.colorScheme) var colorScheme
    var body: some View {
        ZStack {
            Rectangle()
                .fill(colorScheme == .dark ? Color(red: 0.278, green: 0.278, blue: 0.290) : Color(red: 0.706, green: 0.706, blue: 0.714))
                .applyIf(direction == .vertical) {
                    $0.frame(width: width)
                    .edgesIgnoringSafeArea(.vertical)
                } else: {
                    $0.frame(height: width)
                    .edgesIgnoringSafeArea(.horizontal)
                }
        }
    }
}
另外,此代码段使用了
applyIf
语法:

extension View {
    @ViewBuilder func applyIf<T: View>(_ condition: @autoclosure () -> Bool, apply: (Self) -> T, else: (Self) -> T) -> some View {
        if condition() {
            apply(self)
        } else {
            `else`(self)
        }
    }
}
扩展视图{
@ViewBuilder func applyIf(u)条件:@autoclosure()->Bool,apply:(Self)->T,else:(Self)->T)->一些视图{
如果条件(){
应用(自我)
}否则{
`else`(self)
}
}
}
这对我很有用:

Divider().frame(maxWidth: 100)

这大约是iPhone 11在纵向模式下屏幕宽度的三分之一。

好的,我明白了。所以并没有修改器来更改默认分隔符()的宽度,但我可以创建一个自定义分隔符(如您的示例中所示)并使用它来代替它?谢谢!:)如果您想使用具有不同颜色或宽度的自定义修改器,您需要将“let”替换为“var”。您可以使用
。frame(width:)
这是用于iOS14+的吗?我在项目中使用它,需要IOS13+和MacOS10.15+