私はプログラムで宣言されたイメージビューを持っており、プログラムでもイメージを設定しています。UIImageView aspect fit and center
しかし、イメージをアスペクトに合うように設定できず、中心をイメージビューに合わせることができません。言い換えれば
、私がイメージしたい:画像が大きい場合には、側面にフィットするように
- スケールダウン。
- 画像が小さい場合は中央ですがスケールアップしません。
どうすれば入手できますか?ただ、解決策を貼り付ける
私はプログラムで宣言されたイメージビューを持っており、プログラムでもイメージを設定しています。UIImageView aspect fit and center
しかし、イメージをアスペクトに合うように設定できず、中心をイメージビューに合わせることができません。言い換えれば
、私がイメージしたい:画像が大きい場合には、側面にフィットするように
どうすれば入手できますか?ただ、解決策を貼り付ける
:
@manoharが
imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
imageView.contentMode = UIViewContentModeScaleAspectFit;
}
言ったと同じようには私の問題UIViewContentModeScaleAspectFit
にImageViewののcontentModeを設定
画像を見つける方法がより短くなる:CGRectContainsRect(imageView.bounds、{CGPointZero、image.size}) ' – Cfr
@Cfrこれは短いかもしれないが、読みにくいかもしれない。同時に、私はif文で次のように行を分割することを提案します:CGSize imageSize =((UIImage *)imagesArray [i])size; CGSize viewSize = imageView.bounds.size'、if(viewSize .width> imageSize.width && viewSize.height> imageSize.height){'。 –
UIViewContentModeScaleAspectFitにする必要があります – NoelHunter
は私のために十分だっ解決しました。画像も同様に中央に表示されます。なぜ他の人がイメージに基づいてロジックを使用しているのか分かりません。また、この質問を参照してください:iOS aspect fit and center
迅速な言語での我々として次のようにUIImageビューの内容モードを設定することができます。私はこのようにこの問題を解決し
let newImgThumb = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
newImgThumb.contentMode = .scaleAspectFit
。 (UIViewContentModeScaleAspectFit
付き)UIImageView
へ
(CGSize imageSize = imageView.image.size)
UIImageView
リサイズを取得します。 [imageView sizeThatFits:imageSize]
UIViewをUICollectionViewCell
の上の中央に配置したいと考えました。 この関数を使用しました。
- (void)setImageToCenter:(UIImageView *)imageView
{
CGSize imageSize = imageView.image.size;
[imageView sizeThatFits:imageSize];
CGPoint imageViewCenter = imageView.center;
imageViewCenter.x = CGRectGetMidX(self.contentView.frame);
[imageView setCenter:imageViewCenter];
}
私のために働きます。
イメージビューのコンテンツモードをUIViewContentModeScaleAspectFillに設定すると、これを実現できます。
次に、次のメソッドメソッドを使用して、サイズ変更されたuiimageオブジェクトを取得します。 (スウィフト版)ここで編集
- (UIImage*)setProfileImage:(UIImage *)imageToResize onImageView:(UIImageView *)imageView
{
CGFloat width = imageToResize.size.width;
CGFloat height = imageToResize.size.height;
float scaleFactor;
if(width > height)
{
scaleFactor = imageView.frame.size.height/height;
}
else
{
scaleFactor = imageView.frame.size.width/width;
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width * scaleFactor, height * scaleFactor), NO, 0.0);
[imageToResize drawInRect:CGRectMake(0, 0, width * scaleFactor, height * scaleFactor)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
func setProfileImage(imageToResize: UIImage, onImageView: UIImageView) -> UIImage
{
let width = imageToResize.size.width
let height = imageToResize.size.height
var scaleFactor: CGFloat
if(width > height)
{
scaleFactor = onImageView.frame.size.height/height;
}
else
{
scaleFactor = onImageView.frame.size.width/width;
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width * scaleFactor, height * scaleFactor), false, 0.0)
imageToResize.drawInRect(CGRectMake(0, 0, width * scaleFactor, height * scaleFactor))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resizedImage;
}
let bannerImageView = UIImageView();
bannerImageView.contentMode = .ScaleAspectFit;
bannerImageView.frame = CGRectMake(cftX, cftY, ViewWidth, scrollHeight);
画像がビューよりも大きくない場合、このサブクラスが中心を使用するが、それ以外の場合は縮小します。これはサイズを変更するUIImageView
で役に立ちました。
表示されるイメージは、大きなサイズのビューよりも小さく、小さいサイズのビューよりも大きくなります。私はそれをスケールダウンするだけですが、上にはしません。
class CenterScaleToFitImageView: UIImageView {
override var bounds: CGRect {
didSet {
adjustContentMode()
}
}
override var image: UIImage? {
didSet {
adjustContentMode()
}
}
func adjustContentMode() {
guard let image = image else {
return
}
if image.size.width > bounds.size.width ||
image.size.height > bounds.size.height {
contentMode = .ScaleAspectFit
} else {
contentMode = .Center
}
}
}
[yourImageView setContentMode:UIViewContentModeCenter]; imageView Frameが画像フレームよりも大きいかどうかを確認してください。そうでなければ[yourImageView setContentMode:UIViewContentModeAspectToFit]; –
if else condition dude @RyanPoolos –