Снимки представления на iOS 7
Q: На iOS 7 и позже, как я беру снимок своего представления и сохраняю результат в UIImage?
A: Запускаясь с iOS 7, UIView класс обеспечивает метод-drawViewHierarchyInRect:afterScreenUpdates: позволяет Вам получить содержание представления получателя и его подпредставлений к изображению независимо от методов получения (например, UIKit, Quartz, OpenGL ES, SpriteKit, и т.д.), в котором представляются представления.
См. Перечисление 1 для примера того, как использовать -drawViewHierarchyInRect:afterScreenUpdates: взять снимок представления на iOS 7 и позже.
Перечисление 1 , Создающее изображение снимка
- (UIImage *)snapshot:(UIView *)view |
{ |
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0); |
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; |
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); |
UIGraphicsEndImageContext(); |
return image; |
} |
В дополнение кUIView теперь обеспечивает, еще два создают снимки связанные методы,-snapshotViewAfterScreenUpdates: и-resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets:. UIScreen также имеет-snapshotViewAfterScreenUpdates:. В отличие от этого UIView -drawViewHierarchyInRect:afterScreenUpdates:, эти методы возвращают a UIView объект. При поиске нового представления снимка используйте один из этих методов. Это будет более эффективно, чем вызов -drawViewHierarchyInRect:afterScreenUpdates: представлять содержание представления в растровом изображении самостоятельно. Можно использовать возвращенное представление в качестве визуального заместителя для текущего представления / экран в приложении. Например, Вы могли бы использовать представление снимка для анимаций, где обновление большой иерархии представления могло бы быть дорогим.
История версии документа
| Дата | Примечания |
|---|---|
| 01.05.2014 | Редакционные изменения. |
| 12.02.2014 | Новый документ, описывающий, как взять снимок представления на iOS 7 и позже. |