将 MapPolyline 的颜色设置为应用程序的强调色

问题描述 投票:0回答:1

我正在尝试使用

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 swiftui mapkit
1个回答
0
投票

这可能是一个 iOS 错误,因为这在 macOS 上可以正常工作。

解决方法是解析视图环境中的颜色,并使用解析后的颜色:

@Environment(\.self) var env

var body: some View {
    Map {
        MapPolyline(...)
            .stroke(Color.accentColor.resolve(in: env), lineWidth: 5)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.