wake-up-neo.net

Gestalten von UITableViewCells mit Farbverlaufshintergründen

Ich habe nach Möglichkeiten gesucht, die Attraktivität meiner iPhone-Anwendungen insgesamt zu verbessern. Ein Großteil der Funktionalität findet in UITableView statt. Ich denke, ich kann anfangen, indem ich UITableViewCells subtile Farbverläufe hinzufüge, da dies das Gefühl der App um eine Größenordnung zu verbessern scheint. Die Auswahl der geeigneten Schriftarten größen hilft auch sehr. Meine Frage an dieses Forum lautet: Was ist die beste Strategie, um UITableViewCells Farbverläufe hinzuzufügen? Verwenden Sie Core Graphics/Quartz? Verwenden Sie ein 1x1-Pixel-Bild und dehnen Sie es aus? Ich bin an etwas ähnlich dem folgenden Screenshot der Tumblr-iPhone-App interessiert:/- http://dl-client.getdropbox.com/u/57676/screenshots/tumblr.jpg

Hat jemand gute Beispiele dafür, wie Sie Ihre UITableViewCell herausragen lassen?

Und ist es aus Performancegründen besser, ein Bild zu verwenden oder mit Quarz zu zeichnen? Bei Quarz würde ich gerne einige Beispielcodes sehen, wie Leute die Farbverläufe in die Zellen ziehen.

Vielen Dank.

35
anon

Ich arbeite für Tumblr und obwohl ich die iPhone-App nicht geschrieben habe ( er hat ), habe ich die Quelle und kann Ihnen sagen, wie es gemacht wird.

In -tableView:cellForRowAtIndexPath:

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackground.png"]];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackgroundSelected.png"]];

Ganz einfach, wirklich: PNG-Bilder in einer UIImageView als Hintergrundansicht der Zelle. 

Bei den beiden Bildern handelt es sich um vertikale 1 × 61-Gradienten, die UIKit automatisch horizontal an die Breite der Zelle anpasst.

62
Marco
31
Mirko Froehlich

Die Antwort von Marco funktioniert gut für einfache Tabellensichtzellen und für gruppierte Tabellensichtzellen, die sich in der Mitte der Tabellenansicht befinden. Wenn Sie jedoch versuchen, eine Hintergrundansicht für die erste/letzte Zelle in einer gruppierten Tabelle festzulegen, wird die abgerundete Ecken. Um dies zu beheben, können Sie die Hintergrundfarbe der Zelle auf eine UIColor colorWithPatternImage setzen, z. B .:

cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Gradient.png"]]; 
2

Ich denke, der einfachste Weg, UITableView mit benutzerdefinierten Zellen zu handhaben, ist der Interface Builder. Es macht die Gestaltung der Benutzeroberfläche wesentlich einfacher als die reine Kernverarbeitung. Hier ist ein tolles Tutorial (mit einem Video!), Wie das geht. Sehr empfehlenswert. Ich verwende keine andere Methode der UITableView-Codierung, seit ich dem gefolgt bin.

Das Hinzufügen eines Farbverlaufs zu Ihrer Zelle ist jedoch extrem einfach. Verwenden Sie einfach InterfaceBuilder, um der Zellansicht ein Bild mit Ihrem Farbverlauf hinzuzufügen, und Sie sind fertig. Sie müssen sich keine Sorgen um Quartz machen, und hinsichtlich der Leistung werden ähnliche Ergebnisse erzielt, da die Komponenten von CocoaTouch sehr gut für einfache Aufgaben wie das Anzeigen eines Bildes optimiert sind.

0

UITableViewCell unterstützt separate Ansichten für ihren Hintergrund und den ausgewählten Hintergrund. Daher ist es sinnvoll, diese Eigenschaften zu verwenden. Um dies zu tun, müssen Sie sich ein Bild vorstellen, das sowieso die volle Größe Ihrer Zelle hat (UIImageView dehnt das Bild nicht aus), so dass Sie es einmal auf einem Desktop-Computer erstellen und speichern können Zyklen auf dem Telefon, die aufgewendet werden müssten, um ein Bild zu strecken oder dynamisch zu erstellen. Wenn Sie dem Benutzer jedoch erlauben möchten, die Verlaufsfarben zu ändern, müssen Sie ihn trotzdem einmal dynamisch erstellen.

0
HitScan

Ich würde dafür Quartz 2D verwenden, aber auch das Einrichten von Bildern in Photoshop ist absolut gültig.

Wenn Sie die Zellen nach Typ wiederverwenden, glaube ich nicht, dass dies ein Problem wäre. Wenn Sie jedoch einen Engpass finden, könnten Sie einmal in einen Bitmap-Kontext ziehen, ein Bild davon erhalten und dieses verwenden Überall - eine Art Hybridlösung.

0
philsquared

Mirkos Antwort ist eine gute Alternative, wenn Sie kein Bild verwenden möchten. Am besten fügen Sie jedoch den Verlauf der backgroundView hinzu, anstatt die UITableViewcell selbst. Auf diese Weise verlieren Sie die hervorgehobenen Effekte nicht, wenn Sie die Zelle auswählen

0
wL_