web-dev-qa-db-ja.com

「先頭と末尾の制約を修正するとクリッピングが発生する可能性があります」バグ?

この他の質問 ここに同様の問題に対処するものがありますが、その場合、Xcodeの動作は正しく、迷惑です。

しかし、私の場合、それは実際にはバグだと思います。

example

そのラベルには無制限の行数を含めることができるため、クリップされることはなく、テキストが途切れるだけです。

すべてのローカリゼーションで正常に機能します。

example2

ラベルを中央に配置し、テキストを余白から少なくとも20ピクセル離したいので、先頭と末尾に固定の制約を設定しました。 Xcodeは、それらの1つを「以上」の制約に変更することを望んでいますが、その場合、テキストは完全に中央に配置されません(私は試しました)。

必要なのは、余白に近すぎない中央揃えのテキストだけですが、今では、その警告をトリガーせずにそれを達成することはできません。

これを修正する方法についてのアイデアはありますか?それは本当にバグですか、それとも私は何か間違ったことをしていますか?


編集:エラーを示すスクリーンショットを次に示します。制約はビューコントローラに直接あるのではなく、テーブルビューの背景として使用するサブビューにあります。これらの制約を削除すると、警告は消えます。それらを追加し直すと、再び表示されます。私はこれを新しいプロジェクトで試しましたが、再現できませんでした。なぜここで起こっているのかわかりません。

example3

編集:

別の例を示します。正しい制約が「以上」に設定されている場合は、すべて問題ありません。

example4

「等しい」に設定するとすぐに、ブーム:

example5

7
dbmrq

それでも答えを探している場合は、特定のケースで、ラベルに比例した幅を設定し、ViewControllerのビューの中央を水平に設定してみてください。

ラベルのすべての制約をクリアし、ラベルからBackground Viewまで右クリックしてドラッグし、ポップアップメニューからEqual WidthsCenter Horizontally in Container、およびCenter Vertically in Containerを選択します。

ラベルの左右両方に20pxの余白が必要だと言ったので、同じ幅の制約でMultiplierを編集し、widthOfBackgroundView - 40)/widthOfBackgroundViewに設定します。

したがって、背景ビューの幅が414であるとすると、乗数は374/414であると想定されます。

width minus 40乗数の理由は、ラベルの両側で20pxをカバーするためです。これにより、警告が消え、期待どおりにラベルがレイアウトされます。

同じ問題が発生し、この方法で警告を修正することができました。お役に立てれば!

5
Pranay

Xcode 9の最終バージョンで導入された、ここでのいくつかの問題。バグは言語の方向に関連しているようです。何らかの理由で、InterfaceBuilderはデフォルトの言語の方向条件の自動レイアウトを十分に理解していません。

Repose on this thread で示唆されているように、失敗した制約の少なくとも1つ(つまり、末尾)の言語方向の使用を無効にするようにしてください。このアプローチは私の警告を解決しました。

3
valvoline

Xcode 9GM(バージョン9.0(9A235))でチェックすると、正しく動作します

Xcode screenshot

制約を削除し、手動で追加します。

2
OMGHaveFun