在iOS開發(fā)中,不得不考慮到黑夜模式的適配,可能不太熟悉的人會(huì)覺得一臉懵,我為了這個(gè)適配專門寫了個(gè)小方法,可能沒有特別高端,希望能幫到你們。
此方法在iOS13的時(shí)候出現(xiàn)了,感覺蘋果是專門為了適配黑夜模式設(shè)計(jì)的。
代碼如下:
extension UIColor {
class func getColor(_ light:UIColor,_ dark:UIColor) -> UIColor{
return UIColor { (trait) -> UIColor in
if trait.userInterfaceStyle == .light {
return light
}else{
return dark
}
}
}
}
iOS15 我遇到了一個(gè)關(guān)于tabbar變成透明的問(wèn)題
此方法可以解決iOS15 tabbar透明的問(wèn)題
可以寫在父類UITabBarController viewDidLoad里面。
代碼如下:
if #available(iOS 15.0, *) {
let appearance = UITabBarAppearance.init()
UITabBar.appearance().scrollEdgeAppearance = appearance
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = UIColor.white
UITabBar.appearance().standardAppearance = appearance
UITabBar.appearance().backgroundColor = UIColor.systemBackground
UITabBar.appearance().barTintColor = UIColor.white
UITabBar.appearance().isTranslucent = false
self.tabBar.tintColor = UIColor.black
}else{
UITabBar.appearance().barTintColor = UIColor.white
UITabBar.appearance().isTranslucent = false
self.tabBar.tintColor = UIColor.black
}
關(guān)于iOS15 如何讓navigationbar變透明
此方法可以寫在 自定義UIViewController父類的viewWillAppear 里面
可通過(guò)if self is HomePageVc(自定義控制器名稱來(lái)判斷哪些頁(yè)面需要透明導(dǎo)航欄)。
代碼如下,僅供參考:
let dict = [NSAttributedStringKey.foregroundColor:UIColor.getColor(UIColor.black, UIColor.white)]
if #available(iOS 15, *) {
let barApp = UINavigationBarAppearance()
barApp.backgroundColor = UIColor.clear
if self is HomePageVc(此處可判斷哪些地方需要改變title顏色) {
barApp.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.getColor(UIColor.black, UIColor.black)]
}else{
barApp.titleTextAttributes = dict
}
barApp.backgroundEffect = nil
barApp.shadowColor = nil
self.navigationController?.navigationBar.scrollEdgeAppearance = nil
self.navigationController?.navigationBar.standardAppearance = barApp
}else{
self.navigationController?.navigationBar.titleTextAttributes = dict
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
}
self.navigationController?.navigationBar.isTranslucent = true
將navigationbar變非透明,以及iOS15 解決導(dǎo)航欄不隨黑夜模式發(fā)生變化的代碼
if #available(iOS 15, *) {
let barApp = UINavigationBarAppearance()
barApp.backgroundColor = UIColor.getColor(UIColor.white, UIColor.black)
barApp.shadowColor = UIColor.white
barApp.titleTextAttributes = dict
self.navigationController?.navigationBar.scrollEdgeAppearance = barApp
self.navigationController?.navigationBar.standardAppearance = barApp
}else{
self.navigationController?.navigationBar.barTintColor = UIColor.getColor(UIColor.white, UIColor.black)
self.navigationController?.navigationBar.titleTextAttributes = dict
self.navigationController?.navigationBar.shadowImage = UIImage.init()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
}
self.navigationController?.navigationBar.isTranslucent = false
筆者也是為了培養(yǎng)自己的習(xí)慣,文筆不好,記錄一下自己遇到的問(wèn)題,如有不對(duì)請(qǐng)指出,謝謝大家。