Necesito capturar una UIView y todas sus subvistas en un UIImage. El problema es que parte de la vista está fuera de la pantalla, por lo que no puedo usar la función de captura de pantalla, y cuando trato de usar la función UIGraphicsGetImageFromCurrentImageContext(), no parece capturar las subvistas también. ¿Debería capturar las subvistas y solo estoy haciendo algo mal? Si no, ¿hay alguna otra manera de lograr esto?Necesito capturar UIView en un UIImage, incluidas todas las subvistas
Respuesta
¿Quiere decir
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer drawInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
no funciona? Estoy bastante seguro de que debería ...
Ese es el camino correcto a seguir:
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, [[UIScreen mainScreen] scale]);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
Este método es un método de extensión para la clase UIImage, y también se encargará de hacer las miradas imagen bien en cualquier dispositivo futuro de alta resolución.
¡Realmente funciona! – AlexeyVMP
Ahorré mi tiempo :) Gracias –
Aquí hay una versión 2.x Swift que debería funcionar si primero se crea una matriz de los UIViews para ser aplanado:
// Flattens <allViews> into single UIImage
func flattenViews(allViews: [UIView]) -> UIImage? {
// Return nil if <allViews> empty
if (allViews.isEmpty) {
return nil
}
// If here, compose image out of views in <allViews>
// Create graphics context
UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, UIScreen.mainScreen().scale)
let context = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(context, CGInterpolationQuality.High)
// Draw each view into context
for curView in allViews {
curView.drawViewHierarchyInRect(curView.frame, afterScreenUpdates: false)
}
// Extract image & end context
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// Return image
return image
}
- 1. Reordenar las subvistas de UIView
- 2. ¿La publicación de UIView libera todas sus subvistas?
- 3. Tinte una UIView con todas sus subvistas
- 4. Aplanar las subvistas de UIViews a UIImage iPhone 3.0
- 5. Fading UIView permite ver las subvistas
- 6. beginAnimations UIView con subvistas
- 7. Iterar todas las subvistas de un tipo específico
- 8. UIView y subvistas - opacidad
- 9. Capture UIView como UIImage
- 10. Monotouch: eliminar todas las subvistas de una vista
- 11. captura UIImage de UIView incluyendo UINavigationBar
- 12. viewWillAppear para las subvistas
- 13. UIViewController vs. UIView: ¿cuál debería crear las subvistas?
- 14. ¿Reflejando todas las propiedades de una interfaz, incluidas las heredadas?
- 15. Poniendo UIView subvistas con limitaciones de tamaño
- 16. poner subvistas de un UIView en frente de su CALayer?
- 17. capturar todas las excepciones en un controlador de rieles
- 18. ¿Cómo capturar el contenido de una UIView y cambiarla a UIImage?
- 19. Extensiones de Ruby c: ¿Cómo puedo detectar todas las excepciones, incluidas las que no son StandardErrors?
- 20. ¿Pasar por todas las subvistas de una vista de Android?
- 21. Agregar UIView sobre todas las demás vistas, incluyendo StatusBar
- 22. Necesito obtener todas las cookies del navegador
- 23. ¿Necesito restaurar todas las variables onResume?
- 24. UIImage de una región de UIView
- 25. cómo eliminar las subvistas de scrollview?
- 26. enrutador Magento: ¿cómo puedo capturar parámetros en todas las URL?
- 27. Cómo capturar todas las excepciones/accidentes en una aplicación .NET
- 28. Cómo capturar todas las variables en una publicación (PHP)
- 29. capturar todas las excepciones en Scala 2.8 RC1
- 30. Obtener registros de cambios para todas las gemas incluidas en un proyecto de Rails
supongo que ya que cada 'UIView' es llamada basada en capas '- [CALayer drawInContext: viewContext] 'podría ayudar. –