35 votes

Effet de flou dynamique iOS 7 comme dans Control Center

Je suis en train de faire un contrôleur qui sera semblable au Centre de Contrôle dans iOS7. À partir de la WWDC session #226 j'ai appris à obtenir une image floue avec des effets différents

UIGraphicsBeginImageContextWithOptions(image.size, NULL, 0);

[view drawViewHierarchyInRect:rect];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

lightImage = [newImage applyLightEffect];

Donc, en d'autres termes, nous venons de capturer une partie de l'image (faire une capture d'écran), d'effectuer des effets de flou et de l'utilisation de cette image floue pour nos besoins.

Mais si vous ouvrez le centre de contrôle au-dessus d'un contenu dynamique, vous remarquerez que le centre de contrôle de flous d'arrière-plan est en train de changer ainsi que le contenu ne.

Quelqu'un sait comment reproduire ce comportement?

La seule façon que je le vois, c'est de capturer le contenu et de faire de l'effet flou avec un certain intervalle de temps (par exemple une demi-seconde). Mais il semble redondante.

43voto

Nastya Gorban Points 595

Voici des solutions que j'ai trouvé:

1. Les plus inattendus: l'Utilisation 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 peut être utilisé pour ce besoin, bacuse il a son seul construire-dans le flou mécanisme, et ce mécanisme est dynamique, ce qui est bon. Mais la mauvaise chose est que, dans certains raison, il ignore les couleurs et rend l'arrière-plan semble irrémédiablement...

Toolbar effect

Mise à jour:

Pour éviter la couleur de la rupture, ne pas utiliser de barTintColor. Vous pouvez également modifier le style de la barre d'outils si vous voulez foncé style flou (utiliser UIBarStyleBlack).

2. FXBlurView.

À la différence de la barre d'outils plus positif, mais il est dynamique mécanisme est rare encore, et en fait, il peut être utilisé uniquement pour l'arrière-plan statique. dynamique (=NON).

FBBlurView effect

12voto

petesalt Points 99

Dans iOS8, nous pouvons implémenter l'effet de flou sur les vues à l'aide de la classe UIVisualEffect: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIVisualEffect_class/index.html#//apple_ref/occ/cl/UIVisualEffect

2voto

rounak Points 958

LiveFrost est un projet génial et facile à intégrer pour le flou dynamique.

https://github.com/radi/LiveFrost/

0voto

Atif Khan Points 89

L'utilisation de la barre de navigation pour créer un flou ne fonctionnera pas sur les appareils plus anciens exécutant iOS 7. Les versions plus légères d'iOS 7 étant presque inexistantes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X