ios開發筆記--狀態列的自定義,隱藏
iOS7 StatusBar 在需要隱藏或改變樣式時在UIViewConroller中呼叫:
[selfsetNeedsStatusBarAppearanceUpdate];
1、隱藏
StatusBar在iOS7中無法使用一下介面隱藏:
[[UIApplicationsharedApplication]setStatusBarHidden:YES];
若要隱藏需要在UIViewController中實現下列函式:
- (BOOL)prefersStatusBarHidden
{
returnYES;
}
2、樣式改變
iOS 7中statusbar 有兩種樣式:白色字型UIStatusBarStyleLightContent和黑色字型UIStatusBarStyleDefault。
如果改變需要在UIViewController中實現:
- (UIStatusBarStyle)preferredStatusBarStyle
{
returnUIStatusBarStyleDefault;
}
3、自定義狀態列,方法一
UIWindow* statusWindow = [[UIWindow alloc]initWithFrame:[UIApplication sharedApplication].statusBarFrame];
[statusWindows etWindowLevel:UIWindowLevelStatusBar +1];
[statusWindow setBackgroundColor:[UIColor clearColor]];
UILabel* statusLabel = [[UILabel alloc]initWithFrame:statusWindow.bounds];
statusLabel.text=@"RSSI:";
statusLabel.textColor= [UIColorblueColor];
statusLabel.textAlignment= NSTextAlignmentCenter;
statusLabel.backgroundColor= [UIColorblackColor];
[statusWindow addSubview:statusLabel];
[statusWindow makeKeyAndVisible];
4、自定義狀態列,方法二
如果需要在狀態列顯示自定義的訊息時,就需要自定義狀態列。
程式碼如下:
XYCustomStatusBar.h
#import
@interfaceXYCustomStatusBar : UIWindow{
UILabel*_messageLabel;
}
- (void)showStatusMessage:(NSString*)message;
- (void)hide;
@end
XYCustomStatusBar.m
#import "XYCustomStatusBar.h"
@implementationXYCustomStatusBar
- (void)dealloc{
[superdealloc];
[_messageLabelrelease], _messageLabel =nil;
}
- (id)init{
self= [superinit];
if(self) {
self.frame= [UIApplicationsharedApplication].statusBarFrame;
self.backgroundColor= [UIColorblackColor];
self.windowLevel= UIWindowLevelStatusBar +1.0f;
_messageLabel = [[UILabelalloc]initWithFrame:self.bounds];
[_messageLabelsetTextColor:[UIColorwhiteColor]];
[_messageLabelsetTextAlignment:NSTextAlignmentRight];
[_messageLabelsetBackgroundColor:[UIColorclearColor]];
[selfaddSubview:_messageLabel];
}
returnself;
}
- (void)showStatusMessage:(NSString*)message{
self.hidden=NO;
self.alpha=1.0f;
_messageLabel.text=@"";
CGSize totalSize =self.frame.size;
self.frame= (CGRect){self.frame.origin,0, totalSize.height};
[UIVie wanimateWithDuration:0.5animations:^{
self.frame= (CGRect){self.frame.origin, totalSize };
}completion:^(BOOLfinished){
_messageLabel.text= message;
}];
}
- (void)hide{
self.alpha=1.0f;
[UIView animateWithDuration:0.5fanimations:^{
self.alpha=0.0f;
}completion:^(BOOLfinished){
_messageLabel.text=@"";
self.hidden=YES;
}];
}
@end
為了讓自定義的狀態列可以讓使用者看到,設定了它的windowlevel,在ios中,windowlevel屬性決定了UIWindow的顯示層次,預設的windowlevel為UIWindowLevelNormal,即0.0 。為了能覆蓋預設的狀態列,將windowlevel設定高點。其他程式碼基本上都不解釋什麼,如果要特殊效果,可以自己新增。
相關文章
- iOS隱藏狀態列iOS
- Android 隱藏系統狀態列Android
- iOS專案開發實戰——自定義設定導航欄和狀態列背景iOS
- iOS開發筆記 | 自定義具有內邊距的labeliOS筆記
- 如何隱藏工作列的圖示win10_win10怎麼隱藏狀態列圖示Win10
- 【iOS開發】強制修改iOS狀態列顏色iOS
- Android 顯示、隱藏狀態列和導航欄Android
- 關於iOS 狀態列、導航欄的幾處筆記iOS筆記
- Android螢幕中隱藏標題欄和狀態列Android
- 自定義Button高亮狀態
- Android開發筆記——透明狀態列與透明虛擬按鍵Android筆記
- .NET 隱藏/自定義windows系統游標Windows
- 短視訊平臺開發,畫面靜置時隱藏狀態列、導航欄、進度條
- android短視訊開發,自定義更改平臺主題以及狀態列樣式Android
- iOS 狀態列的圖示iOS
- jquery easyui datagrid 動態隱藏列jQueryUI
- HarmonyOS NEXT應用開發案例—狀態列顯隱變化
- iOS學習筆記--PresentedVC自定義彈窗iOS筆記
- 筆記本怎麼新增隱藏wifi 筆記本如何連線隱藏的無線wifi筆記WiFi
- iOS開發 AVFoundation自定義相機iOS
- 【iOS開發】防止UIWindow延遲釋放佔用狀態列iOSUI
- 【iOS開發】修改present出來的ViewController狀態列顏色iOSViewController
- Oracle 隱藏列Oracle
- jqgrid動態顯示,隱藏指定列
- iOS Status Bar 的隱藏iOS
- 芒果iOS開發之讓tableView的sectionView滑到頂部隱藏iOSView
- iOS狀態列相關操作iOS
- android 自定義狀態列和導航欄分析與實現Android
- IOS 開發筆記2iOS筆記
- Android開發筆記(一百二十四)自定義相簿Android筆記
- Android開發筆記(一百一十八)自定義懸浮窗Android筆記
- steam隱私設定在哪 steam怎麼隱藏個人資料狀態
- iOS開發 AVFoundation 自定義視訊錄製iOS
- tensorflow2 自定義損失函式使用的隱藏坑函式
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- iOS 靈活的控制狀態列StatusBariOS
- IOS設定狀態列的背景顏色iOS
- Android 狀態列關於開發的幾件事Android