我正在尝试有条件地更改折线的颜色,但是需要检查位于renderer方法之外的变量。据我所知,我无法将其他变量传递给renderer方法。有什么建议吗?
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.strokeColor = UIColor.green
答案 0 :(得分:0)
如果object_changes
和x
是View Controller的属性,则可以像渲染器方法中的任何变量一样引用它们:
y
如果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)
}
和x
特定于每个叠加层,则需要子类y
:
MKPolyline