[ios] iOS 7 이상 :보기 컨트롤러별로 상태 표시 줄 스타일 설정

상태 표시 줄 스타일 (기본값 또는 lightcontent)을 설정하기 위해 여러 가지 방법을 시도했지만 뷰 컨트롤러별로 작동하도록 할 수 없습니다. 전체 앱에 대해서만 상태 표시 줄 스타일을 설정할 수 있습니다.

누구 힌트가 있습니까?

나는 시도했다 UIViewControllerBasedStatusBarAppearance

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

그러나 이러한 방법은 작동하지 않습니다.



답변

이거 해봤 어?

  1. Info.plist에서 “컨트롤러 기반 상태 표시 줄 모양보기”( UIViewControllerBasedStatusBarAppearance)를 YES로 설정합니다. ( YES이 기본값이므로 plist에서이 값을 그대로 둘 수도 있습니다.)

  2. viewDidLoad 메서드에서 [self setNeedsStatusBarAppearanceUpdate].

  3. preferredStatusBarStyle이 뷰 컨트롤러에 대해 원하는 상태 표시 줄 스타일을 반환하는을 구현 합니다.

    - (UIStatusBarStyle) preferredStatusBarStyle {
        return UIStatusBarStyleLightContent;
    }
    


답변

뷰 컨트롤러가 Storyboard 기반 UINavigationController의 일부가 아닌 독립 실행 형 UINavigationController 내부에 있으면 무엇보다도 모든 메서드가 실패합니다. 나는이 상황을 만났고 상태 표시 줄을 밝은 스타일로 설정하기 위해 다음을 사용했습니다.

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

이것은 나를 위해 완벽하게 작동했습니다.


답변

편집 :이 솔루션은 iOS 9에서 더 이상 사용되지 않습니다. 다른 답변 중 하나를 선택하십시오.

UIViewControllerBasedStatusBarAppearanceNO로 설정 하면 다음을 사용 하여 스타일을 흰색 텍스트로 설정할 수 있습니다.

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;

이 스타일의 텍스트 색상은 iOS 6 이하에서 흰색 이었기 때문입니다.

업데이트 : @jowie에 따르면 iOS8에서 시도해 볼 수 있습니다.

[UIApplication sharedApplication].statusBarStyle = UIBarStyleBlack;


답변

Swift에서는 다음과 같이 작성하여이를 수행 할 수있었습니다.

let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController

moreViewController.navigationBar.barStyle = UIBarStyle.Black

기본적으로 마지막 줄에 관심이 있습니다.
이로 인해 탭 바가 흰색으로 변경되었습니다.

여기에 이미지 설명 입력

Info.plist이 결과를 얻기 위해 아무것도 변경하지 않았습니다 .
변경에 대한 자세한 내용은 Navigation Status Bar다음 링크를 확인하십시오.
http://www.appcoda.com/customize-navigation-status-bar-ios-7/


답변

viewDidLoad 메소드에서 다음을 입력하십시오.

목표 C

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[self setNeedsStatusBarAppearanceUpdate];

빠른

UIApplication.shared.statusBarStyle = .lightContent
self.setNeedsStatusBarAppearanceUpdate()


답변

내비게이션 컨트롤러에 뷰 컨트롤러가 내장되어 있다고 확신합니다. .Black이 하위 클래스 를 사용 하도록 탐색 모음의 스타일을 설정하지 않으려면 :

class YourNavigationController: UINavigationController {
    override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return topViewController
    }
}


답변

빠른:

let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController
moreViewController.navigationBar.barStyle = UIBarStyle.Black

목표 C :

이것을 controller.m파일 viewDidLoad 메소드에 추가하십시오 .

[self setNeedsStatusBarAppearanceUpdate].

그런 다음 동일한 controller.m파일 에서이 메서드를 구현 합니다.

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

공식 문서 :

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html

내 블로그에 쓴 기사 :

http://www.ryadel.com/2015/03/04/xcode-set-status-bar-style-and-color-in-objective-c/