[objective-c] iOS7에서 상태 표시 줄을 숨길 수 없습니다

방금 iPhone 5 iOS 7을 4 개의 베타 버전으로 업그레이드했습니다. 이제이 iPhone의 Xcode 5에서 내 응용 프로그램을 실행하면 상태 표시 줄이 숨겨져 있지 않아도 숨겨지지 않습니다.

작동하지 않는:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

작동하지 않는:

[UIApplication sharedApplication].statusBarHidden = YES;

Apple 개발자 포럼에 로그인 할 수 없습니다



답변

앱 plist 파일에서 행을 추가하여 “컨트롤러 기반 상태 표시 줄 모양보기”라고 부르고 NO로 설정하십시오.

앱에서 UIImagePickerController를 사용하는 경우에는 작동하지 않습니다.

에서 http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , mgiroux의 솔루션

Xcode의 정보 설정에 View Base Controller를 추가하는 예


답변

뷰 컨트롤러에 메소드를 추가하십시오.

- (BOOL)prefersStatusBarHidden {
    return YES;
}


답변

Plist에서 다음 특성을 추가하십시오.

-> Status bar is initially hidden= 예

-> View controller-based status bar appearance= 아니요

둘 다 추가하십시오-이제 상태 표시 줄이 사라집니다.


답변

단일보기에서 상태 표시 줄을 숨기려면 다음을 사용해야합니다.

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

처음에는 이것이 나를 위해 작동하지 않았 으며이 방법의 설명서에서 다음과 같은 내용을 보았습니다.

이 키 View controller-based status bar appearance세트를에 추가하여 plist 파일에서 수행 해야 NO합니다. 그리고는 효과가있었습니다.


답변

레거시 UIApplication 메서드를 사용하여 상태 표시 줄을 숨기거나 표시하려면 앱에서 iOS 7의 plist 값을 설정해야합니다.

View-Controller Based Status Bar Appearance = NO

이 값은 기본적으로 YES로 설정되어 있습니다. NO로 변경하면 레거시 방법을 사용할 수 있습니다. YES로 설정하면 상태 표시 줄을 숨길 수는 있지만 앱의 각 뷰 컨트롤러 하위 클래스가 재정 의하여 prefersStatusBarHiddenYES를 반환합니다.

앱에 상태 표시 줄 모양이나 가시성이 변경되어야하고 View-Controller Based Status Bar Appearance가 YES로 설정 될 때마다 가장 바깥 쪽보기 컨트롤러는 다음을 호출해야합니다.

setNeedsStatusBarAppearanceUpdateAnimation


답변

iOS7에서 상태 표시 줄을 숨기려면 2 줄의 코드가 필요합니다

  1. 응용 프로그램 : (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions쓰기

    [application setStatusBarHidden:YES];
  2. info.plist에 이것을 추가하십시오

    View-Controller Based Status Bar Appearance = NO

답변

이 문제에 대해 제안 된 많은 조합이 있지만 문제는 iOS 6과 7이 다른 방법을 사용하여 상태 표시 줄을 숨기는 것입니다. iOS 7에서 iOS6 스타일 동작을 사용하도록 plist 설정을 설정 한 적이 없었지만 iOS 6 이상을 지원하도록 앱을 빌드하는 경우 특정 뷰 컨트롤러가 상태를 숨기려면 한 번에 3 가지 방법을 사용해야합니다 바:

// for ios 7 
- (BOOL)prefersStatusBarHidden{
    return YES;
}

// for ios 6
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // explicitly set the bar to show or it will remain hidden for other view controllers
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

이것은 plist 설정에 관계없이 작동합니다.