NSLayoutConstraints
縦向きと横向きに使用したい視覚的な書式設定文字列を使用して構築された個別の配列があります。この 2 つを切り替えるには、2 つの方法を試しました。アクティブ化/非アクティブ化、および追加/削除です。
有効化/無効化:
portaitConstraints.forEach {
$0.active = false
}
landscapeConstraints.forEach {
$0.active = true
}
追加/削除:
self.view.removeConstraints(portraitConstraints)
self.view.addConstraints(landscapeConstraints)
どちらのメソッドも正常に動作し、期待どおりに動作しているように見えますが、アクティブ化/非アクティブ化メソッドで次のランタイム エラーが発生します。
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
これに共通するパターンはありますか?エラーが期待どおりに動作する場合、エラーを安全に無視できますか? 一方のメソッドと他方のメソッドのオーバーヘッドは異なりますか? ビューへの制約の追加とビューからの制約の削除を繰り返すよりも、アクティブにしたいプロパティの「アクティブな」プロパティを反転する方が理にかなっていると思いました。
それとも、これはこれを行うためのばかげた方法であり、NSLayoutAttributes
直接変更するようなことをする必要がありますか?