Изображение iPhone растянуто по всему изображению

- (void)viewDidLoad
{
  UIImage *image = [UIImage imageNamed:@"moon"];
  CGSize size = CGSizeMake(256, 256);
  UIGraphicsBeginImageContextWithOptions(size, YES, 1);
  CGRect imageRect = CGRectMake(50.0, 50.0, 128, 128);
  [image drawInRect: imageRect];
  image = UIGraphicsGetImageFromCurrentImageContext();
  UIImageView *iv = [[UIImageView alloc] initWithImage: image];
  [self setView: iv];
  [iv release];
  [super viewDidLoad];
}

Это код, который я вызываю в моем главном контроллере. Он должен загрузить изображение, нарисовать его в прямоугольник, а затем показать его. И этот код делает это с небольшой проблемой: соотношение сторон изображения не сохраняется - высота изображения кажется растянутой, поэтому все изображение кажется растянутым. Чем это вызвано?

2 ответа

Решение

Я думаю, что ваша проблема в contentMode вашего ImageView, попробуйте

 [iv setContentMode:UIViewContentModeTop];

если вы хотите, чтобы он был своего размера.

в противном случае вам нравится масштабироваться или что-то еще, вы просто получили массу вариантов

UIViewContentModeScaleToFill
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw,
UIViewContentModeCenter,
UIViewContentModeTop,
UIViewContentModeBottom,
UIViewContentModeLeft,
UIViewContentModeRight,
UIViewContentModeTopLeft,
UIViewContentModeTopRight,
UIViewContentModeBottomLeft,
UIViewContentModeBottomRight, 

наслаждаться;)

Это связано с режимом контента. Измените это так:

[iv setContentMode:UIViewContentModeScaleAspectFit];
Другие вопросы по тегам