我实现了一个扩展MKPinAnnotationView的类。我想在引脚下面绘制一些东西,我希望通过接管drawRect:rect消息来实现。我想通过先自己绘画然后链接到超类来做到这一点。
问题是此消息不会发送事件。我已经尝试将帧大小设置为非空或零(经典原因)而没有任何影响。 MKPinAnnotationView的实现是否会导致drawRect:rect消息不被发送到子类?
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface QueryAnnotationView : MKPinAnnotationView {
}
- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier;
@end
实施:
#import "QueryAnnotationView.h"
@implementation QueryAnnotationView
- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier;
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self)
{
self.frame = CGRectMake(0, 0, 65, 100);
}
return self;
}
- (void)drawRect:(CGRect)rect
{
NSLog(@"drawing my own stuff..");
[super drawRect:rect];
}
@end
答案 0 :(得分:2)
试试这个:
在(id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
在if(self)块的末尾添加这两行:
self.backgroundColor = any color but clear color (e.g. redColor)
self.backgroundColor = [UIColor clearColor];
这适用于我的代码,但我不知道为什么。
另外,你可以试试这个:
- (void)setAnnotation:(id <MKAnnotation>)annotation
{
[super setAnnotation:annotation];
[self setNeedsDisplay];
}