0
- (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];
}

这是我在主控制器中调用的代码。它应该加载图像,将其绘制成矩形,然后显示它。这段代码可以做到这一点,但有一个小问题:图像的纵横比没有保留 - 图像高度似乎被拉伸了,所以整个图像似乎被拉伸了。这是什么原因造成的?

4

2 回答 2

1

这是由于内容模式。像这样改变它:

[iv setContentMode:UIViewContentModeScaleAspectFit];
于 2011-12-09T15:08:53.657 回答
1

我认为您的问题是您的 ImageView 的 contentMode 尝试一下

 [iv setContentMode:UIViewContentModeTop];

如果你想让它有自己的大小。

否则,如果你喜欢它被缩放或其他什么,你就会有很多选择

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

请享用 ;)

于 2011-12-09T15:08:59.093 回答