Frage

Erstellen Sie ein quadratisches UIView -Objekt testView_ und fügen Sie diese unter ViewDIDLOAD hinzu:

- (void)viewDidLoad {
[super viewDidLoad];
CGRect initialRect = testView_.frame;
NSLog(@"before rotation: w %f h %f x %f y %f", initialRect.size.width, initialRect.size.height, initialRect.origin.x, initialRect.origin.y);
testView_.transform = CGAffineTransformMakeRotation(0.1);
NSLog(@"after rotation: w %f, h %f, x %f, y %f", testView_.frame.size.width, testView_.frame.size.height, testView_.frame.origin.x, testView_.frame.origin.y);
testView_.frame = initialRect;
NSLog(@"reassign: w %f, h %f, x %f, y %f", testView_.frame.size.width, testView_.frame.size.height, testView_.frame.origin.x, testView_.frame.origin.y);
}

Ich erhalte dies in der Konsole:

2011-04-27 12:30:32.492 Test[31890:207] before rotation: w 100.000000 h 100.000000 x 20.000000 y 20.000000
2011-04-27 12:30:32.494 Test[31890:207] after rotation: w 109.483757, h 109.483757, x 15.258121, y 15.258121
2011-04-27 12:30:32.495 Test[31890:207] reassign: w 117.873589, h 100.000000, x 11.063205, y 20.000000

Ich konnte die Logik hinter dieser Änderung des Rahmenwerts nicht herausfinden, insbesondere die letzte. Kann mich jemand aufklären? Vielen Dank.

War es hilfreich?

Lösung

In UIView Class Referenz können Sie sehen hier dass Sie den Rahmen einer Ansicht nicht mit einer anderen Transformationseigenschaft einstellen sollten Cgaffinetransformidentität.

Wenn Sie die Position der transformierten Ansicht ändern möchten, sollten Sie verwenden Center Eigentum. Wenn Sie die Größe anpassen möchten, die Sie verwenden sollten Grenzen Eigentum.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top