大佬教程收集整理的这篇文章主要介绍了iphone – 自定义MKAnnotationView标注,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我无能为力。请帮忙。
我们无法创建自定义调用程序,但我们可以使用完全自定义的视图创建注释。所以诀窍是当选择第一个时添加第二个注释,并使第二个注释视图看起来像一个标注气泡。
这是@L_673_16@djibouti33和jacob-jennings在答案:MKAnnotationView – Lock custom annotation view to pin on location updates中发布的解决方案,后者又基于来自Asynchrony Solutions的blog post。为了说明的目的,这里是一些来自分叉项目的UML:
开始一个NSObject“Content”类,它有一个坐标,要使用的调出视图的类(在UML中是AnnotationView,但你可以创建更多并设置它们在这里),和一个随机值字典与标题,照片url等。使用这个类来初始化@L_835_0@mKAnnotation“Annotation”对象。
#import <MapKit/MapKit.h> @interface Content : NSObject @property (nonatomic,assign) CLLOCATIOnCoordinate2D coordinate; // ... @interface Annotation : NSObject <MKAnnotation,AnnotationProtocol> -(id) initWithContent:(Content*)content; // ...
Annotation实现AnnotationProtocol以宣布它想要处理它自己的MKAnnotationView的创建。也就是说,你的MKMapViewDelegate应该有这样的代码:
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)Annotation { // if this is a custom Annotation,delegate the implementation of the view if ([Annotation conformsToProtocol:@protocol(AnnotationProtocol)]) { return [((NSObject<AnnotationProtocol>*)Annotation) AnnotationViewInMap:mapView]; } else { // else,return a standard Annotation view // ... } }
返回的视图将是AnnotationView类型,它实现AnnotationViewProtocol以宣布它要处理选择/取消选择。因此,在您的地图视图控制器中,@L_714_32@mapView:didSELEctAnnotationView:和mapView:didDeSELEctAnnotationView:应该以类似的方式委托我们之前看到的。
当选择注释时,添加第二个注释(CalloutAnnotation),其遵循相同的行为,但是这次返回的视图(CalloutView)从XIB初始化,并包含Core Graphics代码(在BaseCalloutView中)以动画和复制大喊。
CalloutView类的初始化程序:
- (id)initWithAnnotation:(CalloutAnnotation*)Annotation { NSString *identifier = NSStringFromClass([self class]); self = [super initWithAnnotation:Annotation reusEIDentifier:identifier]; if (self!=nil){ [[NSBundle mainBundle] loadNibNamed:identifier owner:self options:nil]; // prevent the tap and double tap from reaching views underneath UITapGestureRecognizer *tapGestureRecognizer = ... } return self; }
为了能够从callout视图中推送另一个视图控制器,我使用了通知。
在顶部链接的SO答案包含两个完整的项目实现此代码(类名称可能不同)。我有另一个项目使用UML上面在https://github.com/j4n0/callout。
以上是大佬教程为你收集整理的iphone – 自定义MKAnnotationView标注全部内容,希望文章能够帮你解决iphone – 自定义MKAnnotationView标注所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。