水無月の余韻 開発Sc.

プログラミング関連の雑記

ReadableContentGuide を試してみた

ReadableContentGuide

iOS 9 から導入された、コンテンツ幅を端末や文字サイズに対応した、読み易い幅に設定するものだ。

Safe area とともに、WWDC 2018 のセッションでも触れられていた。

developer.apple.com

Xcode 9.4 を使った場合の動作を試したので記録する。

加賀ゆびぬき刺し模様シミュレータを題材にしたので、キャプチャにあるのは開発中の画像です。Readable Widthの適用がわかりやすいため、iPad 横向きを使用しています。

なお、ここで扱うTableViewでは、UITableViewCellとContentView の "Preserve Superview Margins" をONにしてある。

基本

Xib や Storyboard で、ViewのSize Inspector上で、”Follow Readable Width” のチェックを入れることで有効にできる。 有効にしたViewのMargin(内側)が、Readable width に則って設定されるようになる。

これを有効に使うには、Viewの子要素は、margin に対してconstraints を設定する必要がある。 constraints を作成するときに、“constrain to margins” にチェックを入れた上で親Viewとの位置関係を指定する。

UITableView

TableViewにReadable Widthを適用するとき、”Follow Readable Width” のチェックボックをONにするViewによって、レイアウトが変化する。

UITableViewの基本的な構造の内、ここでは上層の3つを扱う。コンテンツ依存になるContentViewの中身については、基本のルールに従うので触れない。

  • UITableView
    • UITableViewCell
      • ContentView
        • Label などコンテンツの中身

Case 1

Follow Readable Width の設定

  • UITableView: OFF
  • UITableViewCell: OFF
  • ContentView: ON

まず、Readable widthを設定しようとするのは、ContentViewになるだろう。 CellのContentViewにだけ、ContentViewにFollow Readable Widthを設定した。

f:id:ichiko_revjune:20180708200943j:plain

コンテンツ幅は、Readable Widthになり、それらしくなる。しかし、accessary を使用している場合には、accessaryが右端に表示されるため、コンテンツと離れてしまう。 また、2行目以降と見比べると、accessaryの有無で、コンテンツ幅が揃わないという問題もある。

Case 2

Follow Readable Width の設定

  • UITableView: OFF
  • UITableViewCell: ON
  • ContentView: ON

次に、UITableViewCell にも設定する。 これはひとつ前の状態と変化しなかった。

Case 3

Follow Readable Width の設定

  • UITableView: ON
  • UITableViewCell: ON
  • ContentView: ON

次は、UITableViewにも設定しよう。

UITableViewのSize Inspectorには項目がないのだが、UITableViewとUITableViewCellを同時に選択すると、”Follow Readable Width” のチェックボックスが出現する。

f:id:ichiko_revjune:20180708201037j:plain

チェックボックスをONにする。

f:id:ichiko_revjune:20180708201139j:plain

accessaryの位置がReadable Widthの中に収まった。 しかし、今度は、accessaryの左側の余白が気になる。

Case 4

Follow Readable Width の設定

  • UITableView: ON
  • UITableViewCell: ON
  • ContentView: OFF

ContentViewの"Follow Readable Width" を外した。

f:id:ichiko_revjune:20180708201117j:plain

accessary の左側の余白がなくなり、きれいにそろった。 いまのところ、これがベストの設定のようだ。