Сотрите прямоугольник UIImageView - PullRequest
3 голосов
/ 11 июня 2011

Я хочу знать, как я могу стереть пользовательский прямоугольник (например, UIView in IB или что-то еще) из UIImageView, чтобы отобразить другой UIImageView, расположенный под ним.


enter image description here

Мне не удалось сделать это, используя какой-то ответ на форуме ...

Ответы [ 3 ]

9 голосов
/ 20 июня 2011

Это очистит прямоугольник на изображении:

- (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 голос
/ 20 июня 2011

Вы не можете очистить сам UIImageView, потому что это просто рисует UIImage.Итак, вы удалили прямоугольник в UIImage.Создайте растровый контекст, нарисуйте в нем изображение.Удалите часть, которую вы хотите «увидеть» с помощью CGContextClearRect.При создании нового нового изображения из растрового контекста.

1 голос
/ 11 июня 2011

, вероятно, не лучшее решение, но вы можете пойти другим путем и взять 4 части вокруг прямоугольника по отдельности, а затем объединить их без внутреннего прямоугольника.Вы будете повторять это до тех пор, пока у вас есть прямоугольники, чтобы обрезать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...