2 Stimmen

Wie kann ich den "Glas"-Effekt auf meinen eigenen UIViews erzeugen?

Ich arbeite an einer iPhone-App, die einige nicht-rechteckige UI-Elemente hat. Derzeit bin ich subclassing UIView und in drawRect Ich benutze eine CGPathRef um einen schwarzen Rand und einen farbigen Innenraum zu zeichnen.

Ich möchte, dass diese Elemente mehr wie "Schaltflächen" aussehen, also möchte ich einige der gleichen Art von "Glaseffekten" haben, die z. B. auf den Symbolen für eine iPhone-App verwendet werden (wenn Sie nicht die UIPrerenderedIcon auf true), oder in anderen Schaltflächen.

Ich habe mich umgeschaut und das hier gefunden, das dem, was ich brauche, sehr nahe kommt:

Farbverläufe bei UIView und UILabels auf dem iPhone

Aber ich habe Schwierigkeiten herauszufinden, wie ich den Farbverlauf an meine Form anpassen kann.

Es scheint, dass die mask Eigenschaft der Ansicht der richtige Ort wäre, was mich dazu bringen würde, eine neue CALayer Objekt, auf das die Beschneidung irgendwie angewendet wird.

Ich hoffe, dass es dafür eine nette Komfortfunktion gibt, aber wenn ich etwas Komplizierteres schreiben muss, ist das auch in Ordnung. Ich habe nur Schwierigkeiten herauszufinden, wie ich den Pfad als Maske anwenden kann. Ich bin mir nicht sicher, ob ich einen neuen Zeichnungskontext erstellen und den Pfad darin zeichnen muss? Und dann verwenden CGContextClip ?

Ich glaube, ich habe viele der richtigen Teile herausgefunden, ich habe nur Schwierigkeiten zu verstehen, wie man sie zusammensetzt.

Könnte mir bitte jemand die richtige Richtung weisen? (Ich bin gerne bereit, mehr in den Dokumenten zu lesen, aber zeigen Sie mir bitte die richtige Richtung).

0voto

Jon Hull Punkte 659

Sie können einen CAShapeLayer erstellen und seinen Pfad auf Ihre CGPathRef setzen. Dann setzen Sie die Maskeneigenschaft eines CAGradientLayers auf Ihren shapeLayer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X