2017-01-05 1 views
1

navController의 navBar의 barPosition을 topAttached 유형으로 변경해야합니다. 나는 포지션을 사용하려고한다. (bar : UINavigationBarDelegate의 방법. MyViewController 클래스에서 : swift3에서 navigationBar의 barPosition을 topAttached로 변경하는 방법

navigationController?.navigationBar.delegate = self 

및 확장에

:

extension MyViewController: UINavigationBarDelegate{ 
    func position(for bar: UIBarPositioning) -> UIBarPosition { 
     return .topAttached 
    } 
} 

는 그러나 때문에 응용 프로그램을 종료

의 인해 캐치되지 않는 예외 'NSInternalInconsistencyException', 이유에 작동하지 않습니다 : '수 없습니다 수동으로 컨트롤러가 관리하는 UINavigationBar에 델리게이트를 설정하십시오. '

swift 3에서 barPosition을 변경하는 방법은 무엇입니까? 미리 감사드립니다!

답변

0

NavigationBar.positionreadonly 속성입니다. 너는 그것을 바꿀 수 없다. 네비게이션 바의 프레임을 변경하고자하는 경우. 먼저 UINavigationController의 프레임을 변경 한 다음 막대를 바꿉니다.

예 :

당신이 아래쪽으로 이동하려면 :

self.navigationController?.view.frame = CGRect(x: 0.0, y: 100.0, width: 320.0, height: 426.0) 
    self.navigationController?.navigationBar.frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 44.0) 
+0

응답에 대한 감사합니다! 하지만 nav bar의 높이를 바꿀 필요는 없습니다. positionBar를 정확히 바꿀 필요가 있지만 프레임이 동일해야합니다. 왜냐하면 MyViewController (다른 컨트롤러의 하위보기)를 움직이면 positionBar가 iOS 10에서는 변경되지만 iOS 9에서는 올바르게 작동하기 때문입니다. – talalt

관련 문제