상태 표시 줄이 사라지지 않습니다


112

응용 프로그램을 만들고 있는데 상태 표시 줄을 숨기고 싶습니다. 앱을 테스트 할 때 스플래시 화면이 표시되는 동안 상태 표시 줄이 숨겨 지지만 앱이 완전히로드되면 상태 표시 줄이 다시 나타납니다.

Xcode 5 및 iOS 7을 사용하고 있으며 프로그래밍 방식으로 상태 표시 줄을 비활성화하려고했습니다.

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),

info.plist 파일에서 .xib 파일의 속성 검사기를 사용합니다. 작동하지 않는 것 같습니다.

어떤 아이디어?

답변:


220

앱의 루트 뷰 컨트롤러에 다음 메서드를 추가해보세요.

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

2
이 작업을 전 세계적으로 수행하는 방법은 무엇입니까?
jjxtra

16
또한 Apple 문서에 명시된대로 [self setNeedsStatusBarAppearanceUpdate];기본값이 아닌 다른 값 (기본값은 NO)으로이 메서드를 호출 한 후을 호출 해야합니다 .
manderson 2013 년

3
@PsychoDad 더 글로벌 솔루션에 대한 내 대답을 확인하십시오.
Idan 2013-09-19

2
완벽 해요, 감사합니다. iOS 7이 왜 이것을 수행하고 상태 표시 줄 설정이없는 XIB를 존중하지 않는지 알 수 없습니다!
justinhartman 2013 년

1
스택에 추가 된 ViewController에 이것을 추가하기 만하면 해당 viewcontroller에서 상태 표시 줄을 숨길 수 있습니다. 이 뷰 컨트롤러가 제거되면 상태 표시 줄이 반환됩니다.
MacD

126

이 값을 plist에 추가해야합니다. " View controller-based status bar appearance "및 " NO "로 설정하십시오 .

이렇게하면 상태 표시 줄을 숨김 모드 로 설정할 수 있습니다. . 이것은 다른 제공된 답변과 달리 글로벌로 설정합니다.

업데이트 : 스플래시 화면에서 상태 표시 줄을 숨기려면 대상 상태 표시 줄 옵션에서 " 응용 프로그램 실행 중 숨기기 "를 표시하는 것을 잊지 마십시오 . 또한 앱 내부의 코드로 수행하지 않으려면 plist의 " YES "에 " 상태 표시 줄이 처음에 숨겨져 있습니다 "를 추가 할 수 있습니다 .


2
이것을 알아내는 데 많은 시간이 걸렸습니다. 모든 사람이 가질 것이라고 생각하는 문제이며 애플은 충분히 언급하지 않았습니다. 기꺼이 도와 ...
Idan

7
잘 작동합니다. "상태 표시 줄이 처음에 숨겨져 있습니다"에 대한 .plist 값을 YES로 설정하는 것을 잊지 마십시오.
andreas-supersmart 2013 년

1
와, Kobold2d 2.1.0 및 iOS 7에서 작동하는 유일한 작업이었습니다. 대단히 감사합니다!
Binarian 2013-09-24

5
애플은 이전 버전과의 호환성을 옹호하지 않습니다. 모두 그들의 플루트에 맞춰 춤을 추고 모든 앱을 업데이트합시다. 죄송합니다. 좌절감을 드러냅니다. Apple에 의해 발생했습니다.
Henrik Erlandsson 2013 년

1
마침내 그것은 나를 위해 작동합니다. -(BOOL)은 modelview에서 작동하지 않는 statusbarhidden 메소드를 선호하기 때문입니다.
utkal patel 2013-10-17

73

게시 한 코드는 iOS 6.1 이하에서 작동합니다. iOS 7의 경우 Apple은 각보기의 상태 표시 줄을 직접 제어 할 수있는 새로운 방법을 만들었습니다. Info.plist 에서이 옵션을 끄면 최소한 현재 개발자 미리보기 (4)에 대해 상태 표시 줄을 숨길 수 있습니다.

이것을 추가하고 NO로 설정하십시오.

참고로 Apple의 개발자 포털에서 제공되는 iOS 7 전환 가이드를 참조하세요.


3
제 생각에는이 대답이 더 낫습니다. 제 앱에서는 가로 모드에서만 상태 표시 줄을 숨기고 싶기 때문입니다. 감사합니다!
Son Nguyen

난 내 전체 앱을 숨길 이후 덕분에이 날 수 있습니다
kevinl

2
제 생각에는이 답변이 가장 좋은 답변이어야합니다.-> 여기에 설명되어 있습니다. developer.apple.com/library/prerelease/ios/documentation/…
marceloquinta 2013-09-10

5
이 작업을 수행했지만 상태 표시 줄이 숨겨져있는 것처럼 보이지만 상태 표시 줄이 차지하는 공간만큼 내 앱이 여전히 '푸시 다운'상태이며 배터리 표시기를 볼 수 있습니다!
vedran 2013 년

36

내 모든 앱과 "app"-info.plist에서 상태 표시 줄을 숨기려고 시도하고 "정보 속성 목록"사전에 두 행을 추가합니다. "컨트롤러 기반 상태 표시 줄 모양보기"를 추가하고 " 상태 표시 줄은 처음에 숨겨져 있습니다. "YES를 설정하고 n_n을 작동합니다.

plist 정보


2
이렇게하면 개발자가 새로운 방식으로 작업을 수행하기 위해 앱을 수정할 시간이 없을 때 이전 앱이 의도 한대로 iOS 7에서 실행되도록 디자인 된 호환성 모드로 앱이 강제 설정됩니다. 대신 뷰 컨트롤러에서 prefer * 메소드를 구현해야합니다.
lhunath

17

그러나 UIImagePicker를 사용하면 상태 표시 줄이 다시 나타납니다.

이 경우 아래와 같이 상태 표시 줄을 숨겨야합니다.

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }

2
나는 같은 문제가 있습니다. UIImagePicker를 사용할 때까지 상태 표시 줄이 숨겨집니다. 나는 당신의 해결책을 시도했지만 그것은 나를 위해 작동하지 않습니다. 게시물에 코드 외에 추가해야하는 것이 있습니까?
Dev01

@WootWoot 나도 추가했습니다-(BOOL) prefersStatusBarHidden {return YES; } 컨트롤러를 볼 수 있습니다. 시도해주세요.
alones

저 한테는 안되는 것 같네요 .. 전화를해야 setNeedsStatusBarAppearanceUpdate하나요?
RyanM 2013 년

버튼 클릭시 상태 표시 줄을 숨겨야합니다. 아래 코드를 시도했지만 작동하지 않았습니다. 누군가 나를 도와주세요. [[UIApplication sharedApplication] setStatusBarHidden : YES];
janitheshan

8

오랜 검색 끝에 마침내 매우 간단한 해결책을 찾았습니다. UIImagePickerController 문제를 해결 .

다른 답변에서 언급했듯이 AppDelegate didFinishLaunching에 숨겨진 상태 표시 줄을 설정하고 "View controller-based status bar appearance"를 NO로 설정합니다.

그런 다음 AppDelegate에서 :

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

et voila-UIImagePickerController가 맨 위에있는 경우에도 상태 표시 줄이 숨겨진 상태로 유지됩니다.

UIImagePickerController를 표시 할 때마다 앱 전체에 숨겨져 있으므로 '다시 숨기는'것보다 낫습니다.


2
적어도 iPad의 iOS7에서 뭔가 깨진 것처럼 보이지만 UIImagePickerController는 두 번째로 표시 될 때 여전히 상태 표시 줄을 표시합니다 ... Hurrrr ... :-( 현재 모든 viewWillAppear에서 다시 숨기는 것과 함께 appDelegate를 사용하고 있습니다. .가 다시 빠르게 고정됩니다 동안 짧은 더러운 보이는 그래서 경우에도 마찬가지입니다.
ikuramedia

1
이것은 iOS8에서 나를 위해 일한 유일한 방법입니다 ... 어떻게 든 선호합니다 .StatusBarHidden이 내 뷰 컨트롤러에서 호출되지 않습니다.
mojuba

7

특정 UIViewController에서 상태 표시 줄을 숨기려면 다음을 추가하면됩니다.

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

도움이 되었기를 바랍니다 !


!! 이것은 iOS 9.2에서 나를 위해 일한 솔루션이며 plist를 수정해도 효과가 없습니다.
mico

5

프로젝트 요약에서 숨길 수 있습니다. 시작하는 동안 확인란 숨기기가 있습니다.

스냅 샷보기

여기에 이미지 설명 입력


4

이 솔루션을 찾았습니다. 매력처럼 작동합니다. UIImagePickerController를 사용하려는 viewcontroller에이 코드를 작성하십시오.

- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
     }

3

위의 단독 답변 외에도 imagePickerControllerDidCancel 메서드를 구현하고 동일한 코드도 추가하십시오.


2

UIImagePicker에도 문제가있었습니다. Alones 답변과 유사하게 내 솔루션은 다음과 같습니다. 이 줄 또는 코드를 추가했습니다.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

이 기능에 :

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

iOS 6 또는 이전 버전에서는 테스트하지 않았지만 iOS 7에서는 잘 작동합니다.


2

신속한 솔루션

뷰 컨트롤러에 다음을 추가하십시오.

override func prefersStatusBarHidden() -> Bool {
    return true
}

0

Xcode 6을 사용하고 있으며이 솔루션은 iOS 7 및 8에서 작동합니다.

먼저 plist 파일에서 "View controller-based status bar appearance"를 NO로 설정합니다.

둘째, AppDelegate에서 다음을 추가합니다.

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}

0

내 문제는 뷰 컨트롤러 포함을 사용했다는 것입니다. 예를 들어 내비게이션 컨트롤러에 내장 된 최상위 뷰 컨트롤러 만 상태 표시 줄을 숨기거나 표시 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.