Изменить высоту 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;
}