1

私は次のシナリオを持っています: - 画像 (カメラ写真として撮影) - 画像は UIImageView に埋め込まれています - 画像ビューは UIScrollView に埋め込まれています

ズームとパンに成功しました。私が今やりたいことは、ユーザーが画像の一部をズームインしたときに、そのズームを UIImageView 内の唯一のものであるかのように扱うことができるようにすることです。私は彼らが再びズームアウトできるようにしたいので、元の画像を失いたくありません(私が見た画像をトリミングする答えを捨てます).

今起こっていることは、ズームを実行できるということですが、ズームされた画像は、ユーザーがズームした場所ではなく、画像の左上隅をズームインしたかのように 0,0 まで押し込まれます。

scrollViewDidEndZooming にはあまりありませんが、そこにコードを配置すると想定しています。私は次のようなことをしています:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    CGFloat zoomReciprocal = 1.0f / scale;

    CGPoint offset = CGPointMake(imageHolder.image.size.width * ((1.0f - zoomReciprocal) / 2.0f), imageHolder.image.size.height * ((1.0f - zoomReciprocal) / 2.0f));
    CGRect croppedRect = CGRectMake(offset.x, offset.y, imageHolder.image.size.width * zoomReciprocal, imageHolder.image.size.height * zoomReciprocal);

    //and have tried things like:
    //[imageHolder.image drawInRect:croppedRect];
    //scrollView.contentSize = [self maximumUsableFrame].size;
    //scrollView.contentOffset = offset;
}

私がやりたいことは、基本的に画像の一部にズームインし、残りのメソッドにそれが現在の画像であると思わせることです。アイデアや指針はありますか?

4

0 に答える 0