2015-12-22 6 views
5

いくつかの制約があるビューを閉じると面白いエラーが表示されます。ビューが閉じられたときに自動レイアウトの内部エラーが発生する

自動レイアウト内部エラー。 の中で、 着信ヘッドAppName.ViewName:0x7fc072ed8ef0.Width {id:6805}の発信ローヘッドを見つけることができません。これは、ゼロに近い係数を持つ変数の最適化です。 は発生しません。

これらの制約を追加するいくつかのビューでこのバグが発生しています。このエラーメッセージの1つのバリエーションは次のとおりです。

自動レイアウト内部エラー。 係数がゼロに近い変数 の最適化中に着信ヘッド{id:6630}の発信ローヘッドを見つけることができません。

誰もこのエラーで同様の問題が発生しましたか?どのようにそれをデバッグするためのヒント?

+0

これは、満たされていない制約のために発生します。あなたはリード、トレールの高さと幅を修正する必要があります。場合によっては、3つのサイドラップの制約によって満たされるときに、4つのサイドラップで完了することもあります。 –

+0

あなたは精緻化できますか? "リードトレールの高さと幅に合わせて修正する"。左右と上の制約があることを意味しますか? – Unome

+0

hai以下のリンクを参照してください。 http://stackoverflow.com/questions/28965610/cannot-find-an-outgoing-row-head-for-incoming-head-uibutton –

答えて

3

私はまだこれがどのようなのかを100%確信していませんが、等幅または高さの制約値として整数がある場合、制約にほぼゼロの係数を得ることが重要です。

たとえば、1.2や0.8などのフラット値を使用できない場合は、0.79999または1.199999を実行する必要があります。一部のデバイスでクラッシュする場合があります。

0.7999のような数字を使用するようにすべての制約を更新しました。

クレイジーな証拠がありますか?

夢中

0.8 0.79999999 "偽" が、これはバグが起こった理由を正確に示しています

let a: Double = 0.8 
let b: Double = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 
print(a == b) 

遊び場の結果は、その後驚くほど読み:遊び場でこれを入れてください。お役に立てれば。

+0

狂っているわけではありませんが、コンピュータはあなたの数学をバイナリで行い、決して不正確ではないと言います。次をご覧ください:https://en.wikipedia.org/wiki/Machine_epsilon – EricLeaf

関連する問題