Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What is going on with this article?
@masashi-sutou

iOS11で Grouped UITableView のセクションヘッダーに余分な高さが出る問題について

More than 3 years have passed since last update.

これはなに

  • iOS10までは tableView の Header や Footer の高さを無くすために、0.1 や CGFloat.leastNormalMagnitudetableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat に返していました`
  • しかし、iOS11になるとそれでは高さが無くならないケースが出て困った
  • こちらはtableViewのセクションヘッダーやフッターの高さを無くす方法が変わったのではなく、下記の条件が組み合わさると起きるバグでした。 :bow:
    • estimatedSectionHeaderHeight が-1(おそらく、UITableViewAutomaticDimension)になっている
    • tableView.tableHeaderView = UIView() など tableHeaderView に何かViewを設定している

 自分のプロダクトでは、状態によって tableView.tableHeaderView が変更される画面だったため、ある状態のときに tableView.tableHeaderView = UIView() をして、tableHeaderViewに空のViewを設定しておりました。

OSごとのデフォルト値の違い

Xcode 9(iOS 11 SDK)でUITableViewのSelf-Sizing(Auto Layoutによる高さの自動調整)がデフォルトになりました。

 したがって、それぞれのデフォルト値がiOS11で下記のように変更されています。

コード (iOS10/iOS11) Interface Builder
estimatedSectionHeaderHeight (0/-1 0
estimatedSectionFooterHeight (0/-1 0

 iOS10とiOS11で、estimatedSectionHeader(Footer)Heightのデフォルト値が違います。

 これにより、iOS10では無効であった、見積もりの高さがiOS11だと有効になることで今回のような余分な高さが、UITableViewに加算されて表示されてしまいます。

どうすればいいのか

  • コードからUITableViewをAutoLayoutで組む場合、見積もりの高さが必要ない場合は、 tableView.estimatedSectionHeaderHeighttableView.estimatedSectionFooterHeight に明示的に 0 を設定して見積もりを無効にしておく

スクショで比較

before after
Image uploaded from iOS.jpg Image uploaded from iOS.jpeg

参考資料

19
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
masashi-sutou
👨‍💻最近は、Swift・Flutter・Firebase・Vue・Nuxtとかやってます
diverse
結婚支援事業を中心に、友達・恋人探しのマッチング事業を展開。深刻化する恋愛離れ、未婚率の上昇を解決すべくWEB・アプリサービスを展開。すべての人へ出会いのプラットフォームを提供しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
19
Help us understand the problem. What is going on with this article?