この他の質問 ここに同様の問題に対処するものがありますが、その場合、Xcodeの動作は正しく、迷惑です。
しかし、私の場合、それは実際にはバグだと思います。
そのラベルには無制限の行数を含めることができるため、クリップされることはなく、テキストが途切れるだけです。
すべてのローカリゼーションで正常に機能します。
ラベルを中央に配置し、テキストを余白から少なくとも20ピクセル離したいので、先頭と末尾に固定の制約を設定しました。 Xcodeは、それらの1つを「以上」の制約に変更することを望んでいますが、その場合、テキストは完全に中央に配置されません(私は試しました)。
必要なのは、余白に近すぎない中央揃えのテキストだけですが、今では、その警告をトリガーせずにそれを達成することはできません。
これを修正する方法についてのアイデアはありますか?それは本当にバグですか、それとも私は何か間違ったことをしていますか?
編集:エラーを示すスクリーンショットを次に示します。制約はビューコントローラに直接あるのではなく、テーブルビューの背景として使用するサブビューにあります。これらの制約を削除すると、警告は消えます。それらを追加し直すと、再び表示されます。私はこれを新しいプロジェクトで試しましたが、再現できませんでした。なぜここで起こっているのかわかりません。
編集:
別の例を示します。正しい制約が「以上」に設定されている場合は、すべて問題ありません。
「等しい」に設定するとすぐに、ブーム:
それでも答えを探している場合は、特定のケースで、ラベルに比例した幅を設定し、ViewControllerのビューの中央を水平に設定してみてください。
ラベルのすべての制約をクリアし、ラベルからBackground View
まで右クリックしてドラッグし、ポップアップメニューからEqual Widths
、Center Horizontally in Container
、およびCenter Vertically in Container
を選択します。
ラベルの左右両方に20pxの余白が必要だと言ったので、同じ幅の制約でMultiplier
を編集し、widthOfBackgroundView - 40)/widthOfBackgroundView
に設定します。
したがって、背景ビューの幅が414
であるとすると、乗数は374/414
であると想定されます。
width minus 40
乗数の理由は、ラベルの両側で20pxをカバーするためです。これにより、警告が消え、期待どおりにラベルがレイアウトされます。
同じ問題が発生し、この方法で警告を修正することができました。お役に立てれば!