para - modo retrato iphone 8 normal
Efecto de desenfoque dinĂ¡mico de iOS 7 como en el Centro de control (6)
Aquí hay soluciones listas que he encontrado:
1. Lo más inesperado: use UIToolBar
- (id) initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame]))
{
[self setup];
}
return self;
}
- (id) initWithCoder:(NSCoder *)coder
{
if ((self = [super initWithCoder:coder]))
{
[self setup];
}
return self;
}
- (void) setup
{
if (iOS7OrLater)
{
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:self.bounds];
toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
toolbar.barTintColor = self.tintColor;
[self insertSubview:toolbar atIndex:0];
}
}
UIToolbar se puede usar para estas necesidades, ya que tiene su único mecanismo de desenfoque incorporado, y este mecanismo es dinámico, lo que es bueno. Pero lo malo es que, por alguna razón, ignora los colores y hace que el fondo se vea irremediablemente ...
Actualizar:
Para evitar que se rompa el color, no use barTintColor. También puede cambiar el estilo de la barra de herramientas si desea un desenfoque de estilo oscuro (use UIBarStyleBlack).
2. FXBlurView .
A diferencia de la barra de herramientas, es más positivo, pero su mecanismo dinámico es raro y, de hecho, solo se puede usar para fondo estático. (dinámico = NO).
Estoy intentando hacer un controlador que sea similar al Centro de control en iOS7. Desde la sesión WWDC # 226, aprendí cómo obtener una imagen borrosa con diferentes efectos
UIGraphicsBeginImageContextWithOptions(image.size, NULL, 0);
[view drawViewHierarchyInRect:rect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lightImage = [newImage applyLightEffect];
Entonces, en otras palabras, solo capturamos una imagen (hacemos una captura de pantalla), realizamos un efecto de desenfoque y usamos esta imagen borrosa para nuestras necesidades.
Pero si abre el centro de control sobre algún contenido dinámico, notará que el fondo borroso del centro de control está cambiando, así como el contenido.
¿Alguien sabe cómo replicar este comportamiento?
La única forma en que lo veo es capturar contenido y crear efecto de desenfoque con algún intervalo (por ejemplo, medio segundo). Pero parece redundante.
El uso de la barra de navegación para proporcionar imágenes borrosas no funcionará en dispositivos más antiguos que ejecuten iOS 7. Ya que están ejecutando una versión más liviana de iOS 7 casi sin t
En iOS8 podemos implementar el efecto de desenfoque en las vistas usando la clase UIVisualEffect .
He descubierto que LiveFrost es un proyecto genial y fácil de integrar para difuminar en vivo.
Puede usar UIVisualEffect desde el guión gráfico.
Arrastre el efecto visual con desenfoque en el guión gráfico. El efecto deseado se puede lograr configurando alfa del COLOR DE FONDO. Las subvistas deben agregarse a la Vista de la Vista de efectos visuales y no se verán afectadas por el desenfoque de fondo.
El efecto de Vibrancy debe ser seleccionado en Ver opciones arriba.
Ver imagen:
Puede usar el código a continuación para aplicar el efecto de desenfoque en la vista.
UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = MYview.bounds;
[MYview addSubview:visualEffectView];