0
어두운 모드 전환을 시도하고 있습니다. 이 자습서 (link)로 시작했지만 tabBar의 스타일을 변경할 수는 없습니다. navBar의 스타일은 변경되지만 tabBar는 그대로 유지됩니다.스위치가있는 UITabBar 스타일 변경
앱을 다시 시작하지 않고 TabBar의 모양을 변경하려면 어떻게해야합니까?
업데이트 # 1 : 여기에 내가 때 스위치의 상태가 변경 ThemeManager.applyTheme(.Dark || .Light)
전화
import UIKit
enum Theme: Int {
case Light, Dark
var barStyle: UIBarStyle {
switch self {
case .Light:
return .Default
case .Dark:
return .Black
}
}
var backgroundColor: UIColor {
switch self {
case .Light:
return UIColor(red:0.95, green:0.95, blue:0.95, alpha:1.00)
case .Dark:
return UIColor(red:0.12, green:0.12, blue:0.12, alpha:1.00)
}
}
var cellBackgroundColor: UIColor {
switch self {
case .Light:
return UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.00)
case .Dark:
return UIColor(red:0.15, green:0.15, blue:0.15, alpha:1.00)
}
}
var labelColor: UIColor {
switch self {
case .Light:
return UIColor(red:0.12, green:0.12, blue:0.12, alpha:1.00)
case .Dark:
return UIColor(red:0.99, green:0.99, blue:0.99, alpha:1.00)
}
}
var buttonColor: UIColor {
switch self {
case .Light:
return UIColor(red:0.22, green:0.59, blue:0.95, alpha:1.00)
case .Dark:
return UIColor(red:0.22, green:0.59, blue:0.95, alpha:1.00)
}
}
var separatorColor: UIColor {
switch self {
case .Light:
return UIColor(red:0.94, green:0.94, blue:0.94, alpha:1.00)
case .Dark:
return UIColor(red:0.22, green:0.22, blue:0.22, alpha:1.00)
}
}
var tintColor: UIColor {
switch self {
case .Light:
return UIColor(red:0.62, green:0.62, blue:0.62, alpha:1.00)
case .Dark:
return UIColor(red:0.50, green:0.50, blue:0.50, alpha:1.00)
}
}
}
class ThemeManager {
static func currentTheme() -> Theme {
if(NSUserDefaults.standardUserDefaults().boolForKey("darkMode")){
return .Dark
} else {
return .Light
}
}
static func applyTheme(theme: Theme) {
if(theme == .Dark){
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "darkMode")
} else {
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "darkMode")
}
NSUserDefaults.standardUserDefaults().synchronize()
let sharedApplication = UIApplication.sharedApplication()
sharedApplication.delegate?.window??.tintColor = theme.buttonColor
UINavigationBar.appearance().barStyle = theme.barStyle
UITabBar.appearance().barStyle = theme.barStyle
UITabBar.appearance().barTintColor = theme.labelColor
UINavigationBar.appearance().tintColor = theme.labelColor
UITableViewCell.appearance().backgroundColor = theme.cellBackgroundColor
UIStepper.appearance().tintColor = theme.tintColor
UIActivityIndicatorView.appearance().tintColor = theme.tintColor
UIButton.appearance().tintColor = theme.buttonColor
UILabel.appearance().textColor = theme.labelColor
}
}
를 사용하는 코드입니다.
당신이 코드의 일부를 공유 할 수, 제발? –
업데이트가 필요하면 알려주세요. – Dan
문제는 코드가 괜찮습니다. 네비게이션 스택을 다시로드하기 만하면됩니다. 사용한 튜토리얼에서도 마찬가지입니다. 튜토리얼 코드에서 적용 스타일 코드 부분에서'dismiss()'를 제거하면 즉시 작동하지 않는다는 것을 알 수 있습니다. –