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

warning-preferred-width

公開日: 

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

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

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

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

となります。

 

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

sponcer link

 

警告の出る条件

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

UILabel#preferredMaxLayoutWidthはなぜ必要か

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

Auto LayoutでCustom Viewを作る その2

簡単に言うと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です!

 

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

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

その次に出てきた

id=”fo8-La-WaG”

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

 

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

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

find-object

 

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

めでたしめでたし。

 

P.S.

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

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

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だし!?

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑