내 현재 애플리케이션은 iOS 5 및 6에서 실행됩니다.
탐색 표시 줄은 주황색이고 상태 표시 줄은 검은 색 배경색과 흰색 텍스트입니다. 그러나 iOS 7에서 동일한 응용 프로그램을 실행하면 상태 표시 줄이 탐색 표시 줄과 동일한 주황색 배경색으로 투명하게 보이고 상태 표시 줄 텍스트 색이 검은 색으로 보입니다.
이로 인해 상태 표시 줄과 탐색 표시 줄을 구분할 수 없습니다.
상태 표시 줄을 iOS 5 및 6에서와 같이 검정색 배경색과 흰색 텍스트 색상으로 표시하려면 어떻게해야합니까? 프로그래밍 방식으로 어떻게 할 수 있습니까?
답변
경고 : iOS 13 및 Xcode 11에서는 더 이상 작동하지 않습니다.
================================================ ======================
나는 다른 방법을 찾아야했다. addSubview
창문 에는 관여하지 않습니다 . 키보드가 나타나면 창 위로 이동하기 때문입니다.
목표 -C
- (void)setStatusBarBackgroundColor:(UIColor *)color {
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
statusBar.backgroundColor = color;
}
}
빠른
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
스위프트 3
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
statusBar.backgroundColor = color
}
이 양식을 호출하는 것이 application:didFinishLaunchingWithOptions
저에게 효과적이었습니다.
NB이 로직을 사용하는 앱이 앱 스토어에 있습니다. 그래서 앱 스토어 정책은 괜찮은 것 같아요.
편집하다:
자신의 책임하에 사용하십시오. 댓글 작성자 @Sebyddd 구성
한 앱이이 원인을 거부하고 다른 앱은 정상적으로 허용되었습니다. 그들은 그것을 개인 API 사용으로 간주하므로 검토 과정에서 운이 좋을 것입니다. 🙂 – Sebyddd
답변
앱이 고토 info.plist
1) 설정 View controller-based status bar appearance
에 NO
2) 세트 Status bar style
에 UIStatusBarStyleLightContent
다음과 앱 위임 고토 당신이 당신의 윈도우의 RootViewController을 설정하려면 다음 코드를 붙여 넣습니다.
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)];
view.backgroundColor=[UIColor blackColor];
[self.window.rootViewController.view addSubview:view];
}
도움이되기를 바랍니다.
답변
iOS 7에서 상태 표시 줄의 배경색을 처리하는 동안 2 가지 경우가 있습니다.
사례 1 : 탐색 모음이있는보기
이 경우 viewDidLoad 메서드에서 다음 코드를 사용하십시오.
UIApplication *app = [UIApplication sharedApplication];
CGFloat statusBarHeight = app.statusBarFrame.size.height;
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
statusBarView.backgroundColor = [UIColor yellowColor];
[self.navigationController.navigationBar addSubview:statusBarView];
사례 2 : 탐색 모음없이보기
이 경우 viewDidLoad 메서드에서 다음 코드를 사용하십시오.
UIApplication *app = [UIApplication sharedApplication];
CGFloat statusBarHeight = app.statusBarFrame.size.height;
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, statusBarHeight)];
statusBarView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:statusBarView];
소스 링크 http://code-ios.blogspot.in/2014/08/how-to-change-background-color-of.html
답변
1) plist에서 UIViewControllerBasedStatusBarAppearance를 YES로 설정하십시오.
2) viewDidLoad에서 [self setNeedsStatusBarAppearanceUpdate];
3) 다음 방법을 추가하십시오.
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
업데이트 :
또한 확인 개발자 가이드 – 투 – IOS-7-상태 표시 줄을
답변
애플리케이션 시작 중 또는 뷰 컨트롤러의 viewDidLoad 중에 상태 표시 줄의 배경색을 설정할 수 있습니다.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
결과는 다음과 같습니다.
다음은 상태 표시 줄 변경에 대한 Apple 지침 / 지침 입니다. 상태 표시 줄에는 어둡고 밝게 (중 및 검은 색) 만 허용됩니다.
다음은 상태 표시 줄 스타일을 변경하는 방법입니다.
상태 표시 줄 스타일을 설정 UIViewControllerBasedStatusBarAppearance
하려면 애플리케이션 레벨을 NO
`.plist ‘파일에서 로 설정 하십시오.
상태 표시 줄 스타일을 설정하려면 뷰 컨트롤러 수준에서 다음 단계를 따르세요.
- 설정
UIViewControllerBasedStatusBarAppearance
에YES
에.plist
당신의 UIViewController 수준 만 설정 상태 표시 줄 스타일을 필요로하는 경우, 파일. -
viewDidLoad 추가 기능에서-
setNeedsStatusBarAppearanceUpdate
-
뷰 컨트롤러에서 preferredStatusBarStyle을 재정의하십시오.
–
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
답변
iOS 7에서는 상태 표시 줄에 배경이 없으므로 20px 높이의 검은 색보기를 뒤에 배치하면 iOS 6과 동일한 결과를 얻을 수 있습니다.
또한 당신은 읽을 수 있습니다 주제에 대한 자세한 내용 iOS 7 UI 전환 가이드 .
답변
ViewDidLoad 메서드에 다음을 작성하십시오.
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
}
나에 대한 상태 표시 줄 색상과 다른 UI 위치도 어느 정도 수정되었습니다.