Ich möchte gerne animiert Rechtecke in einem UIView erscheinen lassen. Dabei soll nicht das Zeichnen jedes Rechtecks animiert sein, sie sollen lediglich nacheinander auftauchen. Bis jetzt habe ich das in drawRect und ohne Animation gemacht, jetzt soll es auf Knopfdruck und animiert sein. Ich habe keine Erfahrung auf dem Gebiet, wie gehe ich das am besten an?
Animiert in UIView malen
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Am einfachsten verwendest Du für jedes Rechteck einen eigenen View, die Du jeweils über eine Transition erscheinen lässt. Mit Core Animation kannst Du das Ganze auf Layerebene machen.
Wenn Du nur einen View bzw. einen Layer verwenden möchtest, musst Du das ebenfalls über Core Animation machen. Das ist aber wesentlich komplexer, da Du hier die Zwischenzustände der Animation in Abhängigkeit von einer Variablen zeichnen musst.„Meine Komplikation hatte eine Komplikation.“ -
Einzelne Views geht nicht, da es sehr viele werden.
-
Dann mach' es über einzelne Layer. Wie willst Du die erscheinen lassen und was heißt viele?„Meine Komplikation hatte eine Komplikation.“
-
Es geht letztendlich darum ein Bild zu generieren nach bestimmten Regeln. Bei einer Auflösung von 320*320 sind das also 102400 Rechtecke.
-
Coral schrieb:
Bei einer Auflösung von 320*320 sind das also 102400 Rechtecke.
Du meinst Punkte
Wie soll denn die Animation aussehen?„Meine Komplikation hatte eine Komplikation.“ -
Gut, es sind Punkte. Aber ich zeichne sie als kleine Rechtecke. Es läuft ein Zeiger nach einem bestimmten Muster über die komplette Fläche. Jedes mal, wenn ein Punkt berührt wird, wird dieser etwas dunkler. Das geht so lange, bis 90% der Punkte erreicht wurden.
Es wäre schöner, wenn nicht alles auf einmal erscheint, sondern das Bild sich in ein paar Sekunden aufbauen würde. -
Das kann man über einen CALayer mit einer animierbaren Property machen. Die abgedunkelten Bereiche kannst Du über Masken darstellen; d. h. Du malst das Bild ganz normal und zeichnest mit CoreGraphics transparente Flächen darüber. Alternativ geht das wahrscheinlich auch mit Core Image. Da musst Du unter iOS allerdings auch die Animation selber basteln.
Das Prinzip von animierbaren Propertys habe ich in meinem Macoun-Vortrag erklärt. Alternativ kannst Du auch hier schauen.„Meine Komplikation hatte eine Komplikation.“ -
Wenn ich das richtig verstanden habe, wird das Bild aber weiterhin am Stück generiert, und nur animiert dargestellt. Richtig?
-
Ja, Du solltest Dich beim Zeichnen nicht auf die Pixelebene hinab begeben. Abdunkeln oder Aufhellen kannst Du sehr gut über einen transparentes Overlay erreichen. Kannst Du mal ein Bild hochladen, das den Inhalt während der Animation darstellt?„Meine Komplikation hatte eine Komplikation.“
-
Ungefähr so, nur in kleiner, sehen die Bilder aus.
-
und die Animation?„Meine Komplikation hatte eine Komplikation.“
-
Noch habe ich keine Animation. Ich zeichne im Moment alles in drawRect in den UIView
-
Anstatt direkt Rechtecke in den View bzw. Layer zu malen, solltest Du vielleicht lieber mit einer Bitmap oder einem CGBitmapContext arbeiten. Da kannst Du dann die Pixel während der Animation wie gewünscht anpassen und die Bitmap dann zeichnen.„Meine Komplikation hatte eine Komplikation.“