2012-04-03 15 views
1

私はズームのscrollViewを使って、固定のアスペクト比で矩形に画像を切り抜くアプリケーションを使っています。私は、切り取られる画像の部分を暗くするマスクを持っています。現在、このサブビューをUIScrollViewの親に追加し、兄弟を作成します。このマスクは、スクロールビューよりも「高い」マスクです。素晴らしく見える。例外...UIScrollViewのスクロールインジケーターの下に非スクロールUIViewを配置するにはどうすればよいですか?

このマスクはscrollIndicatorsもマスクしているため、少しばかり見えます。私はscrollIndicatorsをオフにすることができます、または、理想的には、私はscrollIndicatorsの下にこのUIViewを配置したい、私は[scrollView addSubview経由でscrollviewのサブビュー: myMaskView];

これが可能なのは誰でも知っていますか?

答えて

0

まず、UIScrollViewをサブクラス化して、スクロールビューのデフォルト動作を変更できるようにします。

画像ビューで画像ビューを作成し、画像ビューとマスクビューの両方をスクロールビューに配置すると、ビューがスクロールインジケータの下に表示されます。

第3に、スクロールビューのデリゲートメソッドviewForZoomingInScrollView:で、画像ビューのみを戻すように画像ビューを戻します。スクロールビューはコンテンツサイズを返されたビューのサイズに調整しますが、画像ビューがコンテンツサイズ全体を占める限り、問題ありません。

最後に、layoutSubviewsメソッドをオーバーライドして、マスクビューをスクロールビューの表示可能な境界に移動します。 layoutSubviewsメソッドは、スクロールのすべてのフレームで呼び出されると言われているため、位置の変更はエンドユーザーには表示されません。

詳細については、WWDCセッションビデオ「Advanced ScrollView Techniques」を参照してください。

EDIT:OKをクリックすると、delegateメソッドscrollViewDidScrollを実装して、layoutSubviewsをオーバーライドできないことがわかりました。

関連する問題