私はUIImageView(StoryBoard上)を追加し、UIScrollViewにUIImageViewを埋め込んだカスタムUIViewControllerを持っています。私のプログラムはイメージをimageViewにロードし、それを適切にフィットするように拡大します。画像のアスペクト比が正確にそうでなければ、スクロールバー オートローテーションでUIScrollViewのzoomScaleプロパティをリセットする
- :適切なフィットすることで、私はこのことを意味しますもう一方の次元のスクロールバーを使用して、1つの次元に正確に収まるようにスケーリングされます。
私は現在viewWillAppearでこれを行います。私はiPhoneを横または縦向きであるかどうか、画像の初期ロードすることを目的として
-(float) findZoomScale {
float widthRatio = self.view.bounds.size.width/self.imageView.image.size.width;
float heightRatio = self.view.bounds.size.height/self.imageView.image.size.height;
float ratio;
if (widthRatio > heightRatio) ratio = widthRatio;
else ratio = heightRatio;
return ratio;
}
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
self.imageView.image = self.image;
self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
self.scrollView.contentSize = self.imageView.image.size;
self.scrollView.zoomScale = [self findZoomScale];
[self.scrollView flashScrollIndicators];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:self.photoURL]];
self.imageView.image = self.image;
self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width,
self.imageView.image.size.height);
self.scrollView.delegate = self;
self.scrollView.zoomScale = 1.0;
self.navigationItem.title = self.photoTitle;
self.scrollView.autoresizesSubviews = YES;
self.scrollView.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin |
UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
}
このコードは動作します。以下はその方法や正しいzoomScaleを計算補助方法のための私のコードです。しかし、すでに読み込まれた画像でiPhoneを回転させると、正しく再スケールされません。 didRotateFromInterfaceOrientationでrescalingを行い、scrollViewのzoomScaleプロパティで再生しようとしましたが、動作させることができません。これは再スケーリングを行う正しい場所ですか?もしそうなら、どうしたらいいですか?ありがとう。
デュアン
それは私を助けました。ありがとう:0 –