webentwicklung-frage-antwort-db.com.de

dynamischer Unschärfe-Effekt für iOS 7 wie in Control Center

Ich versuche, einen Controller zu erstellen, der dem Control Center in iOS7 ähnlich ist. Von der WWDC-Sitzung Nr. 226 habe ich gelernt, wie man mit verschiedenen Effekten unscharfes Bild bekommt 

UIGraphicsBeginImageContextWithOptions(image.size, NULL, 0);

[view drawViewHierarchyInRect:rect];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

lightImage = [newImage applyLightEffect];

Mit anderen Worten, wir erfassen einfach ein Bild (machen Sie einen Screenshot), führen einen Unschärfe-Effekt aus und verwenden dieses unscharfe Bild für unsere Bedürfnisse.

Wenn Sie Control Center über dynamischen Inhalten öffnen, werden Sie feststellen, dass sich der unscharfe Hintergrund des Control Centers ebenso ändert wie der Inhalt.

Weiß jemand, wie man dieses Verhalten replizieren kann?

Die einzige Möglichkeit, die ich sehe, besteht darin, Inhalte zu erfassen und mit einem bestimmten Intervall (z. B. einer halben Sekunde) Unschärfeeffekte zu erzeugen. Aber es sieht überflüssig aus.

35
Nastya Gorban

Hier sind fertige Lösungen, die ich gefunden habe:

1. Das Unerwartete: Verwenden Sie 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 kann für diese Anforderungen verwendet werden, da es seinen einzigen eingebauten Unschärfemechanismus hat. Aber das Schlimme ist, dass es aus irgendeinem Grund Farben ignoriert und den Hintergrund unwiderruflich macht ...

Toolbar effect

Update:

Verwenden Sie barTintColor nicht, um Farbbrüche zu vermeiden. Sie können auch den Stil der Symbolleiste ändern, wenn Sie eine dunkle Unschärfe wünschen (verwenden Sie UIBarStyleBlack).

2. FXBlurView . 

Im Gegensatz zur Symbolleiste ist es positiver, aber der dynamische Mechanismus ist noch selten und kann tatsächlich nur für statischen Hintergrund verwendet werden. (dynamisch = NEIN).

FBBlurView effect

43
Nastya Gorban

In iOS8 können Sie mit Hilfe von UIVisualEffect class Unschärfeeffekte für Ansichten implementieren. 

12
petesalt

Mit dem folgenden Code können Sie den Unschärfeeffekt auf die Ansicht anwenden.

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

visualEffectView.frame = MYview.bounds;
[MYview addSubview:visualEffectView];
7
Muhammad Rizwan

Ich habe festgestellt, dass LiveFrost ein großartiges und einfach zu integrierendes Projekt für Live-Unschärfe ist.

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

2
rounak

Sie können UIVisualEffect vom Storyboard aus verwenden.

Ziehen Sie den visuellen Effekt mit Unschärfe auf das Storyboard. Der gewünschte Effekt kann erreicht werden, indem das Alpha der HINTERGRUNDFARBE eingestellt wird. Die Unteransichten sollten zur Ansicht der visuellen Effektansicht hinzugefügt werden und sind nicht von der Hintergrundunschärfe betroffen.

Der Lebendigkeitseffekt muss oben in den Ansichtsoptionen ausgewählt werden.

Siehe Bild: 

 

1
Sahil Kapoor

Die Verwendung der Navigationsleiste zum Bereitstellen von Unschärfen funktioniert auf älteren Geräten mit iOS 7 nicht

0
Atif Khan