2

ユーザーが画像をズームインおよびズームアウトできるようにする単純なコントロールを実装しようとしています。UIScrollView 内に UIImageView があります。さらに、ユーザーがズームアウトして、画像の幅または高さがスクロールビューのサイズよりも小さくなるのを防ぎたいと思います。ここに問題があります。minimumZoomScale を適切なサイズに設定すると、画像がおかしな場所に表示されます。スクロール ビューとイメージ ビューを構成するコードは次のとおりです。

- (void)openNewImage:(UIImage *)image
{
    _originalImage = image;

    // Reset scroll view's zoom scales
    // (must be reset before setting the image to the image view)
    self.imageScrollView.zoomScale = 1.0f;
    self.imageScrollView.minimumZoomScale = 0.01f;

    // Set scroll view's content size to allow scrolling
    self.imageScrollView.contentOffset = CGPointZero;
    self.imageScrollView.contentSize = image.size;

    // Set image and resize image view to image size
    self.imageView.image = _originalImage;
    self.imageView.frame =
        CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);

    [self.imageScrollView zoomToRect:self.imageView.frame animated:YES];
    self.imageScrollView.minimumZoomScale = self.imageScrollView.zoomScale;
}

最後の行は、コメントアウトすると本来あるべき場所に表示されますが、ユーザーがズームアウトしすぎる可能性があるため、問題が発生しています。問題をデバッグしようとしているときに、最後の行により、画像ビューのフレーム原点が 0 ではなく、-1.11015e-06 のような非常に小さな負の数に変更されることがわかりました。最後の行をコメントアウトすると、画像ビューのフレームorigin は 0 です。その小さな負の数は事実上 0 ですが、どういうわけかこれが問題を引き起こしているのでしょうか。

4

0 に答える 0