Categories: iOS

【iOS】Preferred widthの設定が必要なLabel or Buttonを見つけ出す

storyboardなどのInterfaceBuilderで開発していると出てくる以下の警告

Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0

警告をポチってすぐ対象のLabelやButtonにいけばいいんですけど、場合によってはなんでか飛ばないことがあって

どこのラベルかくらいおしえろよー(#゚Д゚)ゴルァ!!

となります。

そんな時に警告対象のラベルを見つけるtipsです。

警告の出る条件

そもそもなんでpreferred widthの設定が必要なのかというのは以下のサイトを参考に。


- blogios.stack3.net

それで設定しないとどうなるかは同じサイトの以下をみるとわかりやすい。


- blogios.stack3.net

簡単に言うとautolayoutの計算をするときにズレが生じるようになるみたいです。

上記サイトだと横にした場合に余計な高さの空白が生じてしまっていますね。

今までは端末の向きを縦固定としていても横のサイズがかわらなかったので特に顕著に出なかったのですが、

iPhone6の登場により横幅が大きくなり(怒)、これらの設定がますます重要になってきたという感じでしょうか。

さて、そんなにっくき

Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0

の警告が出る条件ですが、

LabelのLinesが0 かつ Preferred Widthが設定されていないラベル or ボタン かつ iOS7もサポート!

があると警告が発令されるようです。

対処法

前置きが長くなってしまいましたが、警告を消す対処法としては至って簡単で

LabelのLinesが0 かつ Preferred Widthが設定されていないラベル or ボタン

を探しだしてPreferred Widthを設定してあげればいいわけです。

しかし、なぜかXcodeさんがどこのラベルのことをいってるのかわからない時があります。

そういうときの裏技がいまから紹介するtipsです!

まず、コンソールで以下のコマンドを叩きます。

grep -E "<label|<button" 警告のあるファイル名 | grep -v preferredMaxLayoutWidth | grep numberOfLines

これで問題のあるオブジェクトを探せます。

その次に出てきた

id=”fo8-La-WaG”

みたいな感じで書かれてるIDをコピーします。

そんでもって、xcodeでそのIDを検索してやるとあら不思議!

警告からは探せなかった警告対象のオブジェクトを見事探し当てることができるようになりました!!

あとはPreferred Widthを設定してあげれば警告も無事消えるかと思います。

めでたしめでたし。

P.S.

以下のstackoverflowに似たような感じで正規表現がかいてありました。

I opened an existing iOS project with Xcode6 beta6, and Xcode lists the following warning for both Storyboard and Xib files: Automatic Preferred Max Layout Width is not available on iOS versions
Automatic Preferred Max Layout Width is not available on iOS versions prior t... - Stack Overflow

You can open the storyboard as a source file and search with the regex <label(?!.*preferredMaxLayoutWidth) to find labels that omit a preferredMaxLayoutWidth attribute/value.

しかし、自分は <label(?!.*preferredMaxLayoutWidth) の正規表現ではうまく探せませんでした。。

P.S.2

あれ、もしかしてこれpotatotipsでも発表できるようなtipsだったかな・・・?

tipsぽいtipsだし!?

mogmet

View Comments

  • I may need your help. I've been doing research on gate io recently, and I've tried a lot of different things. Later, I read your article, and I think your way of writing has given me some innovative ideas, thank you very much.