如何自动调整图像,但是在ImageView的顶部(以编程方式在Xcode中)?

时间:2012-11-09 18:41:32

标签: iphone uiimageview scaling contentmode

我有一个imageView(比如100x100),我想填充一个(较小的)图像(例如50x10),我希望图像位于视图的顶部,而不是中间的观点。

如果我使用

imageView.contentMode = UIViewContentModeScaleAspectFit;

它填充视图,图像缩放为100x20(如预期),但在视图中间。

像这样:

+---------+
|         |
|i m a g e| <---my image (scaled)
|         |
+---------+ <---my UIImageView

如果我设置

imageView.contentMode = UIViewContentModeTop | UIViewContentModeScaleAspectFit;

我明白了:

+---------+
|  image  | <---my image (not scaled)
|         |
|         |
+---------+

图像缩放,并且在imageView中间保持50x10(按照UIViewContentModeTop的指示,但忽略了UIViewContentModeScaleAspectFit)。

如何让它接受两者?像这样:

+---------+
|i m a g e|
|         |
|         |
+---------+

1 个答案:

答案 0 :(得分:2)

这可能是最糟糕的解决方案,但它确实有效,您应首先设置图像视图的帧,然后调用此方法。

-(void)adjustImageViewWithImageDimension:(CGRect)frame{
    UIImageView *tempView = [[UIImageView alloc] initWithFrame:frame];
    tempView.image = self.image;
    tempView.contentMode = UIViewContentModeScaleAspectFill;
    tempView.clipsToBounds = false;
    CGFloat oldAlpha = self.alpha;
    self.alpha = 1;
    UIGraphicsBeginImageContext(tempView.bounds.size);
    [tempView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    self.alpha = oldAlpha;
    self.image = resultingImage;
    self.contentMode = UIViewContentModeTop;
    self.clipsToBounds = YES;
}