取决于MKMapView的缩放级别,我需要重绘我的自定义MKAnnotationView。据我所知,我必须在地图控制器的下一个方法中执行此操作

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated


在此处删除注释,然后将注释添加到MKMapView,将强制使AnnotationView闪烁。
我如何以正确的方式做到这一点?

最佳答案

您无需将其删除并重新添加。只需在自定义注释视图上进行更改,然后调用setNeedsDisplay。例:

@interface AnnotationClusterView : MKAnnotationView {
@property (nonatomic, assign) int badgeNumber;
}
@implementation AnnotationClusterView
@synthesize badgeNumber;
// ...
- (void)drawRect:(CGRect)rect {
    NSString *string = [NSString stringWithFormat:@"%d",self.badgeNumber];
    [string drawInRect:stringRect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
}
@end


缩放更改时,获取对MKAnnotationView的引用,设置一个不同的badgeNumber,然后请求重绘,调用[myView setNeedsDisplay];。您可以对图像执行相同的操作。

关于iphone - 重画MKAnnotationView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5587087/

10-09 08:53