본문 바로가기

iOS/iOS

iOS) NavigationBar의 Border 지우기

xcode에서 NavigationBar를 만들었을 때 다음과 같이 선이 생긴다.

스토리보드 상에서 지울수 있는 방법이 없을까 찾아봤지만 없는듯하다.
대신 코드에서 지우는 방법을 찾았다.

override func viewDidLoad() {
        super.viewDidLoad()
        setNavigationBar()
}

func setNavigationBar() {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for:.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.layoutIfNeeded()
}

viewDidLoad를 오버라이드하고 그 안에 위의 코드를 넣으면 된다.

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        setNavigationBar()
}

func setNavigationBar() {
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for:.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
//        self.navigationController?.navigationBar.layoutIfNeeded()
}

viewWillAppear에 넣으면 layoutIfNeeded는 넣지 않아도 된다. 라고 아래 출처에서 그런것 같은데 그냥 viewDidLoadlayoutIfNeeded()없이 넣어도 제대로 작동한다.

왜인지는 더 공부해서 추가해야겠다.

참고