• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Wie kann man ein UILabel drehen/rotieren?

martiko

Golden Delicious
Registriert
09.10.10
Beiträge
7
Hallo,
abgesehen von meiner "Vorstellung" mein erstes Posting hier, ich hoffe es kann mir jemand einen Tipp geben, im Web habe ich dazu leider bisher keine Lösung gefunden...

Wie der Titel schon sagt, möchte ein UILabel in beliebigen Winkel anzeigen. Die prinzipielle Vorgehensweise dazu habe ich gefunden:

myLabel.transform = CGAffineTransformMakeRotation( RAD );

Für die Winkel 0 / 90 / 180 / 270 Grad (bzw. dem zugehörigen Rad-Wert) funktioniert das auch sehr gut. Aber die bei den "Zwischenwerten" also z.B. 45° sieht die Rotation ganz seltsam aus, als ob eine 3D-Rotation durchgeführt würde, wird der Text viel kleiner und auch "gekippt". Ich dachte dann, dass eventuell ein falscher Drehpunkt verwendet wird. Darauf hin habe ich nochmal gesucht und gefunden, dass man den Drehpunkt (bzw. generell Ursprungspunkt für die Transformationen) setzen kann, z.b so in die Mitte des zugehörigen Layers:

myLabel.layer.anchorPoint = CGPointMake(0.5, 0.5);

Leider ändert das am Ergebnis nichts, es wird immer noch sehr komisch rotiert, gekippt usw...

Hat jemand einen Tipp, was ich falsch mache? Ich möchte eigentlich nur einen UILabel (z.B. sogar auch nur einen Buchstaben) um seinen eigenen Mittelpunkt drehen...

Danke und Gruß,
martiko
 
Hi Miralem,
danke für die Antwort und Mühe, das sogar nachzustellen...

Ich hatte das Problem etwas vereinfacht dargestellt und das weggelassen, was (meiner Meinung nach) nicht relevant ist.
Durch Deinen Beitrag bin ich darauf gekommen, dass aber gerade das "Drumherum" für den Fehler verantwortlich war.
Und zwar hatte ich das Label nicht nur gedreht, sondern auch in der Größe und Posistion geändert und das immer wieder über einen Timer. Das Problem dabei war, dass die Veränderung des UILabel-Frames sich dann auf die bereits rotierte Form bezogen hat, was durch den zyklischen Aufruf zu den sehr seltsamen Effekten geführt hat.
Die Lösung war also:
1. Rotation mit myLabel.transform = CGAffineTransformMakeRotation( 0 ); zurücksetzen
2. Änderungen an myLabel.Frame vornehmen
3. Gewünschte Rotation mit myLabel.transform = CGAffineTransformMakeRotation( <winkel> ); (wieder) herstellen

Danke nochmal, ist echt klasse, dass das jetzt funktioniert!