TableViewでReadableContentGuideを設定する

はじめに

iOS9から横幅が著しく広い場合に読みやすい幅に自動で調整してくれる機能が追加されたようです。

色々調べてみたのですが、CustomCellに対する対応の記事が全然見つからなかったのでまとめます。

CustomCellの制約

CustomCellに制約をつけます。シンプルにlabelにAlign Center Y to SuperViewLeading Space to SuperViewの2つだけつけています。

Leading Space to SuperViewの制約を開き、Second Itemの欄を開き、Relative to marginにチェックを入れます

コードで制約をつけている場合は以下のように設定することで同じようにReadableContentGuideに対応できるようになります。

titleLabel.leadingAnchor.constraint(equalTo: self.contentView.readableContentGuide.leadingAnchor).isActive = true

この段階でTableViewに表示した場合はまだReadableContentGuideに対応できておらず追加でTableViewに設定を入れる必要があります。(※わかりやすいようにcellの背景色には色を付けています。)

TableViewの設定

TableViewを選択してFollow Readable Widthにチェックを入れます

これでReadableContentGuideに対応することができ、幅が自動調節されるようになりました。

コードで指定を行う場合は以下のように設定すればIBで設定したものと同じように自動調節されます

tableView.cellLayoutMarginsFollowReadableWidth = true