Как отобразить пересечение вида и его подпредставления? - PullRequest
1 голос
/ 24 января 2012

В настоящее время я визуализирую видимую часть представления в PNG, например:

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Представление имеет подпредставление, называемое imageView (и некоторые другие);Я хотел бы визуализировать видимую часть представления, которая пересекается с imageView (включая другие подпредставления).Я смотрю на UIRectClip, но получаю очень странные результаты.Как отобразить пересечение представления и его подпредставления?

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Оказалось, мне нужно использовать CGContextTranslateCTM, вот так:

CGRect combinedFrame = CGRectIntersection(imageView.frame, self.bounds);
UIGraphicsBeginImageContextWithOptions(combinedFrame.size, NO, [UIScreen mainScreen].scale);
CGContextRef ctx = UIGraphicsGetCurrentContext();    
CGContextTranslateCTM(ctx, -combinedFrame.origin.x, -combinedFrame.origin.y);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
0 голосов
/ 26 января 2012

Вы пытались использовать свойство layer.mask? Вы можете замаскировать один вид, используя другой вид, сказав:

viewA.layer.mask = viewB.layer.

(чтобы использовать эти свойства, вам нужно #import и добавить инфраструктуру QuartzCore).

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