У меня есть вид с определенным цветом фона. Я маскирую это представление следующим кодом:
UIView *colorableView = [[UIView* alloc] init];
colorableView.backgroundColor = someColor;
CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (id)[UIImage imageNamed:maskImageName].CGImage;
colorableView.layer.mask = maskLayer;
Ок, там все отлично работает. Представление маскируется, поэтому некоторые части являются прозрачными. Сейчас я делаю скриншот этого вида:
CGRect frame = colorableView.frame;
UIGraphicsBeginImageContext(frame.size);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(someUninterestingCodeToGetACorrectPosition);
[self.view.layer renderInContext:c];
UIImage *screenShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenShotImage;
Снимок экрана работает (на самом деле я также отображаю некоторые другие вещи над видом, и это также отображается на скриншоте), но маска почему-то не распознается. То есть, я получаю скриншот полноцветного изображения (прямоугольник) без маски, скрывающей некоторые его части.
Я полагаю, что «UIGraphicsGetImageFromCurrentImageContext ()` не работает со слоями маски, так что я могу с этим поделать? Мне нужно иметь UIImage для отображения скриншота по почте.
Большое спасибо заранее