Подтвердить что ты не робот

Как остановить изображение от растяжения в UIImageView?

У меня есть UIImageView, где я установил размер кадра x = 0, y = 0, width = 404, height = 712. В моем проекте мне нужно изменить изображение в UIImageView динамически.

Я использую этот код для изменения изображения:

self.imageView.image = [UIImage imageNamed:@"setting-image.png"];

Проблема заключается в том, что размер *.png меньше размера кадра UIImageView, изображение растягивается. Я не хочу, чтобы он растягивался. Есть ли способ сделать это?

4b9b3361

Ответ 1

Ты можешь использовать

self.imageView.contentMode = UIViewContentModeScaleAspectFit;

Свифт 3:

imageView.contentMode = .scaleAspectFit

Или UIViewContentModeCenter/.center, или любой другой режим, описанный в документации UIView.

Ответ 2

Настройка клипов в сочетании с UIViewContentModeScaleAspectFit contentMode была для меня трюком. Надеюсь, что кто-то поможет!

imageView.clipsToBounds = YES;
imageView.contentMode = UIViewContentModeScaleAspectFit;

Ответ 3

Используйте свойство contentMode. Вероятно, вы хотите либо UIViewContentModeScaleAspectFit, либо UIViewContentModeCenter.

Ответ 4

Измените режим UIImage с "scale to fill" на "Center" в построителе интерфейса. Убедитесь, что ваше изображение - точный размер, который вам нужен.

enter image description here

Ответ 5

Вы должны установить CGSize как ширину и высоту изображения, чтобы изображение не растягивалось, и оно будет расположено в середине изображения.

- (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size
{
    CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height);
    CGFloat width = image.size.width * scale;
    CGFloat height = image.size.height * scale;
    CGRect imageRect = CGRectMake((size.width - width)/2.0f,
                                  (size.height - height)/2.0f,
                                  width,
                                  height);

    UIGraphicsBeginImageContextWithOptions(size, NO, 0);
    [image drawInRect:imageRect];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

Ответ 6

Обновление для Swift 3:

imageView.contentMode = .scaleAspectFit

Ответ 7

Измените contentMode, например:

imageView.contentMode = UIViewContentModeScaleAspectFit;

Ответ 8

Как использовать оригинальный размер изображения - без растягивания

  • Просто измените режим UIImage с scale to fill на Aspect Fit внутри построителя интерфейса.

enter image description here

Ответ 9

Используйте это для UIImageView

imageView.contentMode = UIViewContentModeScaleAspectFill;

Вы не получите никакого пространства и сохраните масштаб. Однако часть изображения будет отсечена.

Если вы используете следующее:

imageView.contentMode = UIViewContentModeScaleAspectFit;

Будет пустое пространство, но масштаб сохраняется.

Ответ 10

все еще растягивается, когда изображение больше, чем изображение

быстры

    let qCodeImage = UIImage(named: "qcode-placeholder.png")!      
    let qCodeImageView = UIImageView(frame: CGRectMake(0, 0, CGRectGetWidth(cardView.frame)-30, CGRectGetWidth(cardView.frame)-30))
    qCodeImageView.image = qCodeImage
    qCodeImageView.clipsToBounds = true
    qCodeImageView.contentMode = UIViewContentMode.ScaleToFill
    qCodeImageView.center = cardView.center