獲取狀態列上的 view 陣列
UIApplication *app = [UIApplication sharedApplication];
// 獲取狀態列
UIView *statusView = [app valueForKey:@"statusBar"];
NSArray *subViews = [[statusView valueForKey:@"foregroundView"] subviews];
複製程式碼
列印 subviews 就能看到狀態列上的圖示資料
// 訊號強度
"<UIStatusBarSignalStrengthItemView: 0x102112070; frame = (6 0; 35 20);
userInteractionEnabled = NO; layer = <CALayer: 0x1702282a0>> [Item = <UIStatusBarItem: 0x170228260> [UIStatusBarSignalStrengthItemView (Left)]]",
// 服務商
"<UIStatusBarServiceItemView: 0x102112e50; frame = (44 0; 50 20); userInteractionEnabled = NO; layer = <CALayer: 0x170228440>> [Item = <UIStatusBarItem: 0x1702283a0> [UIStatusBarServiceItemView (Left)]]",
// 網路狀態碼
"<UIStatusBarDataNetworkItemView: 0x1021137c0; frame = (99 0; 13 20); userInteractionEnabled = NO; layer = <CALayer: 0x170228500>> [Item = <UIStatusBarItem: 0x1702284a0> [UIStatusBarDataNetworkItemView (Left)]]",
// 電池標誌
"<UIStatusBarBatteryItemView: 0x10220cac0; frame = (282 0; 33 20); userInteractionEnabled = NO; layer = <CALayer: 0x174229f80>> [Item = <UIStatusBarItem: 0x174229fe0> [UIStatusBarBatteryItemView (Right)]]",
// 電池數字
"<UIStatusBarBatteryPercentItemView: 0x10220f680; frame = (254 0; 25 20); userInteractionEnabled = NO; layer = <CALayer: 0x174229420>> [Item = <UIStatusBarItem: 0x17422a000> [UIStatusBarBatteryPercentItemView (Right)]]",
// 鬧鐘
"<UIStatusBarIndicatorItemView: 0x1021060a0; frame = (238 0; 10 20); userInteractionEnabled = NO; layer = <CALayer: 0x170228800>> [Item = <UIStatusBarItem: 0x174229fc0> [UIStatusBarIndicatorItemView:Alarm (Right)]]",
// 時間
"<UIStatusBarTimeItemView: 0x102114680; frame = (145 0; 35 20); userInteractionEnabled = NO; layer = <CALayer: 0x170228880>> [Item = <UIStatusBarItem: 0x170228280> [UIStatusBarTimeItemView (Center)]]"
複製程式碼
上面的是我的真機的列印結果,不同的狀態列可能結果不同,還有其他的顯示的圖示,如下:
// back to app
"UIStatusBarBreadcrumbItemView"
// 右上角的開啟 Safari
"UIStatusBarOpenInSafariItemView"
// 定位標誌
"UIStatusBarLocationItemView"
複製程式碼