我正在尝试使用
MapPolyline
将 .stroke()
的颜色设置为应用程序的强调色。
我尝试扩展
ShapeStyle
来自定义强调色:
extension ShapeStyle where Self == Color {
static var accentColor: Color { Color.accentColor }
}
并修改
MapPolyline
如下:
MapPolyline(route.route)
.stroke(.accentColor, lineWidth: 5)
但是,这导致
MapPolyline
仍然具有默认的蓝色,而不是我的应用程序的强调色。
我还尝试使用
.tint
ShapeStyle,并使用 .tint(Color.accentColor
设置强调色作为附加修饰符,但这也不起作用。
这可能是一个 iOS 错误,因为这在 macOS 上可以正常工作。
解决方法是解析视图环境中的颜色,并使用解析后的颜色:
@Environment(\.self) var env
var body: some View {
Map {
MapPolyline(...)
.stroke(Color.accentColor.resolve(in: env), lineWidth: 5)
}
}