2016-04-06 6 views
1

以下のようなレイアウトです。ビューコントローラの半分(白いもの)を要するビュー内のイメージビュー。画像ビューは、上下の余白を考慮してコンテナを塗りつぶします。私は、アスペクトに合わせてイメージビューにスケールモードを設定しました。このすべてが、私が望む正確な視覚効果を私に与えます。側面にフィットし、それが可能なの一部だけを取る(私も画像ビュー上にインストールジェスチャー認識をタップしてきた、と私はそれだけで、実際の画像が表示される領域にタップを検出したいしかしAspectFitスケールモードでUIImageViewのタップを正しく検出する方法

enter image description here

スペース)。画像自体が動的に変更されるため、どのアスペクト比にするか分かりません。これを達成する最も簡単な方法は何でしょうか?

私は画像ビューでtraililnigと先行する制約を取り除かなければならないと思いますが、次に何がありますか?

+1

あなたがしたいと思う[画像はイメージビュー内で占有するという枠を計算](http://stackoverflow.com/a/35510271/2976878)とのみその矩形内のタップに対応しています。 – Hamish

+0

ええ、タップが画像の領域内にあるかどうかを計算することが私の最初の考えでした。しかし、これはかなり一般的な問題であるように私はいくつかの簡単な解決策を数えました。しかし、より良い選択肢がない場合... – Wujo

答えて

0

UIImageUIImageViewに設定した後、frameUIImageViewに更新します。チェックリンク上記

How to make UIImageView automatically resize to the size of the image loaded

+0

フレームをプログラマチックに唯一のオプションに変更していますか?私はそれが何とか自動レイアウトを使って達成できると思った。 – Wujo

+0

私にはない。イメージごとにイメージビューのフレームを設定する必要があります。 –

0

まず、画像のサイズを見つけ、ImageViewのフレームを更新します。画像のサイズと要件に応じて、xとyの位置を設定します。

UIImageView *myImageView = [[UIImageView alloc]init]; 
UIImage *img = [UIImage imageNamed:@"draft"]; 

CGSize mySize = [img size]; 

CGRect newFrame=CGRectMake(0, 0, mySize.width, mySize.height); 
NSLog(@"height : %f width : %f",mySize.height,mySize.width); 

myImageView.frame = newFrame; 
myImageView.image = img; 
+0

正確ではありません。この方法では、イメージはコンテナに収まりません。しかし、適切なサイズを計算するのは非常に簡単ですが、プログラムでフレームを修正するのを避けたいと考えていました。 – Wujo

+1

フレームを更新する必要があります。他の選択肢はありません。イメージを中央に保持したい場合は、(self.view.frame.size.width/2) - (imageView.frame.size.width/2)をxの値として使用し、それに応じてyを設定します。 – Lion

+0

ありがとう、ありがとう。この場合、タップが実際のイメージの領域内にあるかどうかを計算し、後ろおよび先頭の余白を残します。 – Wujo

関連する問題