Frage

Ich bin in den Prozess-Buttons auf meinem iPhone UI hinzuzufügen und wollen ihnen den glasigen Blick von der Apple-Anwendungen machen. Ich habe ein gutes Standard-Glasbild, aber ich würde es hassen, ein separates Bild für jeden Farbton haben zu haben, ich will (rot, grün, blau, etc.).

Gibt es eine Möglichkeit, einen Graustufen-PNG zu laden und stellen Sie es auf die Farbe, die ich will? Noch besser wäre es, ist es eine Möglichkeit, Apples glasigen Blick zu erhalten, ohne eigene Bilder überhaupt laden zu müssen?

War es hilfreich?

Lösung

Es gibt keine Einzeiler Art und Weise, die ich kenne, aber Sie könnten in der Lage sein, den gewünschten Effekt zu erhalten, indem das Standard-Graustufenbild zu nehmen und Compositing mit einer festen Farbe (das heißt es auf der Zeichnung). Wenn Sie die Core Graphics Dokumentation schauen durch, können Sie sehen, gibt es mehr als ein Dutzend verschiedene Compositing Methoden (zum Beispiel Farbbrand) und eine Kombination von ihnen können Sie den gewünschten Effekt erzeugen.

Andere Tipps

Ein wenig spät, aber für den Fall, wie ich jemand für diese Art von Informationen sucht: eine UISegmentedControl mit einer einzigen Taste verwenden, setzen sie als momentary und seine tintColor gesetzt. Auf diese Weise keine Notwendigkeit herzustellen, wie viele PNGs, wie Sie Farben haben, und das Framework kümmert sich um alle die Rendering für Sie.

Beispiel:

UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Cancel"]];
[cancelButton setSegmentedControlStyle:UISegmentedControlStyleBar];
[cancelButton setTintColor:[UIColor colorWithRed:0.8 green:0.3 blue:0.3 alpha:1.0]];
[cancelButton setMomentary:YES];
[cancelButton addTarget:self action:@selector(didTapCancel:) forControlEvents:UIControlEventValueChanged];
[self addSubview:cancelButton];
[cancelButton release];

Es gibt eine Probe an dem immer ausgezeichnet "Cocoa With Love" site: Zeichnung Glanz Gradienten in CoreGraphic

Ich weiß nicht, über das iPhone UI, aber Sie können einen einzelnen PNG verwenden, um Farbvariante Grafiken zu haben.

d. Sowohl die Logos (oben links) auf diesen Seiten:

Produkte

Shops

Verwenden Sie dieses PNG

alt text http://47degrees.com/images/logos/47_degrees.png

Ich nehme an, Sie könnten die Hintergrundfarbe als Tönung glasig eingestellt werden müssen.

Ich habe dies getan und es funktioniert ziemlich gut:

iOS: Anwenden eines RGB-Filter auf einen Graustufen-PNG

Es ist jedoch zu betrügen, es ist das Hinzufügen, so für (zB) die rote Komponente jeden Pixel, R_dest = r_src + R_tint

Wenn Sie eine feinkörnige Steuerung möchten, zum Beispiel Sie können den Grauwert für jedes Pixel extrahiert werden soll, indem die RGB-Komponenten (mit entsprechender Gewichtung) gemittelt und dann diesen Wert mit Ihrem Farbton multiplizieren, so dass die resultierende Farbe sein würde, Graustufen (Sr, Sg, Sb) * {Tr, Tg, Tb}

Dies würde einen Teil des Speichers zu schaffen, einen Bitmap-Kontext zu schaffen, die in dieses Klumpen zieht, Ihr Bild in diesen Zusammenhang zeichnen, das Kopieren der gesamten Speicher chunk zur Aufbewahrung, Verarbeitung - Daten von der Kopie zu nehmen und die ursprüngliche Unterstützung Modifizieren Laden, dann ein Bild aus dem ursprünglichen Sicherungsspeicher zu extrahieren und alles Freisetzung von Ihnen zugeordnet werden.

Problem UIImage von RGBA-Pixel-Byte-Daten Rekonstitution

Diese Bibliothek hat für Sie alles getan, ist es nicht die effizienteste Route, aber es wird die Arbeit getan. iirc er nutzt malloc als er calloc verwenden sollte.

ich am Ende meine eigene benutzerdefinierte Schaltfläche erstellen, die genau das Rendering in der „Kontakt löschen“ Button in der Kontakte bearbeiten Ansicht verwendet entspricht.

Für Interessenten, kann es auf Github bei

finden

PFTintedButton

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top