내 응용 프로그램은 어두운 배경이지만 iOS 7에서는 상태 표시 줄이 투명 해졌습니다. 그래서 구석에 녹색 배터리 표시기 만 표시됩니다. 홈 화면에서와 같이 상태 표시 줄 텍스트 색상을 흰색으로 변경하려면 어떻게해야합니까?
내 응용 프로그램은 어두운 배경이지만 iOS 7에서는 상태 표시 줄이 투명 해졌습니다. 그래서 구석에 녹색 배터리 표시기 만 표시됩니다. 홈 화면에서와 같이 상태 표시 줄 텍스트 색상을 흰색으로 변경하려면 어떻게해야합니까?
답변:
설정 UIViewControllerBasedStatusBarAppearance
에 YES
.plist 파일에.
에서 viewDidLoad
DO A를[self setNeedsStatusBarAppearanceUpdate];
다음 방법을 추가하십시오.
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
참고 :이 내부 컨트롤러없는 작업을 수행 UINavigationController
, 참조하시기 바랍니다 타이슨의 의견을 아래에 :)
스위프트 3- 컨트롤러 내부에서 작동 UINavigationController
합니다. 이 코드를 컨트롤러 안에 추가하십시오.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
스위프트 5와 스위프트 UI
SwiftUI의 경우라는 새 빠른 파일을 만듭니다. HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
그런 다음 코드에서 다음 코드 줄을 변경하십시오. SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
에
window.rootViewController = HostingController(rootView: ContentView())
또는 뷰 컨트롤러 기반 상태 표시 줄 모양을 선택 해제 할 수 있습니다.
View controller-based status bar appearance
에 NO
에Info.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
참고 :이 방법은 iOS9에서 더 이상 사용되지 않습니다. preferredStatusBarStyle
대신 UIViewController를 사용하십시오 . ( Apple 개발자 라이브러리 참조 )
코드를 작성하지 않고도이 작업을 수행 할 수 있습니다!
전체 응용 프로그램에서 상태 표시 줄 텍스트를 흰색으로 만들려면 다음을 수행하십시오.
plist 파일 을 프로젝트 합니다.
Transparent black style (alpha of 0.5)
NO
NO
UIStatusBarStyleLightContent
에서 호출 되는 것은 없습니다 . 동일한 트릭을 수행 할 것입니다 :) 플러스, 원래 존재하지 않으므로 추가 해야하며 작동하기 위해 필요한 모든 것 :)plist info
Transparent Black
View controller-based status bar appearance
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
참고 : iOS 7/8에서는 가장 많이 답한 답변이 작동하지 않습니다.
Info.plist에서 '제어기 기반 상태 표시 줄보기'를 NO로 설정하십시오.
AppDelegate에서 추가
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
에
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
이 솔루션은 iOS 7/8에서 작동합니다
나에게 다른 대답 (및 다른 출처 / 문서)의 모든 것을 사용하는 것은 아무 일도 없었습니다. XIB에서 탐색 막대 스타일을 "검정색"으로 설정하는 것이 도움이되었습니다. 이것은 코드없이 텍스트를 흰색으로 바꿨습니다.
그 중 어느 것도 나를 위해 일하지 않았으므로 여기에 효과적인 해결책이 있습니다 ...
에서 Info.plist
, 행을 추가 :
UIViewControllerBasedStatusBarAppearance
값을 설정하십시오 NO
.
그런 다음 AppDelegate in didFinishLaunchingWithOptions
에서 다음 행을 추가하십시오.
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
이 코드를 작성하지 않아도됩니다
info.plist에 "컨트롤러 기반 상태 표시 줄보기"키를 다음과 같이 추가해야합니다.
& 값 유형을 부울 & 값으로 설정하고 NO로 설정하십시오. 그런 다음 프로젝트 설정을 클릭 한 다음 일반 탭을 클릭하고 배포 정보 아래에서 기본 상태 표시 줄 스타일을 .Light로 설정하십시오.
그게 다야.
다음과 같이 두 단계 만 거치면됩니다.
1 단계:
의 정보 탭에서 project target
행 추가 :
UIViewControllerBasedStatusBarAppearance
, 설정 값 NO
.
2 단계:
프로젝트에서 AppDelegate.m
:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
이는 2013 년 9 월 18 일에 출시 된 Golden Master iOS 7 및 Xcode 5 GM seed 및 iOS7 SDK에서 작동합니다 (최소한 내비게이션 컨트롤러가 숨겨져 있음).
설정 the UIViewControllerBasedStatusBarAppearance
에 NO
에
Info.plist
.
에서 ViewDidLoad
방법 또는 어디, 어디 변경 상태 표시 줄 스타일 하시겠습니까 :
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
UIViewController가 UINavigationController 내에있는 경우 BarStyle을 설정해야합니다.
-[UINavigationBar setBarStyle:UIBarStyleBlack]
원래 답변은 여기
Interface Builder 를 통해 내장 된 내비게이션 컨트롤러가있는 경우 내비게이션 컨트롤러 를 관리하는 클래스에서 다음을 설정해야합니다.
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
그게 당신이 필요한 전부입니다.
Appdelegate에서 간단히
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
글쎄, 이것은 실제로 나를 위해 케이크 조각처럼 작동합니다.
앱으로 이동하십시오 info.plist
.
View controller-based status bar appearance
에NO
Status bar style
에UIStatusBarStyleLightContent
그런 다음 앱의 대리자로 이동하여 Windows의 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,320, 20)];
view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
[self.window.rootViewController.view addSubview:view];
}
빙고. 나를 위해 일하고 있습니다.
Swift 3에서는 2 단계만으로 매우 쉽습니다. info.plist로 이동하여 키 View controller-based status bar appearance
를 "NO"로 변경하십시오 . 그런 다음 Appdelegate에서 didfinishlaunchingwithoptions 메소드 에이 줄을 추가하십시오.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
이것은 iOS9에서 더 이상 사용되지 않습니다. 이제 rootviewcontroller 에서이 속성을 재정의해야합니다
이 작업은 iOS 9에서 사용되지 않으며 rootviewcontroller 에서이 작업을 수행해야합니다
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
iOS 7을 사용하면 Apple 개발자 문서에 설명 된대로 개별 뷰 컨트롤러가 상태 표시 줄의 모양을 결정할 수 있습니다.
iOS 7은 뷰 컨트롤러가 앱이 실행되는 동안 상태 표시 줄의 스타일을 조정할 수있는 기능을 제공합니다. 상태 표시 줄 스타일을 동적으로 변경하는 좋은 방법
preferredStatusBarStyle
은 애니메이션 블록 내에서 상태 표시 줄 모양 을 구현 하고 업데이트하는 것setNeedsStatusBarAppearanceUpdate
입니다.
상태 표시 줄 모양을 전체적으로 설정하는 것은 2 단계 프로세스입니다.
먼저 iOS에 상태 표시 줄 모양을보기별로 설정하고 싶지 않다고 알려 주어야합니다.
그런 다음 담당하고 새로운 글로벌 상태 표시 줄 스타일을 설정해야합니다.
View-by-View 상태 표시 줄 컨트롤을 비활성화하려면에서 View controller-based status bar appearance
속성 을 설정해야합니다Info.plist
.
프로젝트 네비게이터를 열고 iOS 앱용 프로젝트를 선택한 다음 정보 탭을 선택하십시오.
행 위로 마우스를 가져간 다음 표시되는 더하기 기호를 클릭하여 새 속성을 .plist
.
View controller-based status bar appearance
키 필드에 입력 한 후 유형 필드가로 설정되어 있는지 확인하십시오 Boolean
. 마지막으로NO
값 필드에 .
상태 표시 줄의 전역 스타일을 설정하려면 정보 탭 아래에 키 Status bar style
, 유형 String
및 값을 사용하여 다른 속성을 추가하십시오 Opaque black style
.
다음은 좀 더 자세한 내용과 샘플 코드가있는 블로그 게시물입니다.
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
추가 할 필요가 없습니다. viewController 에이 코드를 작성하고 상태 표시 줄을 흰색으로하십시오.
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
모든 답변이 특정 시나리오에서 작동하기 때문에 모든 대답이 실제로 문제를 지적하지는 않는다고 생각합니다. 그러나 모든 경우를 다루어야 할 경우 다음 사항을 따르십시오.
상태 표시 등 스타일이 필요한 위치에 따라 항상 다음 3 가지 점을 명심해야합니다.
1) 시작 화면이나 제어 할 수없는 다른 위치에 상태 표시 줄이 필요한 경우 (보기 컨트롤러가 아닌 시작 화면과 같은 일부 시스템 제어 요소 / 순간) 프로젝트 설정으로 이동합니다
2) 내비게이션 컨트롤러 내에 컨트롤러가있는 경우 인터페이스 빌더에서 다음과 같이 변경할 수 있습니다.
b) 그런 다음 탐색 모음의 스타일을 "검정색"으로 설정하십시오. 이는 상태 표시 줄 아래에 "검정색"-> 어두운 배경이 있으므로 상태 표시 줄이 흰색으로 설정되기 때문입니다.
또는 다음과 같이 코드에서 수행하십시오.
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3) 자체 상태 표시 줄 스타일이 필요하고 UINavigationController와 같은 일부 컨테이너 구조에 포함되어 있지 않은 컨트롤러 만있는 경우
컨트롤러의 코드에서 상태 표시 줄 스타일을 설정하십시오.
단순히 전화
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
에서
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
내 방법은 AppDelegate
iOS7에서 나에게 훌륭합니다.
View controller-based status bar appearance = NO
이 내용은 iOS 7 UI 전환 안내서 에 설명되어 있으며 직접 액세스하려면 Apple 개발자 ID가 필요합니다. 관련 발췌 :
상태 표시 줄은 투명하기 때문에 그 뒤의보기가 표시됩니다. [...] 사용
UIStatusBarStyle
상수를 사용하여 상태 표시 줄 내용이 어둡거나 밝아 야하는지 지정 .
UIStatusBarStyleDefault
어두운 내용을 표시합니다. [...]
UIStatusBarStyleLightContent
가벼운 내용을 표시합니다. 어두운 내용이 상태 표시 줄 뒤에있을 때 사용하십시오.
또한 관심이있을 수 있습니다 :
iOS 7에서는 개별 vew 컨트롤러에서 상태 표시 줄 스타일을 제어하고 앱이 실행되는 동안 스타일 막대를 변경할 수 있습니다. 이 동작을 선택하려면
UIViewControllerBasedStatusBarAppearance
앱Info.plist
파일에 키를 추가 하고 값을 지정하십시오YES
.
문서를 살펴 보는 것이 좋습니다. 다시 Apple 개발자 ID로 액세스 할 수 있습니다.
다음은 Apple 지침 / 지침입니다상태 표시 줄 변경에 관한 은 . 상태 표시 줄에는 어둡고 밝음 (흑백) 만 허용됩니다.
상태 표시 줄 스타일을 변경하는 방법은 다음과 같습니다.
상태 표시 줄 스타일, 응용 프로그램 수준을 설정 UIViewControllerBasedStatusBarAppearance
하려면NO
`.plist '파일에서 하십시오.
상태 표시 줄 스타일을 설정하려면 뷰 컨트롤러 수준에서 다음 단계를 수행하십시오.
UIViewControllerBasedStatusBarAppearance
에 YES
에.plist
당신의 UIViewController 수준 만 설정 상태 표시 줄 스타일을 필요로하는 경우, 파일.viewDidLoad 추가 기능에서- setNeedsStatusBarAppearanceUpdate
뷰 컨트롤러에서 preferredStatusBarStyle을 재정의하십시오.
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
상태 표시 줄 스타일 설정 레벨에 따라 .plist의 값을 설정하십시오.
다음은 응용 프로그램을 시작하거나 뷰 컨트롤러의 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
}
}
결과는 다음과 같습니다.
나는 다른 일을했고 그것은 나를 위해 일한다.
코드를 변경하지 않고 다음과 같이 .plist 파일을 구성했습니다.
도움이 되길 바랍니다.
각 뷰 컨트롤러에 대해 스토리 보드에서 "상태 표시 줄"의 시뮬레이션 된 메트릭 속성을 "추론 된"에서 "라이트 컨텐츠"로 변경합니다.
View controller-based status bar appearance
info.plist를 YES로 설정 하여 사용하려면 각 뷰 컨트롤러의 상태 표시 줄을 변경할 수 있음을 의미합니다. ViewDidLoad의 상태 표시 줄에있는 흰색 텍스트에 다음을 사용하십시오.
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
의 Info.plist 세트의 필드 값 NO 보기 컨트롤러 기반 상태 막대 모양 및 집합 상태 표시의 대상 스타일 등> 일반 설정.
귀하의 질문에 대한 완전한 답변을 드리겠습니다. 상태 표시 줄의 텍스트 색상을 변경하는 것은 매우 쉽지만 iOS 7에서는 초보자에게 약간 혼란 스럽습니다.
스토리 보드에서 뷰 컨트롤러를 선택하고 오른쪽의 Simulated Metrics로 이동하여 색상을 검정에서 흰색으로 변경하려고하면 작동하지 않으며 이유를 알 수 없습니다. 이 방법을 변경하면 작동합니다.
둘째, plist에서 UIViewControllerBasedStatusBarAppearance 속성을 찾지 못하지만 기본적으로는 없습니다. + 버튼을 클릭하여 직접 추가 한 다음 NO로 설정해야합니다.
iOS 7 상태 표시 줄 텍스트 색상
마지막으로 AppDelegate.m 파일로 이동하여 didFinishLaunchingWithOptions 메서드에 다음을 추가하고 다음 줄을 추가해야합니다.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
모든 뷰 컨트롤러의 색상이 흰색으로 바뀝니다. 도움이 되었기를 바랍니다!