본문 바로가기
Xcode/IOS

IOS)Navigation Bar에 대해 알아가기

by 후르륵짭짭 2020. 6. 29.
728x90
반응형

완성된 모습입니다!!

 

곤니찌와! 안녕하세요 후르륵짭짭 입니다.

이번에는 네비게이션 바에 대해서 다뤄 볼까 합니다.

앱을 만드면서 안 쓸려고 해도 무조건 써야하는 Navigation Bar!

이번에는 내용이 많아서 1부 부터 3부로 나눠서 할려고 합니다.

1 부에는 네비게이션의 배경화면을 지우는 방법을 알려드릴겁니다.

일단!!!!

네비게이션을 코드로 작성하실 때,

navigationController?.navigationBarnavigationItem

일단 이 둘의 차이를 아셔야합니다.

navigationController?.navigationBar : 모든 네비게이션에 적용 할 때

navigationItem : 특정 네비게이션 화면에 적용 할 때

쉽죠??? ㅎㅎㅎㅎ

그렇다면 본격적으로 본문의 내용을 다뤄보겠습니다.

1) 네비게이션의 배경화면을 지우는 방법

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

이 코드를 사용해주시면 됩니다. setBackgroundImage는 딱 봐도 배경이미지를 의미하는게 느껴지시죠?

그래서 아무것도 주지 않는 UIImage()를 넣어주면 배경화면이 없어집니다. 

그렇다면 다시 네비게이션의 배경화면을 살릴려면 어떻게 해야할 까요? 

self.navigationController?.navigationBar.setBackgroundImage(.none, for: .default)

을 해주시면 초기 배경화면으로 넘어 옵니다.

2) 네비게이션의 경계선을 지우는 방법

이건 위에 내용 보다 더욱 간단합니다.

navigationController?.navigationBar.shadowImage = UIImage()

이렇게 적어주면 됩니다. 그럼 당연히 다시 원래대로 돌아가려면 .none을 넣어주면 되겠죠?

navigationController?.navigationBar.shadowImage = .none

간단합니다.

그러나 주의사항!!!

위에서 navigationController?.navigationBar는 모든 네비게이션에 적용이 된다 했죠?

그래서 특정 뷰에서 다시 원래대로 돌아가려면 꼭 다시 설정 해줘야합니다.

그렇다면 언제가 좋을 까요???

앱을 개발하면 앱의 생명주기 내용에 나오는 

viewDidLoad() : 메모리에 이 뷰가 올라 갔을 때

viewWillAppear() : 매번 뷰가 보일 때

을 알겁니다.

viewDidLoad()는 메모리에서 삭제 되지 않으면 계속 남아있죠. 그래서 삭제 해줄 때 까지 다시 재생되지 않습니다.

하지만 viewWillAppear() 같은 경우는 매번 뷰가 다시 보일 때 마다 실행이 됩니다.

그래서 네비게이션 같은 내용은 매번 보여줘야하니깐 viewWillAppear()에 보여주는게 좋을 겁니다.

그리고 마지막 사모에드 이미지를 제공해준 unsplash.com/@luipeng 에 감사합니다

** 네비게이션 관련코드 **

네비게이션의 배경화면을 제거해줄때
네비게이션 배경화면을 다시 보여줄 때

 

728x90
반응형

댓글