Как сделать снимок экрана после применения маски к слою в iOS?

Я добавил два UIView в ViewController.view и применил изображение 2 квадратов к каждому view.layer.mask, чтобы сделать его похожим на квадрат, разделенный на 2 части, и добавить над ним изображение. У меня проблема с рендерингом замаскированных слоев и сохранением их в фотоальбом. Я хочу, чтобы сохраненная фотография выглядела как фотография №. 1, но всегда выглядит как на фото №. 2 после сохранения в фотоальбом. Есть ли какое-либо решение для захвата изображения № 1 после применения маски?

ниже приведена ссылка из Apple regarind renderIngContext.

Важно Реализация OS X v10.5 этого метода не поддерживает всю модель композиции Core Animation. Слои QCCompositionLayer, CAOpenGLLayer и QTMovieLayer не визуализируются. Кроме того, не визуализируются слои, использующие 3D-преобразования, а также слои, в которых указаны значения backgroundFilters, filter, compositingFilter или маски. В будущих версиях OS X может быть добавлена ​​поддержка рендеринга этих слоев и свойств.

введите здесь описание изображения


person tulurira    schedule 27.08.2012    source источник
comment
просто сделайте снимок экрана окна... а не вида... в соответствии с вашим запросом..   -  person Rajneesh071    schedule 27.08.2012
comment
Извините, но, как вы упомянули, когда я снимаю окно, оно выглядит как № 2.   -  person tulurira    schedule 28.08.2012
comment
не могли бы вы рассказать мне о линии в № 1 ... что это?   -  person Rajneesh071    schedule 28.08.2012
comment
это квадрат, разрезанный на 2 части. применил маскирующее изображение к view.layer.mask   -  person tulurira    schedule 29.08.2012
comment
Вы решили эту проблему?   -  person Quaso    schedule 10.09.2013


Ответы (2)


Когда мы применяем маскировку к любому изображению, мы получаем результирующее изображение с альфа-свойством замаскированного изображения, равным 1, и оставшимся изображением, равным 0, и когда мы захватываем изображение вида, тогда все еще есть полное изображение (мы можем видеть половину изображения из-за alpa = 0 половинного изображения, но все еще есть полное изображение), поэтому мы получаем скриншот полного вида.

person Rajneesh071    schedule 29.08.2012
comment
Спасибо большое за помощь. Я просто немного отредактировал свой вопрос. Не могли бы вы прочитать это еще раз и посмотреть, сможете ли вы помочь мне решить эту проблему? Спасибо - person tulurira; 29.08.2012
comment
я сделал много, но когда мы захватываем изображение, мы получаем изображение полного вида ... там в строке альфа = 0, но есть изображение с обратной стороны .... которое не видно из-за маскировки, но присутствует сзади... - person Rajneesh071; 03.09.2012

Раньше я создавал функцию захвата изображения, которая буквально делает экран печати UIView. Я не использую его, потому что он не подходит для моих нужд, но, возможно, вы можете его использовать:

UIImage *img;   

UIGraphicsBeginImageContextWithOptions(UIViewYouWantToCapture.bounds.size, self.opaque, 0.0);
[[UIViewYouWantToCapture layer] renderInContext:UIGraphicsGetCurrentContext()];

img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
person Zoltan Varadi    schedule 27.08.2012
comment
@tulurira Привет, тебе удалось что-нибудь запечатлеть? Могу ли я получить помощь в том, как сделать снимок из слоя в представлении? - person Santo; 07.01.2016