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



Answers

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

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

Question

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

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

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

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

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




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




私は同じ問題を抱えていましたが、 >=に変更すると自動的に定数が0設定されます。たとえば、 60を選択すると、警告が再度表示されます。 だから、私はこの問題に突っ込んでいた。

LabelView埋め込むことを修正できました

Editor > Embed In > View

Labelは、 TopBottomTopBottomconstant = 0

Viewで私は前に予想していたconstraintsを設定しました。




私はスーパービューの端から同じパディングを持つボタンを持っているときに同様の問題を抱えていました。

私は、 horizontal center拘束とequal widths拘束をsuper view




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

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

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

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




Links