Ich war überrascht, keine Antwort auf diese Frage zu finden, vielleicht etwas sehr einfach irgendwie übersehen I:Holen Größe von UIView nach CGAffineTransform Anwendung
Wie die reale Größe eines UIView erhalten, nachdem ich eine CGAffineTransform anwenden es?
z.
meine UIView hat eine Größe von 300 x 200, verwende ich eine Skalierungstransformation sagen wir Faktor 2 sowohl horizontal als auch vertikal, so dass die UIView jetzt 600 x 400 auf dem Bildschirm, aber es ist Grenzen und seine Grenzen sind immer noch eine Größe 300 x 200 ... wo finde ich die wahre Größe der UIView?
ps. vergessen zu erwähnen, dass ich auch die uiview rotieren möchte. Wenn ich nur die Skalierung anwenden CGSizeApplyAffineTransform funktioniert gut, aber wenn es auch Rotation gibt, dann funktioniert es nicht richtig.
Edit: drawnonward mich in die richtige Richtung, ich raffiniert nur ein bisschen den Code zu kompilieren und hier ist es:
UIView* view = (your view being transformed);
CGAffineTransform trans = (view.transform or create a new transformation);
CGRect rect = [view bounds];
CGMutablePathRef path = CGPathCreateMutable();
rect.origin = CGPointZero;
CGPathAddRect(path , &trans , rect);
rect = CGPathGetBoundingBox(path);
CGPathRelease(path);
Jetzt rect.size enthält die Dimensionen der Ansicht mit der Transformation angewendet Danke nochmal an drawnonward
Hier ist die Dokumentation über "Frame" aus dem Apple Doc: Warnung: Wenn die Transformationseigenschaft nicht die Identitätstransformation ist, ist der Wert dieser Eigenschaft undefiniert und sollte daher ignoriert werden. Frame kommt also nicht in Frage, wenn eine Transformation angewendet wird. Und "Grenzen" gibt immer die Originalgröße zurück –
In der Tat! Argh, diese Funktion Bibliotheken, die ich immer vergessen - CGPathGetBoundingBox war der Trick. Ich habe die Frage mit dem Arbeitscode bearbeitet, danke viel Mann –
Beachten Sie auch, dass die Center-Eigenschaft funktionieren soll, auch mit Nicht-Identität-Transformationen. – Olie