2013-10-26 14 views
5

Ist es möglich, Echtzeit-Blending wie der Pfeil in der Benachrichtigungszentrale auf iOS 7 zu haben? Ich frage mich, ob es möglich ist, eine UIImage-Mischung mit weichem Licht mit dem Inhalt (UIView oder CALayer) direkt darunter zu haben, damit sich das Hintergrundbild bewegen kann und das gemischte Bild an einer Stelle bleibt.Realtime Blending UIImages

ich es will, wo man eine UIImage haben können, wo Sie eine blendmode-Eigenschaft auf, was auch immer Mischung Modus können Sie benötigen, wie imageView.blendMode = kCGBlendModeSoftLight;

Ich versuchte GPUImage verwenden, aber ich konnte nicht herausfinden, wie zu tun was ich brauche. Jede Hilfe wäre willkommen.

Bis jetzt ist der Code, den ich verwende, um den Mischmodus eines UIImage einzustellen, dies; Wenn die Hintergrundansicht jedoch verschoben wird, wird die Überblendung auf dem UIImage nicht aktualisiert.

//blur the background 
    GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; 
    blurFilter.blurRadiusInPixels = 50.0f; 
    blurFilter.blurPasses = 4; 
    UIImage *blurredBackground = [blurFilter imageByFilteringImage:[UIImage imageNamed:@"Background.png"]]; 

    //make the blended images 
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 2.0f); 
    CGContextSetInterpolationQuality(UIGraphicsGetCurrentContext(), kCGInterpolationHigh); 
    [blurredBackground drawInRect:self.view.bounds blendMode:kCGBlendModeNormal alpha:1.0]; 

    [[UIImage imageNamed:@"BarLineImage.png"] drawInRect:CGRectMake(0, self.view.bounds.size.height - 31, self.view.bounds.size.width, 1) blendMode:kCGBlendModeSoftLight alpha:1.0]; 

    [[UIImage imageNamed:@"Equalizer-th.png"] drawInRect:CGRectMake(65, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0]; 
    [[UIImage imageNamed:@"Player-th.png"] drawInRect:CGRectMake(145, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0]; 
    [[UIImage imageNamed:@"Container-th.png"] drawInRect:CGRectMake(225, self.view.bounds.size.height - 30, 30, 30) blendMode:kCGBlendModeSoftLight alpha:1.0]; 

    UIImage *blendedImages = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

Hier ist ein Screenshot, was dieser Code für einige visuelle Hilfe tut. Screenshot

Dies sieht so aus, wie ich es brauche, aber ich kann den Inhalt unter den Bildern unten nicht animieren. Ich muss wirklich in der Lage sein, Echtzeit-Blending für UIImages und UIViews zu haben.

+0

Können Sie ein bisschen mehr über erklären, wie die "Hintergrundansicht bewegt wird"? Suchen Sie nach einer Unschärfe des Live-Video-Feeds oder nach dem Effekt, der auf dem Bildschirm angezeigt wurde? –

+0

Ich bin auf der Suche nach einer Mischung aus dem Live-Video-Feed. –

+0

Ich denke, ich verstehe, was Sie anstreben, und es ist eine interessante Idee! Es ist einfach, den Live-Videofeed für den gesamten Hintergrund unscharf zu machen. Schalten Sie einfach das Bild, das Sie gerade verwischen, für eine GPUImageVideoCamera aus, die wie bei den Beispielprojekten auf den Unschärfefilter ausgerichtet ist, dessen Ziel das GPUImageView ist. Aber Ihre Idee, die Steuerelemente mit dem darunterliegenden Video zu mischen, klingt ansprechend. Ich habe eine Vorstellung davon, wie man das mit einer verzweigten Kette und etwas Cropping erreicht. Ich werde heute Abend damit spielen und sehen, ob ich es schaffen kann. Ich werde dich wissen lassen, was ich vorhabe! –

Antwort

0

Überprüfen Sie die Video-Nummer 226 von WWDC Sitzung. Sie können viele Informationen darüber finden, wie Sie Bilder animieren können, indem Sie das neue iOS 7 API verwenden.

Ich weiß, dass meine Antwort nicht vollständig ist und es sollte ein Kommentar zu Fragen sein, aber mein Ruf ist zu niedrig.

edit: WWDC Session 2013 Video nr 226: Implementieren von Engaging UI auf iOS

+0

Es wäre hilfreich, den Namen der Video - und Session - Beschreibung hinzuzufügen, besonders wenn die Verbindung jemals unterbrochen wird. –

+0

Das Video spricht nicht über Mischmodi, noch gibt es Beispiele dafür, wie eine Live-Unschärfe oder Mischung erreicht werden kann. –