2013 년 9 월 19 일 업데이트 :
추가하여 스케일링 버그 수정
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
NSNotificationCenter
진술서에 오타 수정
2013 년 9 월 12 일 업데이트 :
수정 UIViewControllerBasedStatusBarAppearance
에NO
화면 회전 기능이있는 앱을위한 솔루션 추가
상태 표시 줄의 배경색을 변경하는 방법을 추가했습니다.
분명히 iOS7 상태 표시 줄을 iOS6에서 작동하는 방식으로 되돌릴 수있는 방법이 없습니다.
그러나 항상 일부 코드를 작성하고 상태 표시 줄을 iOS6와 같은 것으로 바꿀 수 있으며 이것이 내가 가장 짧은 방법입니다.
설정 UIViewControllerBasedStatusBarAppearance
에 NO
있는 info.plist
(뷰 컨트롤러 우리가 UIApplicationstatusBarStyle 방법을 사용하여 상태 표시 줄 스타일을 설정 할 수 있도록 상태 표시 줄 스타일을 조정할 필요없이 탈퇴합니다.)
AppDelegate 's application:didFinishLaunchingWithOptions
에서
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
//Added on 19th Sep 2013
self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);
}
return YES;
하기 위해 :
iOS 7인지 확인하십시오.
UIStatusBarStyleDefault와 반대로 상태 표시 줄의 내용을 흰색으로 설정하십시오.
가시 범위를 넘어 확장 된 서브 뷰가 표시되지 않도록합니다 (위에서 메인 뷰로 애니메이션되는 뷰의 경우).
앱의 창 프레임을 이동하고 크기를 조정하여 iOS 6의 상태와 같이 상태 표시 줄이 공간을 차지한다는 환상을 만듭니다.
화면 회전이있는 앱의 경우
NSNotificationCenter를 사용하여 방향 변경을 감지하여 추가
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidChangeStatusBarOrientation:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
에서 if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
와 것은 AppDelegate에 새로운 방법을 만들 :
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
int a = [[notification.userInfo objectForKey: UIApplicationStatusBarOrientationUserInfoKey] intValue];
int w = [[UIScreen mainScreen] bounds].size.width;
int h = [[UIScreen mainScreen] bounds].size.height;
switch(a){
case 4:
self.window.frame = CGRectMake(0,20,w,h);
break;
case 3:
self.window.frame = CGRectMake(-20,0,w-20,h+20);
break;
case 2:
self.window.frame = CGRectMake(0,-20,w,h);
break;
case 1:
self.window.frame = CGRectMake(20,0,w-20,h+20);
}
}
따라서 방향이 변경되면 앱의 화면 방향 (세로, 거꾸로, 가로 왼쪽 또는 가로 오른쪽)을 감지하고 앱의 창 프레임을 각각 변경하여 iOS 6 상태 표시 줄 환상을 만들기 위해 switch 문을 트리거합니다.
상태 표시 줄의 배경색을 변경하려면
더하다
@property (retain, nonatomic) UIWindow *background;
에서가 AppDelegate.h
만드는 background
클래스의 속성을하고 할당 해제에서 ARC를 방지 할 수 있습니다. ARC를 사용하지 않는 경우에는 할 필요가 없습니다.
그런 다음 UIWindow를 if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
다음 과 같이 만들어야합니다 .
background = [[UIWindow alloc] initWithFrame: CGRectMake(0, 0, self.window.frame.size.width, 20)];
background.backgroundColor =[UIColor redColor];
[background setHidden:NO];
잊지 마세요 @synthesize background;
후 @implementation AppDelegate
!