71

すべてのユーザー制約を調べて削除しましたが、デバイスを回転させた後にのみ次のエラーが発生します。理由はまったくわかりませんが。誰にもアイデアはありますか?

2013-01-14 21:30:31.363 myApp[35869:c07] 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) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x84543d0 h=--& v=--& V:[UIView:0xa330270(768)]>",
    "<NSLayoutConstraint:0xa338350 V:[UIView:0xa331260]-(-1)-|   (Names: '|':UIView:0xa330270 )>",
    "<NSLayoutConstraint:0xa338390 V:|-(841)-[UIView:0xa331260]   (Names: '|':UIView:0xa330270 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0xa338350 V:[UIView:0xa331260]-(-1)-|   (Names: '|':UIView:0xa330270 )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
4

11 に答える 11

112

これらを一つ一つ見ていきましょう。

"<NSAutoresizingMaskLayoutConstraint:0x84543d0 h=--& v=--& V:[UIView:0xa330270(768)]>"

これは、ビュー 0xa330270 ( A ) の高さが 768 ポイントでなければならないことを示しています。

"<NSLayoutConstraint:0xa338350 V:[UIView:0xa331260]-(-1)-| (Names: '|':UIView:0xa330270 )>"

これは、ビュー 0xa331260 ( B ) の下端が、スーパービューであるAの下端から -1 のギャップでなければならないことを示しています。

"<NSLayoutConstraint:0xa338390 V:|-(841)-[UIView:0xa331260] (Names: '|':UIView:0xa330270 )>"

これは、Bの上端がそのスーパービューAの上端から 841 ポイントのギャップでなければならないことを示しています。

これら 3 つのすべてが当てはまるわけではありません。A の高さを 768 ポイントにすることはできず、上端から 841 ポイント、下端から -1 ポイントの位置にあるサブビューを含めることはできません。これらの各制約をどこで定義しましたか?

達成しようとしているレイアウトについては言及していませんが、スーパービューに自動サイズ変更マスクがあり、デバイスを回転させたときに高さが変化するのを防いでいるようです。私の知る限り、自動サイズ変更の制約は、ストーリーボードまたは xib がすべて自動レイアウトであるかどうかにかかわらず、プログラムでビューを追加した場合にのみ表示されます。自動レイアウトされたビュー(ペン先からロードされた?)を非自動レイアウトペン先からの別のビューに追加するようなことをしていない限り?

于 2013-01-14T21:56:15.127 に答える
9

これは一般的なエラーではないと思いますが、素人の方法で多少解決しました。上記のような不可解なメッセージを受け取っていました。それを理解するために、ダミーのビュー クラスを作成し、それをストーリーボードのビューにアタッチしました。たとえば、UIView がある場合、AddressView というクラスを作成し、ストーリー ボードでこのビューにアタッチしました。少し時間がかかりますが、私にとってはうまくいきました。その後、オブジェクト ID の代わりにクラス名を取得したので、問題の原因となっているビューを簡単に見つけることができました。私のエラーメッセージは今読んだ、

2013-07-02 04:16:20.434 Myproject [2908:c07] 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) 
(
    "<NSLayoutConstraint:0x9edeae0 V:|-(0)-[AddressView:0x143ee020]   (Names: '|':MainView:0x129eb6a0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x11e998c0 h=--& v=--& V:[MainView:0x129eb6a0(704)]>",
    "<NSLayoutConstraint:0x156720b0 V:[AddressView:0x143ee020]-(896)-|   (Names: '|':MainView:0x129eb6a0 )>"
)

ここで、私のビュー MainView と Address ビューの名前が問題を引き起こしていることがわかります。

それを解決するために、サブビュー (この場合は Address ビュー) を移動し、元の位置に戻しました。この問題は、Xcode 4.5 の新しい Automatic Layour と古いスキルを組み合わせて使用​​したり、ビューを手動で配置したりしたときに始まったと思います。

とにかく、それが勤勉さよりも運が良かったかどうかはわかりませんが、それでもこれはデバッグの別の方法である可能性があります. 多分これは誰かを助けるでしょう!

于 2013-07-02T02:30:40.447 に答える
4

xib ファイル (ソース コードとして xib を開く) からすべての translatesAutoresizingMaskIntoConstraints プロパティを削除することで、この問題を修正しました。

于 2014-05-27T04:28:02.743 に答える
3

1 つのメモ。パーソナル ホットスポット接続を使用してテストしていて、ホットスポット ステータス バーが上部にある場合、ログにこのエラーが表示されます。それは制約を捨てます。

これが誰かの助けになることを願っています..私を夢中にさせていました。

于 2016-01-08T23:36:17.487 に答える
0

デバッグ コンソールで「制約を同時に満たすことができません」というメッセージが生成されるこの問題は、XCode 9.4 でも発生します。
iPad シミュレーターでの私の特定のインスタンスでは、メッセージは次のように生成されます
。1) 特定の UITextField にフォーカスを置いた場合のみ。
2) すべてのビュー制約が削除された場合でも。
2) すべてのビュー制約がある場合でも、「提案された制約にリセット」します。

ただし、ソフトウェア キーボードをオンに切り替えて表示すると、メッセージは生成されませんでした。したがって、この問題にどれくらいの時間を費やす必要がありますか。私の例では、ソフトウェア キーボードがオフになっている場合にのみ生成されます。

于 2018-06-20T02:20:07.343 に答える
0

この行は、上記のようなログが uitableviewCell にあるときに私の問題を解決しました

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableView.automaticDimension > CellHeight.rowHeight44 ? UITableView.automaticDimension : CellHeight.rowHeight44
}
于 2021-01-15T10:26:21.683 に答える
0

私にとって、このエラーは私が与えたときに吐き出されましたtableView.estimatedRowHeight = UITableViewAutomaticDimension

これはあるべきだったtableView.estimatedRowHeight = "Some hardcoded value"

于 2018-03-26T22:32:08.810 に答える