3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

iOS15のUITableViewCellとTableViewHeaderでハマりかけた事。

Posted at

備忘も兼ねて。

iOS14までは問題なかったのに、iOS15になるとクラッシュしてしまう箇所があった。

下記の内容がTableViewCellを読み込んだ際にクラッシュするというもので、調べてみるとレイアウト関連が悪さしているらしい。

Must translate autoresizing mask into constraints to have
_setHostsLayoutEngine:YES.

手がかりであるsetHostsLayoutEngineで調べ見てると、
UITableView.xibの設定にある
Layout:Autoresizing Mask → Inferred
の修正で良いみたいなんですが、これでは私の環境ではダメでした。
また、Inferredだとレイアウトが崩れてしまっていたという事もあり、レイアウトまで触っている時間が無かった為、Autoresizing Maskに戻しました。

最終的には、UITableViewCellをソースコードで開き、tableViewCellContentViewタグ内にある
translatesAutoresizingMaskIntoConstraints="NO"
を削除する事により、クラッシュする事はなくなった為、問題なさそう。

TableViewHeaderでは不自然な余白が入るようになってしまっており、TableViewHeaderが原因なのは明白だった為、
iOS15のUITableViewHeaderの上部に空白ができる
を参考にさせていただき、Headerの高さを設定する箇所に追記した事により、無事元通りになったので、一先ずは良かったかなと。

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if #available(iOS 15,*){
        tableView.sectionHeaderTopPadding = 0.0
    }
 ~  ~
}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?