gpt4 book ai didi

swift - 更改折线颜色 Swift Xcode

转载 作者:行者123 更新时间:2023-11-30 10:50:04 27 4
gpt4 key购买 nike

我正在尝试有条件地更改折线的颜色,但需要检查渲染器方法之外的变量。据我所知,我无法将附加变量传递给渲染器方法。建议?

MKPolyline 在 viewDidLoad() 中与变量 x 一起初始化下面是渲染器函数

extension ViewController {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) ->
MKOverlayRenderer {
if overlay is MKPolyline {

let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = UIColor.blue
renderer.lineWidth = 3
return renderer
}
return MKOverlayRenderer(overlay: overlay)
}

如果 x != y,那么我想要 renderer.linesColor = UIColor.green

最佳答案

如果xy是 View Controller 的属性,您可以像渲染器方法中的任何变量一样引用它们:

extension ViewController {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = x == y ? UIColor.blue : UIColor.green
renderer.lineWidth = 3
return renderer
}
return MKOverlayRenderer(overlay: overlay)
}

如果xy特定于每个覆盖层,则需要子类化MKPolyline:

class MyPolyline: MKPolyline {
// Initialize them specific to your needds
var x = 0
var y = 0
}

extension ViewController {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let overlay = overlay as? MyPolyline else {
return MKOverlayRenderer(overlay: overlay)
}

let renderer = MKPolylineRenderer(overlay: overlay)
// You can also add a strokeColor as a computed property to the MyPolyline class
renderer.strokeColor = overlay.x == overlay.y ? UIColor.blue : UIColor.green
renderer.lineWidth = 3
return renderer
}
}

关于swift - 更改折线颜色 Swift Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54788441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com