-
UITableView를 스냅킷으로 구현하면서 생겼던 이슈iOS 2018. 9. 30. 22:55반응형
기본적으로 UITableView의 디폴트 셀의 크기는 44입니다. 아이패드든 아이폰이든 어느 기종이든지 그건 바뀌지가 않습니다.
따라서, 테이블뷰 셀을 짜면 어느 기종이라도 픽셀수와 보이는 모양새가 똑같아야 하는 게 정상입니다.
이를 기반으로 커스텀 셀을 작성하는데, 묘하게 자꾸 기종마다 만드는 모양새가 달라지는 것을 발견했습니다.
같은 아이폰 6s 시뮬레이터 사진입니다. 하나는 OS 12이고, 하나는 OS 9입니다.
같은 모양이 안 나오죠.
여기에 아이패드는 여백도 이상하게 나옵니다.
조사해본 결과...
iOS 10? 부터 테이블뷰가 셀의 크기를 자발적으로 계산해서.. 하이트를 추론(?)한다는 사실을 알았습니다.
저는 당연히 44 하이트 고정을 생각해서 스냅킷 컨스트레인트를 느슨하게 주었고,.. 그 결과
이미지뷰의 instrincContentSize 로 인해 하이트를 과대 추론해, 44 보다 큰 값을 알아서 주고 있다는 사실을 알았습니다.
따라서 OS별로 모양이 꺠져 보였던 것입니다.
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
이 경우, 하이트가 44(automaticDimension)임을 표기해주는 것으로 해결했습니다.
또한 아이패드의 경우... 테이블뷰의 컨텐츠를 보기 편하게 해주려고 약간 여백(?)을 주는 게 디폴트로 설정되어있다는 것을 알았습니다. 그 결과..
안 이쁜 여백이 생겨버리고 만 것이죠..
이건 이 옵션을 꺼 버리는 방법으로 처리했습니다.
tableView.cellLayoutMarginsFollowReadableWidth = false
두개를 손봐 준 결과 유아이가 깨지지 않았습니다.
반응형'iOS' 카테고리의 다른 글
UIAlertViewController 에서 여러 줄의 인풋(UITextView) 을 받는 방법이 없을까? (0) 2018.10.12 텍스트 리더가 앱스토어에 출시되었습니다. (0) 2018.10.03 텍본리더 개발 이슈 - 로딩바의 출력에 rxSwift를 도입 (1) 2018.09.30 iOS 텍스트 뷰어 개발을 끝내고 검수를 넣으며 (0) 2018.09.30 iOS 12 동작 변경사항 (0) 2018.09.20