2017-09-16 5 views
6

iOS 11부터 내 앱의 상태 표시 줄은 내가 사라질 때 오동작합니다. 상태 표시 줄을 닫으면 상태 표시 줄의 배경이 선명 해집니다. TestStatusBarBug : 내가 Github에서에 업로드 한 status bar bugiOS 11에 숨어있는 동안 상태 표시 줄 배경이 사라집니다.

나는 매우 간단한 응용 프로그램에서 문제를 재현 한,

아이폰 OS (10)에서이 작업을 수행하지 않았다.

AppDelegate.m

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [[UINavigationBar appearance] setBarTintColor:[UIColor grayColor]]; 
    return YES; 
} 

@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() { 
    BOOL _statusBarHidden; 
} 

@end 

@implementation ViewController 

-(BOOL)prefersStatusBarHidden 
{ 
    return _statusBarHidden; 
} 

-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation 
{ 
    return UIStatusBarAnimationSlide; 
} 

- (IBAction)toggleStatusBar { 
    _statusBarHidden = !_statusBarHidden; 

    [UIView animateWithDuration:0.35 animations:^{ 
     [self setNeedsStatusBarAppearanceUpdate]; 
    }]; 
} 

@end 

다른 사람이 문제가 발생했습니다 : 여기에 관련된 모든 코드는? 수정 프로그램이나 해결 방법이 있습니까?

답변

4

프로젝트를보고보기 색상을 변경하여보고있는 흰색의 색상이 그 안에있는 버튼으로 표시되는지 확인할 수있었습니다 (배경색).

상태 표시 줄을 숨기면 내비게이션 막대가 여전히 이전 위치 (20 픽셀이 너무 낮음)에 있으므로보기의 흰색 배경이 그대로 표시됩니다. 그런 다음 탐색 모음이 배치/위로 이동하고 흰색이 사라집니다.

iOS 11에서이 동작이 변경된 이유는 무엇입니까?하지만 주요 iOS 업데이트 중에보기 작업의 역학이 변경되는 경우는 드뭅니다. 다행히도 쉬운 솔루션이 있습니다.

상태 표시 줄의 가시성을 변경하려면 애니메이션을 수행 할 때 탐색 모음도 강제로 배치합니다. 그러면 올바르게 배치되고 애니메이션이 올바르게 표시됩니다.

내비게이션 막대를 토글 코드에 배치하기위한 마지막 두 줄을 추가하십시오.

- (IBAction)toggleStatusBar { 
    _statusBarHidden = !_statusBarHidden; 

    [UIView animateWithDuration:0.35 animations:^{ 
     [self setNeedsStatusBarAppearanceUpdate]; 
     [self.navigationController.navigationBar setNeedsLayout]; 
     [self.navigationController.navigationBar layoutIfNeeded]; 
    }]; 
} 

+0

환상적인! 그냥 내가 뭘 찾고 있었는지, 고마워! –

+0

감사! 그건 나를 위해 잘 작동 :) – Grubas