我有一个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|
| |
| |
+---------+
答案 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;
}