1

是否可以在不更改 UIView 边界的情况下缩放 UIView 内的图像?(也就是说,在仍然将图像裁剪到 UIView 的边界的同时,即使图像的缩放比例大于 UIView。)

我在不同的 SO 帖子上找到了一些代码,这些代码在 UIView 中缩放图像:

view.transform = CGAffineTransformScale(CGAffineTransformIdentity, _scale, _scale);

然而,这似乎会影响视图的边界——使它们变大——因此 UIView 的绘图现在会随着它的内容变大而压倒其他附近的 UIView。我可以使其内容缩放更大,同时保持剪裁范围相同吗?

4

1 回答 1

1

缩放图像最简单的方法是通过设置其 contentMode 属性来使用 UIImageView。

如果您必须使用 UIView 显示图像,您可以尝试在 UIView 中重绘图像。

1.子类UIView

2.在drawRect中绘制你的图像

//the followed code draw the origin size of the image

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    [_yourImage drawAtPoint:CGPointMake(0,0)];
}

//if you want to draw as much as the size of the image, you should calculate the rect that the image draws into

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    [_yourImage drawInRect:_rectToDraw];
}

- (void)setYourImage:(UIImage *)yourImage
{
    _yourImage = yourImage;

    CGFloat imageWidth = yourImage.size.width;
    CGFloat imageHeight = yourImage.size.height;

    CGFloat scaleW = imageWidth / self.bounds.size.width;
    CGFloat scaleH = imageHeight / self.bounds.size.height;

    CGFloat max = scaleW > scaleH ? scaleW : scaleH;

    _rectToDraw = CGRectMake(0, 0, imageWidth * max, imageHeight * max);
}
于 2013-10-24T03:28:17.267 回答