programing

iOS7에서 상태 표시줄을 숨길 수 없음

batch 2023. 4. 21. 20:23
반응형

iOS7에서 상태 표시줄을 숨길 수 없음

방금 iPhone5 iOS7을 4베타 버전으로 업그레이드했습니다.이 iPhone에서 Xcode 5에서 앱을 실행하면 상태 표시줄이 숨기지 않습니다.

동작하지 않음:

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

동작하지 않음:

[UIApplication sharedApplication].statusBarHidden = YES;

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

앱 목록 파일에 "컨트롤러 기반 상태 표시줄 표시 보기"라고 하는 행을 추가하고 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];

처음에는 이 방법이 통하지 않았습니다.다음으로 이 메서드의 설명서에서 "/ StatusBar 설정"이라고 표시되어 있습니다.응용 프로그램이 기본 UIViewController 기반 상태 표시줄 시스템을 사용하는 경우 숨김은 아무 작업도 수행하지 않습니다.

파일에서 . plist plist 에서는 키를 추가합니다.View controller-based status bar appearanceNO그리고 효과가 있었다.

레거시 UIApplication 방법을 사용하여 상태 표시줄을 숨기거나 표시하려면 앱에서 iOS 7에 대한 목록 값을 설정해야 합니다.

View-Controller Based Status Bar Appearance = NO

YES라고 합니다.NO로 하겠습니다.YES]로표시줄을 수 [YES](으)로 덮어쓰는 의 각 뷰 있습니다.prefersStatusBarHidden네, 그렇습니다.

앱의 상태 표시줄 모양 또는 가시성을 변경해야 하고 View-Controller Based 상태 표시줄 모양이 YES로 설정된 경우 가장 바깥쪽 보기 컨트롤러에서 다음을 호출해야 합니다.

setNeedsStatusBarAppearanceUpdateAnimation

iOS7에서 상태 표시줄을 숨기려면 코드 두 줄이 필요합니다.

  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 스타일의 동작을 활성화하기 위해 플리스트 설정을 성공한 적은 없지만, iOS 6+를 지원하도록 앱을 구축하는 경우 특정 뷰 컨트롤러가 상태 표시줄을 숨기도록 하려면 한 번에 세 가지 방법을 사용해야 합니다.

// 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];
}

이 조작은, 플레이스트의 설정에 관계없이 동작합니다.

상태 표시줄을 숨기려면 아래 두 가지 변경을 모두 수행해야 했습니다.

상태 표시줄을 숨길 뷰 컨트롤러에 다음 코드를 추가합니다.

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

이것을 .plist 파일에 추가합니다(어플리케이션 설정에서 'info'로 이동합니다).

View controller-based status bar appearance --- NO

그런 다음 다음 다음 회선을 호출하여 상태 표시줄을 숨길 수 있습니다.

[[UIApplication sharedApplication] setStatusBarHidden:YES];

이 두 줄을 info.plist 파일에 추가합니다.iOS7과 이전 버전 모두 수정됩니다.

  • 상태 표시줄은 처음에는 숨겨져 있습니다 = YES
  • 컨트롤러 기반 상태 표시줄 모양 보기 = 아니요

프로젝트로 이동하여 [Targets]-> [ General ]를 선택하고 [Status Bar style...]를 표시합니다.애플리케이션 기동중에 숨김" 체크 박스가 온이 됩니다.이거면 될 거야.

다음과 같은 간단한 방법을 사용해 보십시오.

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

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

나에게 효과가 있었던 것은 당신의 목록에 다음 사항을 추가한 것뿐입니다.

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

은 체체 a a a a a a a a a a a a a a a a a a a a a a a를 만드는 입니다.categoryUIViewController ""를 덮어씁니다"prefersStatusBarHidden이렇게 하면 모든 싱글 뷰 컨트롤러에 이 방법을 쓸 필요가 없습니다.

UIView 컨트롤러+Hide Status Bar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIView 컨트롤러+Hide Status Bar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler warning in LLVM. 
//Technically, you shouldn't override methods by using a category, 
//but I feel that in this case it won't hurt so long as you truly 
//want every view controller to hide the status bar. 
//Other opinions on this are definitely welcome

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

#pragma clang diagnostic pop


@end
  1. 목록 추가 ----

    컨트롤러 기반 상태 표시줄 표시 --- NO

  2. 각 뷰 컨트롤러 쓰기

    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }
    

iOS 7에서 상태 표시줄 문제가 발생하지만 앱의 대상은 5.1 이상이어야 합니다.

이 스레드에 대한 답변의 대부분은 유효합니다.다이나믹한 것을 실행하려고 하면, 최종적으로 전화할 필요가 있는 것으로 알고 있습니다.

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

iOS 7에서 상태 표시줄을 숨기는 단계:

1. 어플리케이션 info.plist 파일로 이동합니다.

2. 컨트롤러 기반의 상태 바아피아란스를 설정, 표시: 부울 NO

상태 표시줄 문제를 해결했으면 좋겠는데...

단일 뷰에서 iOS 7을 사용하는 경우 view에서 사용할 수 있는 방법:

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

상태 표시줄을 표시하려면 다음을 사용합니다.

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
-(BOOL)prefersStatusBarHidden
{
    return YES;
}

정보 목록 파일에서 다음 속성에 대한 행을 추가합니다.

속성 이름: 컨트롤러 기반 상태 표시줄 모양을 표시합니다.

값 : NO

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

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }

프로젝트에 게재되어 있는 옵션을 모두 시험해 봤지만 효과가 없었습니다.제 생각엔 제가 제 개인기를 업데이트 한 것과 관련이 있을 것 같아서요.Xcode그리고 iOS7에 대한 앱과 일부 설정이 어딘가에서 엉망이 되었습니다.완전히 새로운 프로젝트를 구축하기로 결심했습니다.다음 중 하나:Status bar is initially hidden = YES" 및 "View controller-based status bar appearance = NO" 다른 많은 사람들이 말했듯이 올바르게 작동했습니다(즉, 상태 표시줄 없음).

따라서 이전 버전에서 iOS 7로 업데이트되고 다른 모든 옵션을 사용해 본 프로젝트를 진행하고 있다면 새로운 프로젝트를 구축하는 것이 좋습니다.

2019년에는...

상태 표시줄이 없는 앱을 만들려면

info.plist를 클릭하고 "행 추가"를 마우스 오른쪽 버튼으로 클릭합니다.

다음 설정을 사용하여 다음 2개를 추가합니다.

여기에 이미지 설명 입력

그게 다예요.

UIView Controller+라는 코드를 확인할 수 있습니다.ODStus 바

Swift 2.0+ IOS 9의 경우

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

특정 뷰의 상태 표시줄을 숨기려면컨트롤러

- (BOOL)prefersStatusBarHidden {
    return YES;
}

상태 표시줄 Hidden for Application 설정:

  • 세트View controller-based status bar appearance로.NO.plist 및 in에서application: didFinishLaunchingWithOptions:설정:[application setStatusBarHidden:YES];

    주의: set Status Bar숨김: 사용되지 않음

또는

  • 프로젝트 설정 -> 일반 탭 -> 전개 정보

    확인.Hide Status bar박스를 클릭합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
application.statusBarHidden = YES;
return YES;
}

왜 Apple Developer Forum에 로그인할 수 없는지는 모르겠지만, (NDA를 위반하지 않고) Xcode를 통해 상태 표시줄을 숨길 수도 있습니다.응용 프로그램 대상의 일반적인 설정입니다. 여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/18059703/cannot-hide-status-bar-in-ios7

반응형