2016-08-10 6 views
0

最近、私はCGAffineTransformCATransform3Dのビューとレイヤーで作業しています。レイヤーレベル、特にビューレベルでトランスフォーメーションを適用する場合、オートレイアウトは関連ビューのフレームを更新しません。たとえば、レイアウト|H:[ViewA]-[ViewB]|に従うことを検討してください。ちょうどViewAで変換を適用する場合。CGAffineTransformは自動レイアウトに影響しません

//We can either 
    ViewA.transform = CGAffineTransformMakeScale(1.5, 1.5) 
    ViewA.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.0) 
ViewB

は自動ViewA高さ、幅、または位置が変換後に変更しているので、それはRECT調整してはなりません。私はまた、未定義の状態になります変換は、ビューまたはフレームのFrameまたはBoundsには影響を与えません

self.view.layoutIfNeeded() 

答えて

1

を呼び出してみました。例:X:10、Y:10、W:100、H:100のフレームを持つ長方形の画像があり、これを45度回転させると、フレームはどうなるでしょうか? transformationに関するAppleのドキュメントから

このプロパティが恒等変換でない場合は、フレーム プロパティの値が定義されていないため、無視されるべきです。

これは、AutoLayoutが更新を実行しない理由を説明しています。

+0

私はドキュメンテーションでそれを逃していただきありがとうございます..実際には、私はフレームを記録していたと私はフレームがchagingですが、関連するビューが混乱しているので、スケールされた結果を得ていた。変換をアイデンティティに変えてその違いをフレームに適用する方法があるのは興味深いだけです。 – Azerue

関連する問題