2016-05-06 12 views
0

インターネットから画像をダウンロードし、UIImageViewオブジェクトにaspectFitをcontentModeとして割り当てると、[myImageView setImageWithURL:aURL]のようになります。UIImageViewをサイズ変更して「アスペクトフィッティング」画像をラップします

しかし、縦横比はイメージのサイズを変更し、ビューの境界内で中央に配置します。言い換えれば、画像の幅が高さよりも大きい場合、UIImageViewの下端と画像自体の間にスペースがあります。

ここでは、イメージの下にスペースを置かずにラベルを挿入します。これはどのように達成できますか?私たちはあらかじめ画像のサイズを変更してからImageViewフレームを設定することができますが、画像のソースはURLであるため、画像を最初にダウンロードする必要があります(すでにUIImageViewカテゴリで実装されているコード)。

UIImageViewにresizedImageの周りを「ラップする」ように指示する方法はありますか、それとも制約によってこの効果を達成する方法がありますか?

ありがとうございました

答えて

3

制約がこれを処理する必要があります。あなたのUIImageViewは左辺に制約があることを確認してください。&右辺(また、私が推測するように)と高さに制約はありません。あなたのUILabelの場合は、UIImageViewの上端から下端までの制約が必要です(そして、水平の制約があればそれに関係なく)。

1

cbigginあなたはそのための自動レイアウトを使用することができると述べたが、これはその

ショーの読み込みを行うと、非同期スレッドでこのコードを実行するための別の方法であるとして:

NSData *imageData = [NSData dataWithContentsOfURL:imageUrl]; 

を画像データが使用これをダウンロードした後、コード画像の幅と高さ

UIImage *image = [UIImage imageWithData:imageData]; 
NSLog(@'image height: %f',image.size.height); 
NSLog(@'image width: %f',image.size.width); 

を取得すると、あなたのUIImageViewの幅は320であり、あなたの画像サイズが102である場合には、例えば、あなたのUIImageViewの高さを計算することができます4x768 ImageViewの高さは、あなたがimageViewHeight

を使用することができます240

float imageViewHeight = imageView.frame.size.width/image.size.width * image.size.height 

になります

関連する問題