UIImageViewよりも大きな画像を持つiOSアプリを作成しています。これらの画像をスケーリングして、画像の高さが画像ビューの高さと同じになるようにします。画像が 2 つの側面で切り取られる代わりに、一方だけが切り取られます。UIImages をスケーリングするにはどうすればよいですか? UIViewContentModeScaleAspectFit は最長の端に収まるので、画像全体が画面に表示されますが、最長の端ではなく高さに合わせたいです。
3389 次
3 に答える
1
欲しいものを手に入れる方法は次のとおりです。
// Set image view to clip to bounds
self.imageView.clipToBounds = YES;
// Calculate aspect ratio of image
CGFloat ar1 = self.imageView.image.size.width / self.imageView.image.size.height;
// Calculate aspect ratio of image view
CGFloat ar2 = self.imageView.frame.size.width / self.imageView.frame.size.height;
// Set fill mode accordingly
if (ar1 > ar2) {
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
} else {
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
}
于 2013-08-13T19:35:19.407 に答える
1
高さだけを画像ビューに正確に合わせたい場合は、適切な幅の比率を見つけるために少し計算する必要があります。これを試して:
float maxHeight = 480.0f; //this is the height of your container view.
float origHeight = imageView.frame.size.height;
float origWidth = imageView.frame.size.width;
//at this point we can create a proportion.
//origHeight / origWidth = maxHeight / X (where X = the new width)
//divide the expression by maxHeight and you can solve for the new width:
float newWidth = (origHeight / origWidth) / maxHeight;
この時点で、画像を作成するために必要なサイズが用意されています。常に高さを maxHeight にしたいと考えており、高さ = maxHeight の場合に元の画像サイズに比例する新しい幅を見つけるために計算を行いました。
UIImageViewのサイズを変更する方法については、StackOverflow のこちらの回答をご覧ください。その高さと幅をその回答の関数に渡します。そして、すべてがうまくいくはずです!
于 2013-08-13T18:59:57.163 に答える