直播軟體搭建,修改狀態列、導航條顏色及文字顏色
直播軟體搭建,修改狀態列、導航條顏色及文字顏色
一、只改變狀態列顏色
1、首先在info.plist設定View controller-based status bar appearance,並將其值設定為YES。
2、在需要修改狀態列顏色的頁面重寫系統方法-preferredStatusBarStyle
// 僅當前頁面狀態列文字顏色 - 系統方法 - (UIStatusBarStyle)preferredStatusBarStyle { if (self.isLightStyle) { // 白色 return UIStatusBarStyleLightContent; }else{ // 黑色 if (@available(iOS 13.0, *)) { return UIStatusBarStyleDarkContent; } else { return UIStatusBarStyleDefault; //黑色, 預設值 } } }
3、手動觸發 preferredStatusBarStyle 更新狀態列顏色
如果依賴返回資料來決定狀態列顏色,可以呼叫下面方法手動觸發preferredStatusBarStyle
// 手動觸發 preferredStatusBarStyle 更新狀態列顏色 [self setNeedsStatusBarAppearanceUpdate];
二、同時改變狀態列、導航條顏色
1、將要顯示時設定樣式。將要消失時恢復原有樣式。
/// 導航欄背景顏色,準備2個顏色,是應對漸變顏色 @interface ZBWebViewVC () @property (nonatomic, copy) NSString *navColorOne; @property (nonatomic, copy) NSString *navColorTwo; @property (nonatomic, strong) UIView *statusBar; @property (nonatomic, assign) BOOL isLightStyle; @end @implementation ZBWebViewVC - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //設定顯示樣式,也可以返回資料後呼叫此方法,根據返回資料決定顏色 [self updateNavColor:@"#ffffff" second:nil fontColor:@"#000000"]; // 手動觸發 preferredStatusBarStyle 更新狀態列顏色 [self setNeedsStatusBarAppearanceUpdate]; } //頁面消失,還原導航條顏色 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; //恢復webView狀態列為白色 if (@available(iOS 13.0, *)) { if ([[UIApplication sharedApplication].keyWindow.subviews containsObject:self.statusBar]) { [self.statusBar removeFromSuperview]; } } else { UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = UIColor.clearColor; } } } /// 更新狀態列顏色 - (void)updateStatusBarStyleIsWhite:(BOOL)isWhite{ //修改隱藏導航欄後,狀態列顏色還原 UIColor *bgColor = UIColor.whiteColor; if (self.navColorOne.length && !isWhite) { bgColor = [UIColor colorWithHexString:self.navColorOne]; } if (@available(iOS 13.0, *)) { if (![[UIApplication sharedApplication].keyWindow.subviews containsObject:self.statusBar]) { [[UIApplication sharedApplication].keyWindow addSubview:self.statusBar]; } self.statusBar.backgroundColor = bgColor; } else { UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = bgColor; } } } /// 配置導航條、文字顏色 /// @param first 第一種顏色,例 白色:#ffffff /// @param second 第二種顏色,例 黑色:#000000 /// @param fontColor title顏色,例 黑色:#000000 - (void)updateNavColor:(NSString *)first second:(NSString *)second fontColor:(NSString *)fontColor{ UIColor *topleftColor = [UIColor colorWithHexString:first]; UIColor *bottomrightColor = second ? [UIColor colorWithHexString:second] : topleftColor; UIColor *fColor; if (self.isLightStyle) { [self.btnLeftOne setImage:[UIImage imageNamed:@"nav_back_white"] forState:UIControlStateNormal]; [self.btnLeftTwo setImage:[UIImage imageNamed:@"nav_close_white"] forState:UIControlStateNormal]; [self.btnRightOne setImage:[UIImage imageNamed:@"caigoudannew_white"] forState:UIControlStateNormal]; [self.btnRightTwo setImage:[UIImage imageNamed:@"share_white"] forState:UIControlStateNormal]; fColor = fontColor ? [UIColor colorWithHexString:fontColor] : UIColor.whiteColor; [self updateStatusBarStyleIsWhite:NO]; }else{ [self.btnLeftOne setImage:[UIImage imageNamed:@"nav_back_black"] forState:UIControlStateNormal]; [self.btnLeftTwo setImage:[UIImage imageNamed:@"nav_close_black"] forState:UIControlStateNormal]; [self.btnRightOne setImage:[UIImage imageNamed:@"caigoudannew"] forState:UIControlStateNormal]; [self.btnRightTwo setImage:[UIImage imageNamed:@"share_black"] forState:UIControlStateNormal]; fColor = fontColor ? [UIColor colorWithHexString:fontColor] : UIColor.blackColor; [self updateStatusBarStyleIsWhite:YES]; } // 設定導航條背景圖 UIImage *bgImg = [UIImage gradientColorImageFromColors:@[topleftColor, bottomrightColor] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(XYYScreenW, kNavBarHeight)]; if (@available(iOS 13.0, *)) { UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init]; [appearance configureWithOpaqueBackground]; appearance.backgroundImage = bgImg; appearance.titleTextAttributes = @{NSForegroundColorAttributeName:fColor, NSFontAttributeName:[UIFont systemFontOfSize:17]}; self.navigationController.navigationBar.standardAppearance = appearance; self.navigationController.navigationBar.scrollEdgeAppearance = appearance; }else{ self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:fColor, NSFontAttributeName:[UIFont systemFontOfSize:17]}; } [self.navigationController.navigationBar setBackgroundImage:bgImg forBarMetrics:UIBarMetricsDefault]; } #pragma mark - lazy - (UIView *)statusBar{ if (!_statusBar) { if (@available(iOS 13.0, *)) { _statusBar = [[UIView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.windowScene.statusBarManager.statusBarFrame]; } } return _statusBar; }
2、在需要改變時,呼叫-updateNavColor:second:fontColor:方法,改變樣式
[self updateNavColor:self.navColorOne second:self.navColorTwo fontColor:fontColor];
以上就是直播軟體搭建,修改狀態列、導航條顏色及文字顏色, 更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2889188/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS 修改狀態列StatusBar的顏色及文字顏色iOS
- 線上直播原始碼,單獨修改狀態列顏色原始碼
- 搭建自己的直播平臺,更改狀態列的字型顏色
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- 直播軟體搭建,狀態列顏色跟隨裝置系統變化而變化
- 【iOS開發】強制修改iOS狀態列顏色iOS
- [SVG]修改固定顏色為填充顏色SVG
- IOS設定狀態列的背景顏色iOS
- Android實現修改狀態列背景 字型 圖示顏色Android
- android狀態列一體化(改變狀態列的背景顏色)Android
- 設定文字的選中狀態背景顏色
- 直播系統搭建,設定透明背景(去掉蒙層)狀態列顏色不改變
- win10 工作列顏色修改方法 win10工作列怎麼修改顏色Win10
- Android系統更改狀態列字型顏色Android
- Android的標題欄,狀態列圖示文字顏色及背景動態變化Android
- CSS改變文字選中狀態下的顏色CSS
- Foldor for Mac(資料夾顏色修改軟體)Mac
- 直播軟體app開發,導航條根據位置移動實現定位、顏色過渡動畫效果APP動畫
- 短視訊直播系統,Android狀態列設定顏色字型Android
- win10 如何修改工作列顏色 win10怎樣修改工作列顏色Win10
- Win10系統怎麼修改桌面工作列顏色?工作列顏色修改步驟教程Win10
- 【iOS開發】修改present出來的ViewController狀態列顏色iOSViewController
- 修改UITabBarItem字型顏色UItabBar
- iOS 導航欄背景顏色完全透明及漸變iOS
- iOS button背景顏色狀態設定iOS
- 智慧變色T恤 顏色隨運動狀態變
- 直播軟體原始碼,改變button的背景顏色原始碼
- win10如何修改工作列顏色_win10下面工作列怎麼改顏色Win10
- Win10如何修改工作列顏色 win10設定工作列顏色的方法Win10
- 修改Android 介面顏色Android
- Eclipse背景顏色修改Eclipse
- iOS UISearchBar 修改背景顏色iOSUI
- ffmpeg修改顏色空間
- 直播平臺軟體開發,Uniapp動態設定元件顏色APP元件
- iOS 導航欄顏色透明度漸變iOS
- Pypycharm修改程式碼字型大小及修改顏色PyCharm
- win10工作列顏色改不了怎麼辦 修改工作列顏色的方法一覽Win10
- Android 沉浸式狀態列 漸變顏色的實現Android