2009-06-03 13 views
0

Ich bin ziemlich neu in Cocoa, würde aber gerne wissen, wie man das Koordinatensystem eines CALayers ändert. Ich habe den Artikel Layer Geometry and Transforms aus dem Core Animation Programming Guide gelesen, brauche aber trotzdem einige praktische Ratschläge.CALayer-Koordinatensystem

Das Standardkoordinatensystem hat (0,0) in der unteren linken Ecke. Ich würde das gerne in die Mitte der Ebene ändern. Ist das möglich?

Was ich versucht habe: mit einem CATransform3DTranslate als SublayerTransform zu MidX und MidY des Layers Frame, werden die Sublayer an der richtigen Stelle angezeigt. Beim Ereignis setFrameSize sollte die Übersetzung dann neu berechnet und erneut angewendet werden. Ich hätte lieber eine automatische Aktualisierung (ohne 'Schritte').

Oder sollte ich kCAConstraintMidX verwenden, um die Unterschicht MidX mit der Schicht MidX zu verknüpfen und einen Offset zu verwenden? Tatsächlich benutze ich CATextLayers als Sublayer und möchte den Text zentriert ausrichten, damit die Mitte des Textes relativ zum Mittelpunkt der Superschicht positioniert wird. Ich habe es versucht, aber es scheint nicht automatisch zu aktualisieren, wenn ich die Super-Layer-Größe ändere.

Antwort

2

Sehen Sie sich den Apple-Beispielcode oalTouch an, der dies tut.

// Convert the view point to our layer/sound stage coordinate system, which is centered at (0,0) 
CGPoint pointInLayer = CGPointMake(pointInView.x - [self frame].size.width/2., pointInView.y - [self frame].size.height/2.);