Estoy tratando de aplicar un de vidrio esmerilado efecto en un UIImageView.
Traté de poner en práctica lo que he encontrado en esta pregunta, pero el resultado no aceptable.
Yo quería algo como esto:
También, podemos ver que iOS 7 se utiliza este tipo de efecto en un montón de lugares. ¿Cómo podemos reproducirlo?
- Aquí la solución con UIToolbar: stackoverflow.com/a/19506076/774394
- Mencioné algo similar en Edición 2 – se hace uso de un UIToolbar también
- Sí tienes razón. Pero esta solución funciona en la animación de fotograma/límites con UIView de animación.
- Aquí está la más rápida de ver en tiempo real el desenfoque de la aplicación (uso de acelerar el marco): github.com/nicklockwood/FXBlurView !tiempo real de desenfoque en el simulador de ios
Un buen tutorial acerca de CoreImage es aquí, que muestra cómo aplicar filtros y más:
http://www.raywenderlich.com/5689/beginning-core-image-in-ios-5
ACTUALIZACIÓN de 1
Así que después de un poco de investigación, me terminé descubriendo que la Imagen principal para el iOS es todavía incompleta, cuando se compara a la versión para OS X de la biblioteca. Así que busqué en google un montón, y me encuentro con dos soluciones, una de ellas más simple, y el otro mucho más amplio y complejo de la biblioteca.
La breve y sencilla solución: https://github.com/esilverberg/ios-image-filters
La increíble y esta edición de la pena, biblioteca para el procesamiento de imágenes y vídeos con OpenGL, GPUImage por Brad Larson. Es mucho más rápido y eficaz que el de la Imagen principal. Introducción: http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework. GitHub: GPUImage
Así, por ejemplo, en un par de líneas me puede conseguir el resultado que yo quiero (donde originalImage es el UIImage para aplicar el efecto):
ACTUALIZACIÓN 2
Después de que Apple anunció iOS 7, algunos de los desarrolladores de encontrar una solución para hacer lo mismo que hizo Apple en el defecto las apps de iOS, Apple no proporciona una API para que. La más simple y la mejor solución, en mi opinión, es este uno de los. ¿Por qué creo que es la mejor? Porque incluso si en algún punto de vista que detrás de ella se mueve, el desenfoque todavía funciona muy bien con la actualización de efecto, como esperamos que se debe trabajar. Sin embargo, ten en cuenta que depende del SDK de iOS 7 para poder trabajar, y puede ser arriesgado si Apple cambia UIToolbar.
ACTUALIZACIÓN 3
Apple ha mencionado, en la WWDC de 2013 (Sesión de 226 – la Aplicación de Atractiva interfaz de usuario en iOS) que proporcionaría una categoría de clase en UIImage, llamado UIImage+ImageEffects (he buscado en google, y encontrar aquí, pero está disponible en Desarrollador de Portal de búsqueda para UIImageEffects en el cuadro de búsqueda). Con esta categoría, se puede aplicar el desenfoque en una estática UIImage, utilizando varios métodos (luz, oscuridad, con un color específico, etc.). También, ayer Vi este componente y pareció bastante interesante, como se puede aplicar el efecto (basado en la mencionada categoría) en un marco.
ACTUALIZACIÓN 4
Finalmente, en iOS 8, Apple ha publicado las nuevas clases que puede hacer en vivo desenfoque fácilmente. Con
UIVisualEffect
yUIVisualEffectView
, usted puede agregar rápidamente vivir desenfoque de sus aplicaciones. Aquí hay un buen tutorial de Ryan Nystrom sobre cómo usar esas clases (y en la falta de nitidez en general):Solución para iOS 7 y 8, sin necesidad de utilizar CoreImage o CoreGraphics a todos:
(suponiendo que no se dirigen a versiones anteriores de iOS 7; si usted es, usted tiene que probar la versión de iOS en el
else
bloque)Esta solución se aplica a cualquier punto de vista, no sólo imágenes.
Utilizando UIImageEffects
Si quieres más control al aplicar el desenfoque, se puede hacer uso de Apple
UIImageEffects
(disponible a través de su código de ejemplo).Puede copiar el código para
UIImageEffects
de Desarrolladores de Apple, de la Biblioteca : El desenfoque y el Teñido de una ImagenY aquí es cómo utilizar :
Echa un vistazo a la Imagen principal Guía de Programación. Parece que el filtro estilizar y la filtro de desenfoque pueden adaptarse a sus necesidades. Nunca he trabajado con Núcleo de Imagen antes, pero creo que puede haber algunas buenas sesiones de la WWDC que los involucran. La documentación ha una pieza básica de código de ejemplo aquí.
NSArray *properties = [CIFilter filterNamesInCategory:kCICategoryBuiltIn]; NSLog(@"%@", properties);