iOS 15 導航欄設置#
背景#
使用 Xcode 13.0 運行項目到 iOS 15 的手機上,出現導航欄黑色。但是在低版本 Xcode 運行到手機就沒有問題。
修改#
設置方法需修改,參考barTintColor not working in iOS 15
原來設置導航欄代碼不變,新增設置 UINavigationBarAppearance 實例對象的屬性,然後賦值到全局的 navigationBar 或者單個頁面的 navigaitonBar 屬性中,取決於項目的設置是全局 NavigationBar 還是單個頁面設置 (可參考iOS StatusBar 設置)。
代碼如下:
- (void)updateNavigationBarColor:(UIColor *)color {
UINavigationBar *bar = self.navigationController.navigationBar;
if (@available(iOS 13.0, *)) {
UINavigationBarAppearance *barAppearance = [UINavigationBarAppearance new];
barAppearance.backgroundColor = color; // 設置背景顏色
barAppearance.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor],
NSFontAttributeName : [UIFont fontWithName:@"Helvetica-Bold" size:17]}; // 設置導航欄字體顏色和大小
barAppearance.shadowColor = [UIColor clearColor]; // 設置導航欄底部的分割線不顯示
bar.scrollEdgeAppearance = bar.standardAppearance = barAppearance;
[bar setShadowImage:[UIImage new]];
} else {
// Fallback on earlier versions
}
[bar setBackgroundImage:[UIImage wps_createImageWithColor:color] forBarMetrics:UIBarMetricsDefault];
}