UITableViewCell mit eigenem Background

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITableViewCell mit eigenem Background

    Hallo,

    ich versuche gerade, meine UITableView mit einem Schatteneffekt zu versehen. Dazu habe ich mir für die unterschiedlichen Zellen einzelne PNG Hintergrundbilder gebastelt, und sie wie in diesem Tutorial beschrieben: Cocoa with Love: Easy custom UITableView drawing eingebunden.


    Prinzipiell funktionierts, das resultat sieht so aus:

    [Blockierte Grafik: http://picload.org/image/acracp/foo.png]



    Das Problem ist jetzt allerdings, dass der Text nicht vertikal zentriert, sondern leicht nach unten verschoben ist. Das liegt wohl daran, dass der Inhalt anhand der Gesamthöhe der Zelle ausgerichtet wird, und nicht an der höhe des weißen Bereichs (ohne Schatten).


    Wie kann ich das nun korrigieren? Ich hab schon verschiedene Sachen versucht; Zelle größer machen (die untere ist 4px höher als die obere), das Textlabel verschieben per frame-Rect (hatte gar keinen Effekt) ...


    Ich bräuchte irgendeine allgemeine Lösung, da ich neben den Standard UITableViewCells auch meine eigenen Zell-Typen anpassen will (ich hab 4-5 Ableitungen von UITableViewCell mit unterschiedlichen Controls und Labels). Weiß jemand wie ich das hinbekomme?


    Danke im Voraus...
  • Bei Zellen mit eigenem Content-View sollte das eigentlich kein Problem sein, da Du die Subviews des Content-Views positionieren kannst, wie Du lustig bist. Die Standardzellen verhalten sich bei Layoutänderungen (z. B. über textLabel.frame) extrem zickig. Hast Du schon mal probiert, den Schatten außerhalb der Zelle zu zeichnen? Dazu muss natürlich das Clipping der Zelle ausgeschaltet sein.
    „Meine Komplikation hatte eine Komplikation.“
  • Wenn Du eine Custom Class von UITableViewCell verwendest, dann kann Du z.B. die Methode layoutSubviews überschreiben und dort das textLabel nach Deinen Wünschen positionieren.

    Beim Überschreiben der layoutSubviews Methode solltest Du [super layoutSubviews] nicht vergessen, damit die UITableViewCell erst mal alle Subviews entsprechend positionieren kann.