2012-05-09 5 views
2

私はあなたがパン/写真アプリで画像をズーム正確に同じように動作しscrollViewを作成したい:UIScrollViewはズーム可能で、アスペクトに適合したコンテンツを実装できますか?

-Aの風景画像は縦長画面上にアスペクトフィット感で、

- あなたは、画像をズームすることができますあなたは(ランドスケープ)ズームデバイスを回転させる-if、

は、画像は、途中で

のまま - そしてあなたはピンを見るにはズームインしたときに、画像はまだ新しいランドスケープ画面のアスペクトフィット(随分フルスクリーン)であります。

私はアスペクトフィッティングとズーム機能を同時に必要とします。

私は解決策を実装しました。ここでは、layouSubviewsでscrollviewのコンテンツを「手作業で」レイアウトしてアスペクトに合わせることができますが、ズームの動作が妨げられます。

これを処理するためのきれいなUIKitの方法はありますか? ここに独自の実装を作成する必要がありますか?

+0

私は同じ問題があると思います。 –

答えて

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の)への参照を保持を前提としています。

+0

私はイメージを中央に配置したくないと思っています。しかし、主なポイントは縦横比を維持することです。つまり、ユーザーがデバイスを回すときにコンテンツのスケールが変わることを意味します。ちょうどフォトアプリを見てみましょう。 – Geri