2009-08-04 9 views
11

Ich möchte einen leuchtenden Text machen, der aussieht, als würde er leuchten oder Licht ausstrahlen. Eigentlich würde dies mit etwas Verschwommenheit im Hintergrund geschehen. Aber ich habe nichts im iPhone SDK gefunden, das es tun würde.Gibt es einen einfachen Weg oder eine Bibliothek, um Text leuchten zu lassen?

+0

Wenn Sie so etwas wie dies bedeuten: http://activeden.net/item/xml-text- progressive-light-glow-effect/47740 ... ich suche das auch. Ich habe die Flash-Version heruntergeladen, aber es verwendet Flash-spezifische API-Aufrufe (speziell ein DropShadowFilter und eine ColorTransform (mit Blending), die nicht in Quarz sind, soweit ich weiß ... –

Antwort

21

Sie können dies mit reinem Quarzzeichnen tun. Innerhalb -drawRect: für eine UIView oder -renderInContext: für eine CALayer, wird der folgende Code Text ziehen und ein Glühen anwenden um ihn herum:

CGContextSetShadowWithColor(context, CGSizeMake(0.0, 0.0), 20.0f, glowColor); 

[text drawAtPoint:CGPointMake(0.5f, 0.5f) withFont:[UIFont fontWithName:@"Helvetica" size:16.0f]]; 

wo Text ist ein NSString und glowCOLOR ist ein CGColorRef für das Glühen Sie möchte sich bewerben. In diesem Beispiel wird ein Schein dargestellt, der 20 Pixel vom Helvetica-Text mit 16 Punkten entfernt und auf den Text zentriert ist.

Sie können dies leicht in einen Schatten umwandeln, indem Sie eine andere Verschiebung (zweites Argument in der ersten Funktion) und einen schwarzen CGColor für den Schatten verwenden.

+0

Klingt gut! Das ist so, wie ich es in einem Vektor-Grafikprogramm versuchen würde. Wenn ich das richtig verstanden habe, sollte mein Text nicht zu lang sein, weil das Glühen im Grunde eine skalierte Version des Text, wo die meisten zentralen Pixel übereinander liegen und die meisten linken/rechten unterscheiden sich hauptsächlich von ihren Klonen underneeth, oder? –

+0

btw: Könnte diese Technik auch verwendet werden, um Glow auf irgendeinen Inhalt einer Ansicht anzuwenden? afaik a UIView hat eine cached Bild als Inhalt, wo ein Effekt angewendet werden könnte, um alles unscharf erscheinen zu lassen ... ich würde sagen, dass dafür ein Gaussian Algorithmus benötigt wird, aber das ist wahrscheinlich eine andere Frage. –

+0

Dies sollte ein Glühen auf die Umrisse des beliebigen Quartz-Vektor-Inhalts anwenden, den Sie nach dem Aufruf von CGContextSetShadowWithColor() zeichnen. Bei Bildinhalten wird es wahrscheinlich nur um die Ränder des Bildes herum leuchten. Um den Inhalt zu verwischen, müssten Sie ihn wahrscheinlich als Vektoren zeichnen, die Strichfarbe jedoch als vollständig klare Farbe belassen. Auf diese Weise würde nur der Schatten zeigen. –

2

Wie wäre es, den Text mit der gewünschten Leuchtfarbe in einen anfänglich transparenten Puffer zu rendern, dann eine Weichzeichnung darauf anzuwenden und den Text dann erneut in der gewünschten Textfarbe über den Rand zu rendern.

Dann können Sie den Puffer zeichnen, wo immer es sein muss.

Siehe auch die Antworten auf "How do I create blurred text in an iPhone view?", die darauf hinweisen, dass Cocoa Touch keine eingebauten Unschärfefilter hat. Sie können natürlich Ihre eigenen schreiben.

+0

Ja, das ist eine gute Idee. Ich dachte, vielleicht es gibt eine Bibliothek, die genau das tut –

Verwandte Themen