更改折线颜色Swift Xcode

时间:2019-02-20 14:15:58

标签: swift mkpolyline

我正在尝试有条件地更改折线的颜色,但是需要检查位于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

1 个答案:

答案 0 :(得分:0)

如果object_changesx是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