2011-06-27 5 views
3

ズームしたビュー(viewForZoomingInScrollView:scrollViewで返される)とズームされたビューにアノテーションを付ける多くの子を持つUIScrollViewがあり、常にズームしたビューの上に相対座標で配置する必要があります内部でアニメーションを作成中のUIScrollViewコールバック

UIScrollView 
    - zoomChild (size 100x100 at scale 1) 
    - Annotate Child (size 10x10), always placed at relative position (0.2, 0.2) of zoomChild's frame 

私はUIScrollViewをサブクラス化し、scrollViewDidZoom:をオーバーライドしました。私はこれがある限り、ユーザはscrollviewと相互作用していると正常に動作します

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    self.annotateChild.frame = CGRectMake(0.2*100*self.zoomScale, 0.2*100*self.zoomScale, 10, 10); 
} 

のような注釈の子を配置します。 scrollViewDidZoom:/ scrollViewDidScrollは:,しかし、とき

  • zoomBounce呼び出されていないようです:scrollviewがminZoomより小さく挟まれ、ユーザーは自分の指とscrollviewが戻っminScaleにアニメートリリース。 scrollViewDidZoom:アニメーションが完了したときに呼び出されますが、中には呼び出されません。

  • zoomToRectを使用してrectにズームする場合:animated:アニメーションが完了するまで、scrollViewDidZoom:は呼び出されません。

そこで質問はに沸く:どのように私は、これはいくつかの内部のアニメーションを経由して発生したときなど、いつでもself.zoomScaleの変化を、通知を受けることができますか?

また、アノテーションビューをサブビューとしてズームビューに追加することはできますか?どうにかスケールされていないことを確認してください。

ここ

答えて