programing

탐색 모음 표시/숨기기

batch 2023. 5. 31. 18:30
반응형

탐색 모음 표시/숨기기

나는 2개의 바 버튼으로 구성된 내비게이션 바가 있는 앱을 가지고 있습니다.사용자가 화면을 두 번 누를 때 이 탐색 모음을 숨기고 표시하려고 합니다.

처음에는 탐색 모음이 숨겨져야 합니다.사용자가 화면을 두 번 누르면 아이폰의 사진 갤러리에서 볼 수 있는 것과 같은 애니메이션이 탐색 모음에 표시됩니다.

제가 어떻게 이런 걸 할 수 있을까요?제안은 항상 감사합니다.

이것은 코드 몇 줄에 들어갈 수 있는 것은 아니지만, 사용자에게 효과적일 수 있는 하나의 접근 방식입니다.

탐색 모음을 숨기려면:

[[self navigationController] setNavigationBarHidden:YES animated:YES];

표시 방법:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

이 방법에 대한 설명서는 여기에서 사용할 수 있습니다.

, 「더블클릭 「더블탭을 합니다.UIView그의 뷰 해당하클인의스를스턴뷰만인다듭로니스스턴의컨러트롤로 만듭니다.view소유물.

뷰 하위 클래스에서 메서드를 재정의하고 두 개의 연속 탭 사이의 시간을 측정하여 한 시간 동안 몇 번의 터치를 받는지 카운트합니다. 또는 에서 결과를 테스트합니다.

두 개의 탭이 표시되면 하위 분류된 보기는 보기 컨트롤러가 수신 대기에 등록한 보기를 실행합니다.

뷰 컨트롤러는 알림을 들을 때 탐색 모음의 속성을 읽어 액세스한 탐색 모음의 현재 표시 상태에 따라 위의 코드를 사용하여 탐색 모음을 숨기거나 표시하는 선택기를 실행합니다.

편집

탭 이벤트 처리에 대한 제 답변 부분은 아마도 iOS 3.1 이전에 유용할 것입니다.요즘에는 이 수업이 더블 탭을 다루는 데 더 나은 접근법이 될 것입니다.

편집 2

탐색 모음을 숨기는 빠른 방법은 다음과 같습니다.

navigationController?.setNavigationBarHidden(true, animated: true)

표시 방법:

navigationController?.setNavigationBarHidden(false, animated: true)

이 코드가 도움이 될 것입니다.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] 
initWithTarget:self action:@selector(showHideNavbar:)];
[self.view addGestureRecognizer:tapGesture];

-(void) showHideNavbar:(id) sender 
{ 
// write code to show/hide nav bar here 
// check if the Navigation Bar is shown
if (self.navigationController.navigationBar.hidden == NO)
{
// hide the Navigation Bar
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
// if Navigation Bar is already hidden
else if (self.navigationController.navigationBar.hidden == YES)
{
// Show the Navigation Bar
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
}

먼저 iOS용 View Controller Programming Guide의 '내비게이션 보기용 전체 화면 레이아웃 채택' 섹션과 사용자 지정 보기용 동일한 섹션을 읽어보십시오.만약 당신이 Photos.app과 같은 것을 하려고 한다면 아마도 스크롤 뷰를 사용하고 있을 것입니다.탐색 모음은 탐색 모음(및 상태 표시줄)의 높이를 설명하기 위해 스크롤 보기에 자동으로 스크롤 콘텐츠를 추가하므로 콘텐츠를 재설정해야 합니다.탐색 모음의 초기 상태를 설정한 직후 보기가 나타나기 전에 스크롤 보기의 속성을 다시 0(UIEdgeInsetsZero)으로 삽입합니다.

그런 다음 탐색 모음 및/또는 상태 표시줄을 표시하거나 숨기도록 전환하는 한 번의 탭이 있는 경우 전환 방법에서 두 가지 작업을 수행해야 합니다.첫 번째는 탐색 모음 숨김 속성을 변경하기 전에 스크롤 보기의 contentOffset 속성을 저장하고 저장된 값을 바로 contentOffset으로 복원하는 것으로 보입니다.그리고 두 번째는 다시 내용을 0으로 만드는 것입니다.navigationBarHidden 속성을 변경한 후 속성을 UIEdgeInsetsZero로 설정합니다.또한 상태 표시줄을 전환하는 경우 탐색 모음의 상태를 변경하기 전에 상태를 변경해야 합니다.

스위프트에서 이것을 시도해 보세요.

navigationController?.isNavigationBarHidden = true  //Hide
navigationController?.isNavigationBarHidden = false //Show

또는

navigationController?.setNavigationBarHidden(true, animated: true) //Hide
navigationController?.setNavigationBarHidden(false, animated: true) //Show

탐색 모음 숨기기

[self.navigationController setNavigationBarHidden:YES animated:YES];

탐색 모음을 표시하는 방법

[self.navigationController setNavigationBarHidden:NO animated:YES];

다음은 매우 빠르고 간단한 솔루션입니다.

self.navigationController.hidesBarsOnTap = YES;

이것은 더블 탭 대신 싱글 탭에서 작동합니다.또한 현재 뷰 컨트롤러를 누르거나 누른 후에도 내비게이션 컨트롤러의 동작이 변경됩니다.

단일 뷰 컨트롤러에 대해서만 동작을 설정하려는 경우에는 항상 뷰 윌 출현: 및 뷰 윌 소멸: 동작 내의 컨트롤러에서 이 동작을 수정할 수 있습니다.

다음은 설명서입니다.

한 가지 방법은 속성 관리자에서 막대 가시성 "탐색 막대 표시"를 선택 취소하는 것입니다.이것이 누군가에게 도움이 되기를 바랍니다.

여기에 이미지 설명 입력

Swift 4.2 및 Xcode 10에서

self.navigationController?.isNavigationBarHidden = true  //Hide
self.navigationController?.isNavigationBarHidden = false  //Show

첫 번째 VC에만 탐색 모음을 표시하지 않고 두 번째 VC에 워드의

첫 번째 VC에 이 코드를 입력합니다.

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true  //Hide
}

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = false  //Show
}

탐색 막대의 상태를 감지하려면 탐색 막대가 숨겨지거나 표시됩니다.다음 코드를 사용하여 다음을 검색할 수 있습니다.

if self.navigationController?.isNavigationBarHidden{
    print("Show navigation bar")
} else {
    print("hide navigation bar")
}

hidesBarsOnTapUINavigationController 속성은 iOS8 SDK로 이 문제를 처리하기 위해 나옵니다.

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/ #//apple_ref/occ/instp/UINavigation 컨트롤러/바 OnTap 숨기기

SWIFT 코드:이것은 iOS 3.2 이상에서 완전히 작동합니다.

  override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap")let tapGesture = UITapGestureRecognizer(target: self, action: "hideNavBarOntap")
    tapGesture.delegate = self
    self.view.addGestureRecognizer(tapGesture)

그리고 쓰다

func hideNavBarOntap() {
    if(self.navigationController?.navigationBar.hidden == false) {
        self.navigationController?.setNavigationBarHidden(true, animated: true) // hide nav bar is not hidden
    } else if(self.navigationController?.navigationBar.hidden == true) {
        self.navigationController?.setNavigationBarHidden(false, animated: true) // show nav bar
    }
}

언급URL : https://stackoverflow.com/questions/2926914/navigation-bar-show-hide

반응형