2012-05-09 6 views
2

У меня есть изображение, которое (взято с нашего сервера), я хочу разместить в UIImageView. Изображение - 373x500. UIImageView составляет 443x290, а вид растягивает его.Изображение растягивается

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 
                     0, 
                     500, 
                     300)]; 

myImageView.image = [UIImage imageWithData:photoData]; 
myImageView.backgroundColor = [UIColor viewBackgroundColor]; 
myImageView.contentMode = UIViewContentModeScaleAspectFit; 

NSLog(@"myImageView.image.size: %@", NSStringFromCGSize(myImageView.image.size)); 
NSLog(@"myImageView.frame.size: %@", NSStringFromCGSize(myImageView.frame.size)); 

[wrapperView addSubview:myImageView]; 

журнал гласит:

2012-05-09 11:32:52.621[89145:1a303] myImageView.image.size: {373, 500} 
2012-05-09 11:32:52.622[89145:1a303] myImageView.frame.size: {443, 290} 

выглядит следующим образом:

enter image description here

не должен "UIViewContentModeScaleAspectFit" сказать ему, чтобы держать его отношение и не растягивать изображение?

+0

Имея такой же вопрос сейчас, никогда не было проблем раньше с contentMode раньше: S – Nuthinking

ответ

1

Вы должны установить clipsToBounds = YES на вид.

+0

добавил он, все еще потягиваясь. – Padin215

0

UIViewContentModeScaleAspectFit будет шкала изображение (как следует из названия), чтобы соответствовать пропорции вашего вида. Если вы не хотите, чтобы оно масштабировало изображение, используйте UIViewContentModeCenter, и оно просто поместит изображение в его собственном размере в центр обзора.

+3

imageView.contentMode = UIViewContentModeScaleAspectFit; –

+0

Это неправда, по крайней мере, на данный момент это не так, или, по крайней мере, то, что кажется вам подразумевающим, неверно. Изображение масштабируется, но сохраняется соотношение сторон исходного изображения. В документации «Возможность масштабирования содержимого в соответствии с размером представления, поддерживая пропорции. Любая оставшаяся область границ обзора прозрачна» – Mike

0

Что это исправил для меня была установка режима содержания перед установкой рамы ...

UIImageView *imageView = [UIImageView new]; 
imageView.myImage; 
imageView.contentMode = UIViewContentModeScaleAspectFit; 
imageView.frame = CGRectMake(...); 
[self.view addSubiew:imageView]; 
Смежные вопросы