メインビューが回転したら、サブビューを再配置したいので、ViewControllerでオーバーライドします
willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
そこにサブビューのフレームを設定します。これはすべてうまくいっていますが、サブビューでもオーバーライドしました
layoutSubviews
そのため、正しくレイアウトされます。しかし、問題は、これが2回呼び出されることです。おそらく1回はwillAnimateRotationToInterfaceOrientationでフレームを設定したとき、もう1回は回転が原因です。(フレームを設定しないと、一度呼び出されます。)
確かに、これは設計上の欠陥のように見えるようにフレームをレイアウトするのはViewControllerの責任です-layoutSubviewsが1回だけ呼び出されるようにするための解決策は何ですか?