2011-03-23 12 views
0

zoomToRect関数に問題があります。私はビューを含むスクロールビューを持っています。ユーザーがビューをクリックすると、ビューがズームインされます。フレームのy位置が2389より大きい場合、関数は対応するフレームを2389のy位置にズームします。zoomToRect strange behavior

-(void) launchZoomInAnimationInView:(UIView*) cellView; { 
    // Get the rect corresponding to the clicked cell 
    CGRect zoomedFrame = [self.zoomScrollView convertRect:cellView.frame fromView:cellView.superview]; 

    // Zoom to the rect 
    [self.zoomScrollView zoomToRect:zoomedFrame animated:YES]; 

    // Display for debugging 
    [ViewToolkit showFrame:zoomedFrame inView:self.zoomScrollView]; 
    NSLog (@"Zoom on frame %@ with contentSize %f", NSStringFromCGRect(zoomedFrame), self.zoomScrollView.contentSize.height); 
} 

機能showframe私は算出したフレームが正しい位置(I、画面上の赤い長方形を表示)であることを私に示しています。ここ

私は使用のコードです。

のNSLogは、コンテンツのサイズが十分に高いことを示している:

ズームcontentSize 10337.759766有するフレーム{{100、3021.6}、{230.4、307.2}}に。アニメーションの終了時

、IはscrollViewの境界を表示し、それは代わりに、{{768 1024}、{100、}}私を与える{{100、3021.6} 、{768、1024}} 私は本当にそれを取得しません。 2389を超える値の場合、私はいつも2389のy位置の終了フレームを取得します。 contentSizeが異なると、この値は変更されません。

この関数を起動する前に、私はscrollViewのzoomScaleを変更しなかったことに注意してください。

答えて

0

この問題は、scrollViewの子を返すと思われる間にscrollview自体を返すviewForZoomingInScrollView関数によるものです。 https://devforums.apple.com/message/406487

アップルのフォーラムでの議論によると、私たちがviewForZoomingInScrollViewでscrollViewを返すことはありませんアップルのAPIのバグがあるようです。

は、ここに完全な答えを参照してください。