gpt4 book ai didi

ios - 涂上许多不同颜色的别针。 iOS。 swift 3.Xcode 9

转载 作者:行者123 更新时间:2023-11-28 07:38:42 24 4
gpt4 key购买 nike

我需要在 map 上绘制 100 个图钉,最多 4 种不同的颜色,以注意由我的“colorOfPin”(绿色、黄色、红色和蓝色)创建的变量。

我通过一个函数,循环生成100棵松树的100条标注:

func paintPinsIP () {

for item in 0 ... (numberPoints - 1) {

let annotationPin = LocationPoint ()

annotationPin.namePoint= elements [item].namePoint
annotationPin.coordinate = elements [item].coordinate

identificaPin = annotationPin.namePoint

viewOfMap.addAnnotation(annotationPin)

}
}

接下来我在 map 上显示这 100 个注释,但每个图钉必须具有由变量“colorOfPin”(绿色、黄色、红色或蓝色)指示的颜色:

 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if (annotation is MKUserLocation) {return nil}

let pinIdentifier = identificaPin

var aView = mapView.dequeueReusableAnnotationView(withIdentifier: pinIdentifier)
if aView == nil {
let pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: pinIdentifier)
guard annotation is LocationPoint else {return nil}

pinView.isEnabled = true
pinView.canShowCallout = false
aView = pinView

switch colorOfPin {
case .red: pinView.pinTintColor = UIColor.red
case .yellow: pinView.pinTintColor = UIColor.yellow
case .green: pinView.pinTintColor = UIColor.green
case .blue: pinView.pinTintColor = UIColor.blue
}

} else {
aView?.annotation = annotation
}

return aView
}

但是 map 上显示的 100 个点的颜色与最后一个图钉的颜色相同。所有点的颜色都是引脚 #99 的颜色。由于点 #99 的“colorOfPin”变量为“蓝色”,因此 100 个引脚显示为蓝色。

如何为每个引脚绘制变量“colorOfPin”指示的颜色?

最佳答案

As the ‘colorOfPin’ variable of point # 99 is 'blue', the 100 pins appear blue.

在您的 paintPinsIP()mapView(_:viewFor:) 方法中设置一个断点,并查看这些方法的调用顺序。您没有在 mapView(_:viewFor:) 中设置 colorOfPin 的值,因此看起来您希望 map View 尽快获取注释 View 当您将注释添加到 map 时。然而,真正发生的是,您向 map 添加了一堆注释,一段时间后,本地图尝试自行绘制时,它会调用 mapView(_:viewFor:) 来获取 View 对于碰巧可见的任何注释。到那时,colorOfPin 将会改变。

看起来 LocationPoint 可能是您创建的一个采用 MKAnnotation 协议(protocol)的类。解决问题的方法是向该类添加 pinColor 属性,这样您就可以在创建注释时设置图钉的颜色。然后,本地图 View 为您的一个注释调用您的 mapView(_:viewFor:) 方法时,您可以使用它的 pinColor 属性来设置引脚注释 View 的 pinTintColor 属性。

关于ios - 涂上许多不同颜色的别针。 iOS。 swift 3.Xcode 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815981/

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