gpt4 book ai didi

objective-c - 更改 MKMapKit MKAnnotation 子类中的图像

转载 作者:行者123 更新时间:2023-11-29 04:32:29 26 4
gpt4 key购买 nike

我在更改 MKAnnotationView 子类内部的 ImageView 时遇到一些问题。我有一个计时器,可以根据有关用户在某个点的位置的数据来更新注释位置。这工作正常并且注释位置已正确更新。我使用以下代码执行此操作:

[_myAnnotation setCooperative:point.position];

在此之下,我还计算用户是向东还是向西行驶。如果用户向东行驶,我会调用 MyAnnotation 类上的 setIsMovingRight:YES 方法,并在用户向西行驶时执行相反的操作。

我已经验证了该方法是否在正确的时间使用正确的值调用,方法是在方法内使用 NSLog 来在值发生变化时打印出来。但是,setIsMovingRight 方法似乎对注释的视觉外观没有任何影响。我尝试在调用该方法时将 imageview 的背景颜色设置为红色,但即使这样也没有效果。我尝试在各个地方调用 setNeedsDisplay 但没有成功。

我可以添加并重新创建注释 View ,但是只要位置发生变化,注释就会闪烁,而且看起来确实不太好。

以下是我的自定义注释 View “MyAnnotation”的代码。

@interface MyAnnotation : MKAnnotationView <MKAnnotation>
{
UIImageView *_imageView;
BOOL _currentlyMovingRight;
}

@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;

@property (nonatomic,retain) UIImage *image;

-(void)setIsMovingRight:(BOOL)movingRight;

@end

@implementation MyAnnotation

@synthesize coordinate, title, subtitle, image;

-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if(self)
{
_currentlyMovingRight = NO;
_imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"right.png"]];
[self addSubview:_imageView];
}
return self;
}

-(void)setIsMovingRight:(BOOL)movingRight
{
_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[_imageView setBackgroundColor:[UIColor redColor]]; // THIS LINE NEVER DOES ANYTHING.

if(movingRight && !_currentlyMovingRight)
{
NSLog(@"right now.");
[_imageView setImage:[UIImage imageNamed:@"right.png"]];
}
else if (!movingRight && _currentlyMovingRight)
{
NSLog(@"left now.");
[_imageView setImage:[UIImage imageNamed:@"left.png"]];
}
_currentlyMovingRight = movingRight;

[self addSubview:_imageView];
[self setNeedsDisplay];
}

如果有人能提供任何帮助或建议,我将不胜感激。谢谢!

最佳答案

我认为注释 View 使用 KVO 来监听更改。您是否尝试过更改 image 属性?类似于 [self setImage:myNewImage]

关于objective-c - 更改 MKMapKit MKAnnotation 子类中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com