高さ

2012-01-13 2 views
1
私は次のコードを持っている

変更する際に比例UIImageViewの幅を調整する:高さ

UIImageView * imgView = [[UIImageView alloc] initWithImage:image]; 

NSLog(@"IMAGE SIZE WIDTH IS %f AND HEIGHT IS %f", imgView.frame.size.width, imgView.frame.size.height); 

[imgView setUserInteractionEnabled:YES]; 
[imgView setContentMode:UIViewContentModeScaleAspectFit]; 

CGRect frame = imgView.frame; 
frame.size.width = SCREEN_WIDTH_PORTRAIT; 
[imgView setFrame: frame]; 

しかし、このビューの高さがそれに応じて変化しなかったが、何が間違っているのですか?

答えて

0

ビュー自体の内容ではなく、ビューの内容を拡大縮小するように指示しています。これを行うには、幅と高さの両方を設定する必要があります。自動的に方向を切り替えたとき、それは伸びるようになります

imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight; 

あなたがちょうどしかし、あなたはUIViewAutoresizingMaskを使用して、このようにそれを設定することができ、向きの変化に合わせて拡張しようとしている場合。

編集: はここでは、高さを変更し、比率を維持し、新しいフレームにアニメーション化します方法は次のとおりです。

CGRect frame = imgView.frame; 
float ratio = frame.size.width/SCREEN_WIDTH_PORTRAIT; 
frame.size.width = SCREEN_WIDTH_PORTRAIT; 
frame.size.height *= ratio; 
[UIView animateWithDuration:.25 animations:^{ 
    [imgView setFrame: frame];    
}]; 
+0

うーん...それで、自分で縮尺を変える方法はありませんか? – xonegirlz

+0

UIViewの幅を明示的に設定しても、UIViewの高さには影響しません。たぶん、より多くのコードを使用して表示する場合、私はあなたが提供しているよりも良い解決策を与えることができます。 –

+0

私はUIImageViewをアニメーション化して幅がより大きくなるようにしようとしていますが、比例的に大きくなります。それはすべてです – xonegirlz

0

あなただけ変化していると画像が同じ高さでフレームにフィットします幅。したがって、画像のアスペクト比によっては、画像のサイズが変更されないことがあります。あなたは、UIImageのアスペクト比を決定し、次に新しい幅でそれから高さを計算することができます。