티스토리 뷰

테이블뷰의 스크롤을 맨위로 올렸을 때, navigationbar의 title을 large로 설정하는 방법입니다.(자꾸 small로 나와서)


우선 Large Title 설정방법입니다.

이렇게 large해줬는데 스크롤투탑하면 small로 나온단말이지..

이렇게 설정해주면


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



그렇게 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이 나오도록 하는 글이었습니다.




감사합니다!!

댓글