2

写真アプリで画像をパン/ズームするのとまったく同じように機能する scrollView を作成したいと思います。

- 横長の画像は、縦長の画面にアスペクト フィットします。

- 画像を拡大できます。

・デバイスをズーム(横)に回転させると画像が真ん中に残り、

-ズームバックすると、画像は新しい横画面 (全画面に引き伸ばされた画面) に収まります。

したがって、アスペクト フィットとズーム機能が同時に必要です。

私はスクロールビューのコンテンツをlayouSubviewsで「手動で」レイアウトしてアスペクトを合わせるソリューションを実装しましたが、それはズーム動作を妨げます。

これを処理するきちんとした UIKit の方法はありますか? または、ここで独自の実装を作成する必要がありますか?

4

1 に答える 1

0

ズームを有効にして (最小および最大ズーム スケールを設定)、scrollViewDidZoom を実装する必要があります。画像の中央揃えを処理する、開始するためのサンプル コードを次に示します。微調整して、他の部分を実行できます。

- (void)scrollViewDidZoom:(UIScrollView *)scrollView 
{
    CGSize boundsSize = scrollView.bounds.size;
    CGRect frameToCenter = imageView.frame;

    // center horizontally
    if (frameToCenter.size.width < boundsSize.width)
        frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
    else
        frameToCenter.origin.x = 0;

    // center vertically
    if (frameToCenter.size.height < boundsSize.height)
        frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
    else
        frameToCenter.origin.y = 0;

    imageView.frame = frameToCenter;
}

注: このコードは、UIScrollView で UIImageView (この例では imageView) への参照を保持していることを前提としています。

于 2012-05-09T00:58:24.913 に答える