2015-12-18 8 views
5

Ich muss ein UINavigationBar mit einem benutzerdefinierten Design implementieren, muss das Hintergrundbild geändert werden, müssen alle Farben geändert werden und die Höhe muss geändert werden.Ändern Unschärfe-Effekt von UINavigationBar

Ich weiß alles, was möglich ist, aber ich muss auch den Unschärfe-Effekt ändern. Es muss eine hellere Unschärfe sein. Gibt es eine Möglichkeit, dies zu tun, ohne in private APIs zu gehen?

Edit: ein Bild von dem, was es sollte aussehen (ich weiß, dass die Statusleiste pixelig ist, ignorieren):

enter image description here

+0

können Sie ein Beispielbild der gewünschten Ausgabe posten? –

+0

@ Mr.T Ich habe ein Beispiel hinzugefügt, der Standard "UINavigationBar" Blur behält nur allgemeine Bereiche der Farbe, die Spitze des Bogens wäre nicht so klar. – vrwim

+0

Verwenden Sie einen extra hellen UIBlurEffect beim Erstellen Ihrer UIVisualEffectView und wenden Sie diesen auf Ihre UINavigationBar an – SushiHangover

Antwort

1

UIVisualEffectView Transluzenz hinzufügen und Unschärfe-Effekt auf iOS 8+ Ansichten .

Es gibt drei Unschärfe UIBlurEffectStyles zur Verfügung.

- (void)addBlurEffect{ 

    CGRect bounds = self.navigationController.navigationBar.bounds; 
    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    visualEffectView.frame = bounds; 
    visualEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    [self.navigationController.navigationBar addSubview:visualEffectView]; 
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; 
    [self.navigationController.navigationBar sendSubviewToBack:visualEffectView]; 
} 

Weitere Informationen von UIVisualEffectView, diese question on SO überprüfen.

*************** EDIT FÜR iOS 7 ***************

Nicklockwood ‚s FXBlurView kam in Bild für Rettung für iOS5, iOS6, iOS7.

Ich erstelle eine sample project für Sie, die den gewünschten dynamischen Unschärfe-Effekt auf Navigationsleiste für iOS7 hat. Befolgen Sie die folgenden Anweisungen, um sie in Ihrem Projekt zu verwenden.

  1. Blick in AppDelegate.m
  2. Hier füge ich das Hintergrundbild auf der Navigationsleiste. Sie können das Bild in jedem Viewcontroller aktualisieren, um das dynamische Hintergrundbild in der Navigationsleiste zu erhalten.
  3. Es gibt einige FXblurview Eigenschaften wie blurRadius, iterations, tintColor; was Sie müssen read here.

Installationshandbuch: - https://github.com/nicklockwood/FXBlurView?source=c#installation

Der vollständige Quellcode von FXBlurView-master kann found here.

+0

Jeder Backport/Workaround für iOS 7? Ich brauche es wirklich für meine App. Ich werde diese Antwort heute Nacht überprüfen (und akzeptieren, ob es funktioniert). – vrwim

+1

Ich arbeite an der Beispiel-App und werde meine Antwort für die ios7-Problemumgehung bald bearbeiten. In Verbindung bleiben. – pkc456

+0

@vrwim, ich aktualisiere die Antwort für iOS7 oder kleinere OS-Versionen. – pkc456