Изменить высоту UIImageView на высоту изображения?

У меня настроен UIImageView, который будет отображать изображение, определяемое тем, что пользователь выбрал в предыдущем представлении таблицы.

Вот как я сейчас показываю свои изображения:

if ([_TitleLabel.text isEqualToString:@"Dog"]) {
    UIImage *image = [UIImage imageNamed:@"Dog.png"];
    [imageView setImage:image];
}

Последующие операторы if отображают различные изображения для другого животного.

Эти изображения должны быть разной высоты, и мне нужно сохранять их пропорциональность. Ширина всех изображений составляет 320 пунктов. Высоты варьируются от 1000 до 2500 пунктов. Все изображения расположены локально в проекте. Я хочу, чтобы высота UIImageView изменилась на высоту изображения, которая соответствует животному, выбранному пользователем. Есть идеи?

2 ответа

Решение

Вы можете обновить ширину и высоту кадра imageView, используя ширину и высоту UIImage, например так:

if ([_TitleLabel.text isEqualToString:@"Dog"]) {
    UIImage *image = [UIImage imageNamed:@"Dog.png"];
    [imageView setImage:image];

    // update image view frame width and height.
    imageView.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y, image.size.width, image.size.height);
}

Замечания:

С помощью UIViewContentModeScaleAspectFit оставит пространство между вашим изображением и границей UIImageView, если изображение отличается от соотношения сторон вашего фрейма UIImageView, что, скорее всего, не то, что вы хотите.

Не будет UIViewContentModeScaleAspectFill помогите, ваше изображение станет усеченным в рамках вашего imageView.

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;
}
Другие вопросы по тегам