大きな画像のダウンサイジング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に通知する方法はありますか?(おそらくネイティブメソッドをオーバーライドします)
- スケールを最大値に制限する別の方法はありますか?
- 最大スケールの代わりに最大サイズを定義する方法はありますか?
どうもありがとう !