SwiftUI描边颜色和宽度?

6
我正在按照苹果的"创建和组合视图" SwiftUI教程进行学习,在第4节的第5步中,我被要求添加一个灰色描边,虽然我可以做到,但它没有显示颜色或给我线条宽度。
            .clipShape(Circle())
            .overlay(
                Circle().stroke(StrokeStyle)) 

我是否做错了什么或者这是某种错误?

正如苹果的例子所示;

           .clipShape(Circle())
           .overlay(
               Circle().stroke(Color.gray, lineWidth: 4))

我可以输入颜色值,但不理解为什么它没有从 Inspector 中提取颜色。我甚至可以将颜色从灰色更改为白色,但代码中似乎并未引用此更改。

此外,是否可以从 Inspector 中添加/设置线宽?添加阴影的下一步非常清晰,但这一步骤确实让我困惑。

3个回答

4
Circle()stroke(...) 函数有多个重载。

函数重载或方法重载是创建具有不同实现的相同名称的多个函数的能力。

您可以在此处了解有关函数重载的信息:Function overloading

这里是 stroke(...) 的四种不同实现文档:

stroke(style:)

stroke(lineWidth:)

stroke(_:style:)

stroke(_:lineWidth:)

它们都是有效的,您可以决定使用哪一个或哪一个最适合您的需求。

Circle().stroke(Color.black, lineWidth: 1)  
Circle().stroke(style: StrokeStyle(lineWidth: 1, lineCap: .butt, lineJoin: .bevel, miterLimit: 1, dash: [CGFloat](), dashPhase: 1))

这两种实现方式的功能相同,不同之处在于使用了不同的stroke(...)函数实现。


1
如果你指的是颜色字面量,那么它们是 UIColor 类型,所以你需要在 Color 构造函数中显式包装它们,如下所示。

demo


0
你可以这样做:
Circle()
.stroke(.gray.opacity(0.2),lineWidth: 4)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接