[Ios] Xcode 9 - 「固定幅の制約によりクリッピングが発生する」その他のローカライゼーションに関する警告


Answers

制約ごとに「Respect Language Direction」を無効にして警告を消して、役立つかどうかを確認することができます。 制約を選択し、Attributes / Size Inspectorを開きます。 添付の画像をご覧ください。

psこのソリューションはiOSで動作します。 macOSの場合、警告を消すにはtry> =または<=を使用します。

Question

私は新しいXcodeをダウンロードし、Interface Builderには次のような警告を表示するのに問題があります:

固定幅の制約によりクリッピングが発生する

これは次のようになります。

私はいくつかの言語のローカリゼーションを行っていますが、別の言語ではラベルのサイズが変わるかもしれないという警告を理解していますが、私のアプリにはこの問題はありません。 私は昨日Xcode 8で実行してテストしましたが、それは問題ありませんでした。 私は何時間も何時間も費やして無意味な新しい制約を加えることを望んでいません。

推奨される解決策はありますか?




Swift 4、Xcode 9.1:

この問題については、あなたのオブジェクトは、それがスーパービューのコンテキストで正しい中心位置であるかどうかわからないと思うし、 remove、greater thanまたは他の先行/トレラリング設定を使用すると、ほとんどの場合正しく動作しません。 まず、スーパービューの正しい制約をチェックする必要があります。

あなたのスーパービューが正しく設定されている場合は"horizo​​ntal in Container"制約を設定することで、ビュー内の正しい位置をオブジェクトに「説明する」ことができます:




Xcode 9に移行するときも同じ問題があり、特定の種類のレイアウトに役立つアプローチが見つかった。 私の場合は、2つの列(UILabels)が固定幅であり、もう1つが可変幅である表ヘッダーが必要でした。 どのように列の幅を指定したかにかかわらず(等号の代わりに等号以上の制約を使用するなど)、私はクリッピングの可能性について警告を受けていました。 私の場合、必要に応じて可変幅の列(UILabel)をクリップしたかったのです。 私は警告を無視していたかもしれないが、それをやりたいとは思わない。

ここでは、適切なサイズの制約を持つUIViewを作成し、UIViewにサブビューとしてUILabelを埋め込む方法がありました。 必要に応じてトランケーションが発生し、警告が表示されません。 これは、UIView /埋め込みUILabelがStackViewにあるかどうかに関係なく機能します。

これは基本的にHaroldo Gondimと同じアプローチですが、StackViewの有無にかかわらず動作することがわかります。

次の図は、StackViewの有無によるアプローチを示しています。 "SpacerName"はラベルを含む可変幅のUIViewであり、 "SpacerPD"は80の固定幅を持つものです。[色は重要ではありません。 ビューがどこにあるかを示すためだけにそこにある]




LabelsLines0AutoshrinkプロパティがFixed Width Constraints May Cause Clippingを削除するMinimum Font Sizeに設定されると、次のように警告がFixed Width Constraints May Cause Clippingます。