UICollectionView Layout auf Urzustand zurücksetzen bzw. Storyboard auslesen?

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

  • UICollectionView Layout auf Urzustand zurücksetzen bzw. Storyboard auslesen?

    Hallo zusammen,

    habe mir eine UICollectionViewCell im Interface Builder gezeichnet. Nicht viel. Ein UIImage und ein Label, mit Autolayout schön platziert. Später noch mehr, ist nur für den ersten Test.

    Mein Programm ändert dann per Code das Aussehen der Zelle, wenn auf eine der Zellen getapst wird. Die Zelle wird animiert zum Vollbild und nur noch das UIImage dargestellt. Später noch mehr (UIButtons). Nun möchte ich per tapsen wieder den Urzustand herstellen, den ich im Storyboard erstellt habe. Nur kenne ich die ganzen Werte nicht, die der Interface Builder im Storyboard gesetzt hat.

    Können die UI Elemente und Autolayout Einstellungen eines Storyboard irgendwie ausgelesen werden oder soll ich gleich alles per Code "zeichnen"? Alles per Code erstellen und vor allem testen stelle ich mir recht zeitaufwändig und nervig vor.

    Das Grobe im Interface Builder erstellen (Elemente, Constraints, Stackview) und dann einen Programmcode ausgeben lassen, der vielleicht noch minimal angepasst wird, würde ich bevorzugen. Kennt jemand so etwas? Das ist meine eigentliche Frage ;)


    Danke!

    Grüße

    Helmut
  • Bei Zellen, egal ob Table- oder Collectionview, ist dafür die Methode prepareForReuse vorgesehen. Allerdings musst du das eigentliche Zurücksetzen von Hand machen. Ich würde mir dazu die Werte merken, die du verstellst. Bei Autolayout-Änderungen kannst du auch mit mehreren, konkurrierenden Constraints arbeiten, die du nach Bedarf aktivierst und deaktivierst. Aber Achtung, deaktivierte Constraints solltest du unbedingt durch eine starke (Outlet-) Property halten.

    Ich würde aber auf keinen Fall jede Zelle neu laden. Diesen Reuse-Mechanismus hat Apple nicht umsonst gebaut. Das Laden der Zellen ist relativ aufwändig. Wenn du es dennoch unbedingt machen willst, Zelle in ein NIB legen und über UINib erzeugen.
    „Meine Komplikation hatte eine Komplikation.“