1

我有一个 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|
|         |
|         |
+---------+
4

1 回答 1

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;
}
于 2013-04-04T06:48:39.920 回答