스크롤 맨 위로 하고, Navi Bar Title을 Large로 보여주기
테이블뷰의 스크롤을 맨위로 올렸을 때, navigationbar의 title을 large로 설정하는 방법입니다.(자꾸 small로 나와서)
우선 Large Title 설정방법입니다.
이렇게 설정해주면
Large 타이틀로 잘 나오는 모습입니다..
largeTitleDisplayMode의 값으로 .automatic 을 줘서, 스크롤 하면 small 로 바뀝니다.
이렇게 말이죠.
이제 scroll to top 하는 방법입니다.
tableView.scrollToRow(at: IndexPath(row: NSNotFound, section: 0), at: .top, animated: false)
동작이 이루어지는 곳에 넣어주면 되겠죠?
row에 0 을 해도 되지만 그러면 셀이 존재하지 않을 땐 에러가 떠요.
그래서 0 대신 NSNotFound를 라고 해줍니다.
애플 문서에서 zero rows로 스크롤 할 때 유효한 행 인덱스라고 합니다.
그렇게 scrollToRow at top 을 실행하면
Large Title이 아닌 Small Title로 나옵니다...😡
그러면 scroll to top 밑에다가
tableView.scrollToRow(at: IndexPath(row: NSNotFound, section: 0), at: .top, animated: false)
navigationController?.navigationBar.sizeToFit()
navigationController?.navigationBar.sizeToFit()
추가하면 잘 나와요!
.sizeToFit() 는
UIKit에 포함된 특정 View를 자체 내부 요구의 사이즈로 resize 해주는 함수라고 합니다.
그래서 기존의 설정값인 Large Title로 naviBar를 resize 해주는 것 같습니다.
이상
스크롤 맨위로 올려줬을 때, Large Title이 나오도록 하는 글이었습니다.
감사합니다!!