擦除UIImageView的矩形

时间:2011-06-10 20:44:17

标签: iphone objective-c ios ipad uiimageview

我想知道,如何删除UIView中的自定义矩形(例如IB中的UIImageView)以显示其他UIImageView位于下方。


enter image description here

我没有设法在论坛中使用一些回复...

3 个答案:

答案 0 :(得分:9)

这将清除图像中的矩形:

- (UIImage *)clearRect:(CGRect)rect inImage:(UIImage *)image {

    if (UIGraphicsBeginImageContextWithOptions != NULL)
        UIGraphicsBeginImageContextWithOptions([image size], NO, 0.0);
    else
        UIGraphicsBeginImageContext([image size]);

    CGContextRef context = UIGraphicsGetCurrentContext();

    [image drawInRect:CGRectMake(0.0, 0.0, [image size].width, [image size].height)];
    CGContextClearRect(context, rect);

    UIImage *result = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return result;
}

在将图像指定给图像视图之前,只需加载图像并清除图像:

UIImage *image = [UIImage imageNamed:@"Image.png"];
UIImage *maskedImage = [self clearRect:CGRectMake(10.0, 10.0, 50.0, 50.0) inImage:image];
[imageView setImage:maskedImage];

答案 1 :(得分:1)

可能不是最好的解决方案,但你可以采取另一种方式,分别在矩形周围取4个部分,然后在没有内部矩形的情况下将它们组合起来。只要你有直接裁剪就可以重复这个。

答案 2 :(得分:1)

你无法清除UIImageView本身,因为它只是绘制了UIImage。所以你在UIImage中删除了rect。创建位图上下文,将图像绘制到其中。使用CGContextClearRect擦除要“透视”的部分。从位图上下文创建新的新图像时。