内部にカスタム ボタンがあるカスタム MKAnnotationView を実装しようとしています。そのビューのフレームにアクセスできないため、MKAnnotation の callout プロパティを使用したくありません。代わりに、MKAnnotationView ビューを使用して、UIView を追加し、カスタム コールアウト バブルを内部に配置しました。タッチがボタンによってキャプチャされても、すべてが正常に機能します。唯一の問題は、MKAnnotationView フレームのサイズを変更することです。MKAnnotationView をサブクラス化するカスタム MKAnnotationView 内の :(void)setSelected:(BOOL)selected animated:(BOOL)animated
メソッドの間にそれを行うことができますが、サイズ変更されたビューを MapView に表示する必要がある場合は、マップをズームインまたはズームアウトすることによってのみ達成されます。needsLayout
andなどを渡そうとしましneedsDisplay
たが、成功しませんでした。
私は何を間違っていますか?カスタム MKAnnotationView フレームを更新するために呼び出すことができるように、ズームインおよびズームアウトするときに MapView が呼び出すメソッドは何ですか?
私が作成した 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);
}
}