【发布时间】:2012-05-26 23:28:18
【问题描述】:
我正在尝试实现一个带有自定义按钮的自定义 MKAnnotationView。我不想使用 MKAnnotation 的标注属性,因为无法访问该视图的框架。相反,我使用 MKAnnotationView 视图来添加我的 UIView,其中包含我的自定义标注气泡。一切正常,即使是触摸也被按钮捕获。唯一的问题是调整 MKAnnotationView 框架的大小。我可以在我的自定义 MKAnnotationView 中的 (void)setSelected:(BOOL)selected animated:(BOOL)animated 方法中做到这一点,该方法是 MKAnnotationView 的子类,但是当调整大小的视图应该显示在 MapView 上时,只能通过放大或缩小地图来实现。我试过传递诸如needsLayout 和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);
}
}
【问题讨论】:
标签: objective-c ios mkannotation mkannotationview