1. ホーム
  2. アイオス

[解決済み】iOS 8.0より前のバージョンでは、レイアウトの最大幅を自動的に優先することはできません。

2022-04-18 08:04:59

質問

Xcode6 beta6で既存のiOSプロジェクトを開いたら、StoryboardファイルとXibファイルの両方で以下のような警告が表示されました。

自動優先最大レイアウト幅はiOSバージョンでは利用できません 8.0より前のバージョン

以下のように明示的にwidthを設定することで警告に対応してみました。

しかし、これでも警告は解消されませんでした。どうすれば削除できるのでしょうか?

解決方法を教えてください。

アップデート3:

この警告は、ラベルに numberOfLines が 1 以外に設定されている場合、デプロイメント ターゲットが 7.1 に設定されています。これは、新しいシングルビューのプロジェクトで完全に再現可能です。

再現のための手順

  1. 新規に単一ビュー、objective-c プロジェクトを作成します。
  2. デプロイメントターゲットを 7.1 に設定する
  3. プロジェクトのストーリーボードを開く
  4. 提供されたビューコントローラーにラベルをドロップします
  5. そのラベルのnumberOfLinesを2に設定します。
  6. コンパイル

以下のレーダーを申請しました。

rdar://problem/18700567

アップデート2。

残念ながら、Xcode 6のリリース版で再びこの現象が発生しました。なお、ほとんどの場合、手動でストーリーボード/xibを編集して問題を解決することができます。この問題は チャールズ・A を以下のコメントで紹介します。

なお、このような場合、間違って この警告を出すと、警告そのものは、その警告を見つけるのに役立つわけではありません。 ラベルが原因です。これは、複雑な ストーリーボード ストーリーボードをソースファイルとして開いて検索すると 正規表現で <label(?!.*preferredMaxLayoutWidth) というラベルを見つけるために の属性/値を省略することができます。もし preferredMaxLayoutWidth="0"を指定すると、そのような行で を明示し、値を0とする。

アップデート 1.

この不具合は、Xcode 6 GMで修正されました。

オリジナルの回答

Xcode6-Beta6およびXCode6-Beta7のバグですので、今のところ無視していただいて結構です。

Apple Developer forumsでAppleのエンジニアが これ このバグについて

Preferred max layout width は、UILabel の自動レイアウトプロパティです。 は、内容に合わせて自動的に縦に伸びるようにします。 Xcode の 6.0 より前のバージョンでは、preferredMaxLayoutWidth を 複数行のラベルは、設計時に現在の境界サイズになります。そのため は、実行時に preferredMaxLayoutWidth を手動で更新する必要があります。 水平方向のレイアウトが変更されました。

iOS 8 では このため、複数行のレイアウトを作成することができます。 ラベルがより簡単になりました。この設定はiOSとの後方互換性がありません。 7. iOS 7 と iOS 8 の両方をサポートするために、Xcode 6 では、size で preferredMaxLayoutWidth に "Automatic" または "Explicit" を選択できるようになりました。 インスペクタで確認できます。する必要があります。

iOS 8 をターゲットにしている場合は、"Automatic" を選択すると、最高のエクスペリエンスが得られます。ピック iOS 8をターゲットにしている場合は、"Explicit" を使用します。次に preferredMaxLayoutWidthを設定します。Explicitを有効にしてください。 を有効にすると、チェックした時点のバウンズサイズがデフォルトで使用されます。

警告が表示されるのは、(1)オートレイアウトを使用している場合、(2)オートレイアウトを使用していない場合です。 複数行のラベルに"Automatic"が設定されている場合(この設定は (3) デプロイメントのターゲットが iOS 8 の場合。

この警告は、オートレイアウトでない場合に表示されるバグのようです。 のドキュメントを参照してください。この警告が表示され、自動レイアウトを使用していない場合 という警告が表示されますが、無視していただいて結構です。

また、問題のストーリーボードまたは xib のファイルインスペクタで "Builds for" を "Builds for iOS 8.0 and Later" に変更すれば、問題を回避することができます。 <イグ