我正在尝试使用内部自定义按钮实现自定义 MKAnnotationView。我不想使用 MKAnnotation 的标注属性,因为无法访问该视图的框架。相反,我使用 MKAnnotationView 视图来添加我的 UIView,其中包含我的自定义标注气泡。一切正常,即使是触摸也被按钮捕获。唯一的问题是调整 MKAnnotationView 框架的大小。我可以(void)setSelected:(BOOL)selected animated:(BOOL)animated
在我的自定义 MKAnnotationView 中的子类 MKAnnotationView 的方法中做到这一点,但是当调整大小的视图应该显示在 MapView 上时,这只能通过放大或缩小地图来实现。我尝试过传递诸如needsLayout
and之类的东西,needsDisplay
但没有成功。
我究竟做错了什么?MapView在放大和缩小时调用的方法是什么,所以我可以调用它来刷新自定义的MKAnnotationView框架?
下面是我创建的 CustomMKAnnotationView 类的一些代码:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated{
[super setSelected:selected animated:animated];
if (selected) {
self.frame = CGRectMake(0, 0, 170, 66);
self.backgroundColor = [UIColor lightTextColor];
self.centerOffset = CGPointMake(54.5, -33);
self.image = nil;
[self createBubble];
[self animateIn];
[self addSubview:bubbleView];
}else{
[bubbleView removeFromSuperview];
self.frame = CGRectMake(0, 0, 13, 17);
self.centerOffset = CGPointMake(0, 0);
}
}