iOS 15 ナビゲーションバー設定#
背景#
Xcode 13.0 を使用してプロジェクトを iOS 15 の携帯電話に実行すると、ナビゲーションバーが黒くなります。しかし、低バージョンの Xcode で携帯電話に実行すると問題はありません。
修正#
設定方法を変更する必要があります。参考にしてくださいbarTintColor not working in iOS 15
元のナビゲーションバー設定コードはそのままで、UINavigationBarAppearance インスタンスオブジェクトのプロパティを新たに設定し、それをグローバルの navigationBar または単一ページの navigationBar プロパティに割り当てます。これはプロジェクトの設定がグローバル 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 {
// 以前のバージョンにフォールバック
}
[bar setBackgroundImage:[UIImage wps_createImageWithColor:color] forBarMetrics:UIBarMetricsDefault];
}