1

大きな画像のダウンサイジングiOSサンプルコードに基づいて、画像が大きくなりすぎないように、UIScrollViewに最大ズームスケールを設定しようとしています。

UIScrollViewのmaximumZoomScaleネイティブプロパティは、ズームの拡大または縮小を許可するために、zoomScaleプロパティを参照することを理解しました。ただし、このサンプルコードでは、画像のスケールはカスタムfloat imageScaleで管理され、UIScrollViewのzoomScaleプロパティは常に1です。

このサンプルコードでは、最大ズームスケールがこの方法を使用して管理されていることがわかりました。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
    imageScale *=scale;
    if( imageScale < maximumScale ) imageScale = minimumScale; // THIS IS THE LINE WHO AVOID TO ZOOM TOO MUCH BUT IT MAKES A REALLY UGLY BEHAVIOUR

    CGRect imageRect = CGRectMake(0.0f,0.0f,CGImageGetWidth(image.CGImage) * imageScale,CGImageGetHeight(image.CGImage) * imageScale);
    // Create a new TiledImageView based on new frame and scaling.
    frontTiledView = [[TiledImageView alloc] initWithFrame:imageRect image:image scale:imageScale]; 
    [self addSubview:frontTiledView];
    [frontTiledView release];
}

したがって、UIScrollViewのネイティブソリューションと同じ動作をするソリューションを見つけることを期待しています。コードで変更するたびにzoomScaleをimageScaleの値に設定しようとしましたが、画像で奇妙な動作をするため、このメソッドを使用できません。

だから、私の質問は:

  • ズームスケール値と同じようにimageScaleを取得する必要があることをUIScrollViewに通知する方法はありますか?(おそらくネイティブメソッドをオーバーライドします)
  • スケールを最大値に制限する別の方法はありますか?
  • 最大スケールの代わりに最大サイズを定義する方法はありますか?

どうもありがとう !

4

1 に答える 1

2

私は順調に進んでいると思います!このコードは私の問題を解決しました!

if (imageScale > delegateAppli.params.zoomLevelAuthorized) self.maximumZoomScale = 1.0;
else self.maximumZoomScale = 1 + delegateAppli.params.zoomLevelAuthorized - imageScale;

私の答えが他の人に役立つことを願っています...

于 2012-12-30T15:12:35.703 に答える