点击时MKViewMap自定义注释消失
我正在为MKMap创build自定义注释。 这是工作,但是当我点击一个注释,注释消失(见图),然后标注显示并消失。
(我已经完成了这个教程https://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial )
这里的自定义注释:
class Trail:NSObject,MKAnnotation {
let title: String? let difficulty: String let coordinate: CLLocationCoordinate2D var enableInfoButton : Bool init(title: String, difficulty: String, coordinate: CLLocationCoordinate2D, enableInfoButton : Bool) { self.title = title self.difficulty = difficulty self.coordinate = coordinate self.enableInfoButton = enableInfoButton; super.init() } var subtitle: String? { return title } func annotationView() -> MKAnnotationView { let view = MKAnnotationView(annotation: self, reuseIdentifier: "trailPin") view.translatesAutoresizingMaskIntoConstraints = false view.enabled = true view.canShowCallout = true view.rightCalloutAccessoryView = UIButton(type: UIButtonType.Custom) view.centerOffset = CGPointMake(0, -32) if(difficulty == Difficulty.HARD){ view.image = UIImage(named: "ic_map_poi_trail_hard") } else if(difficulty == Difficulty.AVERAGE){ view.image = UIImage(named: "ic_map_poi_trail_average") } else if(difficulty == Difficulty.EASY){ view.image = UIImage(named: "ic_map_poi_trail_easy") } /*if(self.enableInfoButton){ let detailButton = UIButton(type: UIButtonType.System) as UIButton detailButton.frame.size.width = 35 detailButton.frame.size.height = 35 detailButton.backgroundColor = UIColor.whiteColor() detailButton.setImage(UIImage(named: "map"), forState: .Normal) detailButton.addTarget(self, action: #selector(Trail.infoClicked(_:)), forControlEvents: .TouchUpInside) view.leftCalloutAccessoryView = detailButton }*/ return view } func infoClicked(sender: AnyObject?) { print("infoClicked") }
}`
并在视图控制器中:
func mapView(mapView:MKMapView,viewForAnnotation annotation:MKAnnotation) – > MKAnnotationView? {
if (annotation.isKindOfClass(Trail)) { let customAnnotation = annotation as? Trail mapView.translatesAutoresizingMaskIntoConstraints = false var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("trailPin") as MKAnnotationView! if (annotationView == nil) { annotationView = customAnnotation?.annotationView() } else { annotationView.annotation = annotation; } //self.addBounceAnimationToView(annotationView) return annotationView } else { let reuseId = "trailPin" var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) if anView == nil { anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) anView!.image = UIImage(named:"map") anView!.canShowCallout = true } else { //we are re-using a view, update its annotation reference... anView!.annotation = annotation } return anView } }
谢谢=)
再见
我自己find了解决scheme,这是行:
view.translatesAutoresizingMaskIntoConstraints = false
我删除它,它的工作
- 滑动UITableViewCell
- 使用枚举管理TableView节以提高清晰度。
- 不要忘记注射和成分。 (迅捷4.2)
- 我可以更改我的iOS部署目标到5.0在xcode 4.5?
- 带有pageViewController iOS的SWRevealViewController panGestureRecognizer(滑动时的侧边菜单)
- 使用CAEmitterLayer在圆或CGPath周围绘制粒子
- iOS:Application Loader给出1069618639.itmsp错误和java.heap.spaceexception
- parsingiOS SDK:无法从数组中获取对象
- 升级到iOS 9和MobileFirst 7.1后无法在设备或模拟器上login应用程序