Effizienter UITableView

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

  • Effizienter UITableView

    Hallo zusammen,

    Ich versuche gerade, meinen UITableView schneller hinzukriegen. Im Internet fand ich dann den Blog von Atebits und seine ABTableViewCell.(github.com/enormego/ABTableViewCell)
    In Seinem Quellcode braucht er einen Subview und zeichnet alles in diesen View. Wieso macht er das? Wieso zeichnet er nicht einfach alles direkt in die Zelle hinein?

    Danke im Voraus!
  • Steht da doch alles


    Why it’s Fast

    Much like on Mac OS X, there are two drawing systems on the iPhone. One is CoreGraphics, the other is LayerKit CoreAnimation. CoreGraphics does drawing on the CPU, CoreAnimation does drawing on whatever it thinks is fastest - most likely the GPU.

    The GPU on the iPhone hates blending, that’s why Apple recommends that you keep as many of your views opaque as possible. Sometimes you have no choice - if you have a label over an image you are forced to make the label transparent otherwise you get a big ugly block around your text.

    What’s a developer to do? Pre-blend of course… with CoreGraphics into your own view. If you blend your stuff together into a single static view on demand (e.g. when a table view moves a cell onscreen), it’s a little bit more expensive for the first frame, but every frame after that CoreAnimation is just dealing with one big, opaque texture… which it loves. It’s more than just the blending too. If you think about what is happening in terms of overdraw, having one big view per table cell is a big win because CoreAnimation will only touch a single given pixel on the screen once rather than multiple times (potentially, depending on how much overlap your old view hierarchy had).

    Irgendwie finde ich komisch, dass es dafür eine extra Anleitung geben muss. Für mich war das immer selbstverständlich, dass ich komplexe Zellen grundsätzlich selber mache und nicht irgendwie eigene Subviews auf die Standard-Zellen draufpacke. Auf die Idee wäre ich nie gekommen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Du solltest vielleicht noch einmal die Frage durchlesen. Ich weiss schon was ich zu tun habe, ich verstehe jedoch nicht, wieso er überhaupt einen ContentView braucht. Wieso zeichnet er nicht einfach alles in die Zelle?
  • junky94 schrieb:

    Wieso zeichnet er nicht einfach alles in die Zelle?

    Die Zelle kann rechts und links Buttons anzeigen (z. B. zum Löschen). Diese Buttons verwaltet die Zelle und für Ihre Anzeige verkleinert sie den Contentbereich. Wenn Du nur den Contentview für die Darstellung verwendest, kannst Du also auch dieses Verhalten der Zellen nutzen: developer.apple.com/library/io…oc/uid/TP40007451-CH7-SW1
    „Meine Komplikation hatte eine Komplikation.“