没有在MKPinAnnotationView子类上调用drawRect

| 我实现了一个扩展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
    
已邀请:
尝试这个: 在你的
(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];
}
    

要回复问题请先登录注册