在contentMode UIViewContentModeScaleAspectFit时禁用UIImageView调整大小行为

时间:2013-03-13 12:38:44

标签: iphone ios objective-c uiimageview uiimage

UIImageViewcontentMode = UIViewContentModeScaleAspectFit

我需要此模式才能正确显示图像。 但是当我的框架像 UIViewContentModeTopLeft那样改变时,我还需要imageView裁剪图像。

我怎么能得到这个?

编辑:

imageView.contentMode = UIViewContentModeTopLeft;
imageView.image = someImage;

现在我明白了(而且没关系,图片缩放得恰到好处,看起来不错):

enter image description here

然后,我有方法:

- (void)setRating:(double)rating {
      double starWidth = imageView.image.size.width / _maxRating;
      CGRect oldFrame = self.frame;
      imageView.frame = CGRectMake(0, 0, rating * starWidth, oldFrame.size.height);
      _rating = rating;
}

在这种方法之后,我需要得到类似的东西:

enter image description here

但由于UIViewContentModeScaleAspectFit我得到了缩放图片

1 个答案:

答案 0 :(得分:0)

在没有大量额外工作的情况下,您无法从正在尝试的方法中获得所需的图像。当您调整视图大小时,您将看到缩放,即您设置的模式,这就是所有将要发生的事情。 有许多可能性,许多涉及通过子类化自己调整大小。但至于解决方案:

  1. 在运行时之前调整您的艺术大小,然后您不需要为每个用户和每次运行的每个星形显示进行缩放。拯救电子!
  2. 将imageView作为子视图添加到您将与imageView的缩放大小匹配的其他容器视图中,然后调整大小以剪切您不想显示的imageView部分。