現時点では、この設定 (たとえば UIImageView で) は の中心を の中心に保ち、UIImage
境界UIImageView
を超えるエッジを両側で均等に「トリミング」します。
これをまったく変更する方法はありますか?
たとえば、 の上端UIImage
を の上端と一直線に並べて、UIImageView
拡大縮小時に下端だけをトリミングしたい場合など...
現時点では、この設定 (たとえば UIImageView で) は の中心を の中心に保ち、UIImage
境界UIImageView
を超えるエッジを両側で均等に「トリミング」します。
これをまったく変更する方法はありますか?
たとえば、 の上端UIImage
を の上端と一直線に並べて、UIImageView
拡大縮小時に下端だけをトリミングしたい場合など...
1 つの方法は、UIImageView の自動スケーリング (UIViewContentModeScaleAspectFit または UIViewContentModeScaleAspectFill を使用してアスペクトが正しく維持されるようにする) を使用し続け、レイヤー マスクを適用して不要な部分を削除することです。
または(これが私がすることです)、自分で目的のトリミングで画像を描くだけです。
たとえば、画像をcontents
レイヤーとして設定し、次にレイヤーを設定しますcontentsRect
(これにより、画像のどの領域がレイヤーのコンテンツとして表示されるかが決定されます)、およびcontentsGravity
(これにより、画像がレイヤーの境界に固定/スケーリングされる方法が決定されます)。これらの値はリアルタイムで変更できます (さらにアニメーション化されます)。
または、トリミングしたバージョンが必要な場合は、新しい画像グラフィック コンテキストを作成し、適切な領域が適切な方法でコンテキストと重なるように画像を再配置して描画し、結果の画像を引き出して表示します。