iOS11에서 Grouped UITableView 섹션 헤더에 추가 높이가 발생하는 문제에 대해

이것은 무엇입니까?


  • iOS10까지는 tableView의 Header 나 Footer의 높이를 없애기 위해, 0.1이나 CGFloat.leastNormalMagnitudetableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
  • 그러나 iOS11이되면 그럼 높이가 없어지지 않는 경우가 나와 곤란했다

  • 여기는 tableView의 섹션 헤더와 바닥글의 높이를 없애는 방법이 바뀌었던 것이 아니라, 아래의 조건이 조합되면 일어나는 버그였습니다.
  • estimatedSectionHeaderHeight가 -1 (아마도 UITableViewAutomaticDimension)입니다.
  • tableView.tableHeaderView = UIView() 등 tableHeaderView 에 뭔가 View 를 설정하고 있다


  • 자신의 제품에서는, 상태에 의해 tableView.tableHeaderView 가 변경되는 화면이었기 ​​때문에, 어느 상태일 때에 tableView.tableHeaderView = UIView() 를 해, tableHeaderView 에 빈 View 를 설정하고 있었습니다.

    OS별 기본값 차이


  • htps : // v.ぁsss d. jp / s 마 rtp 호네 / 이 p 호네 / x 코데 - 9- 우타 b ゔ ぃ ぃ ㄷ

  • Xcode 9(iOS 11 SDK)에서 UITableView의 Self-Sizing(Auto Layout으로 높이 자동 조정)이 기본값입니다.

    따라서 각 기본값은 iOS11에서 다음과 같이 변경되었습니다.



    코드 (iOS10/iOS11)
    인터페이스 빌더


    estimatedSectionHeaderHeight
    (0/-1)
    0

    estimatedSectionFooterHeight
    (0/-1)
    0


    iOS10과 iOS11에서 estimatedSectionHeader (Footer) Height의 기본값이 다릅니다.

    이로 인해, iOS10에서는 무효였던, 견적의 높이가 iOS11이라고 유효하게 되는 것으로 이번과 같은 여분의 높이가, UITableView에 가산되어 표시되어 버립니다.

    어떻게 해야 할까


  • 코드에서 UITableView를 AutoLayout으로 구성하고 견적 높이가 필요하지 않은 경우 tableView.estimatedSectionHeaderHeight 또는 tableView.estimatedSectionFooterHeight에 명시 적으로 0을 설정하여 견적을 비활성화하십시오.

    스쿠쇼에서 비교




    before
    after






    참고 자료


  • htp : //에서 vhy. 이 m/2017/06/07/23-이오 S11-안 dx x 9-아다 pt/
  • htps : // 코 m / 토끼 마루 / ms / 9 821
  • 좋은 웹페이지 즐겨찾기