中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

ios瘋狂詳解之自定義狀態欄代碼解析
來源:易賢網 閱讀:1004 次 日期:2015-01-26 15:21:09
溫馨提示:易賢網小編為您整理了“ios瘋狂詳解之自定義狀態欄代碼解析”,方便廣大網友查閱!

這里說明一下,apple沒有開放的狀態欄的api,在ios 的官方文檔沒有提到修改window level的方式;

先看一下window level的可用的值包括:

1: typedef cgfloat uiwindowlevel;

2: const uiwindowlevel uiwindowlevelnormal; // 0.0

3: const uiwindowlevel uiwindowlevelalert; // 2000.0

4: const uiwindowlevel uiwindowlevelstatusbar; // 1000.0

默認我們的uiview layer都是在uiwindowlevelnormal上,這也就是為什么系統彈出來的對話框在我們的視圖之上,因為它的window level級別更高。

根據windowlevel的原理我們也就知道,如果想在系統的狀態欄上,添加自定義的狀態欄,就需要比uiwindowlevelstatusbar的級別更高,接下來,用代碼說明一下:

首先,先建一個single view application,名字自定義就可以了,

然后,新建一個類命名為: statusbaroverlay 繼承自uiwindow類,代碼:

statusbaroverlay.h文件

1: #import

2:

3: @interface statusbaroverlay : uiwindow{

4: uiview *contentview;

5: uilabel *textlabel;

6: }

7:

8: @property (nonatomic, retain) uiview *contentview;

9:

10: @property (nonatomic, retain) uilabel *textlabel;

11:

12: @end

statusbaroverlay.m文件

1: //

2: // statusbaroverlay.m

3: // statusbardemo

4: //

5: // created by jordy wang on 12-8-7.

6: // copyright (c) 2012年 __mycompanyname__. all rights reserved.

7: //

8:

9: #import statusbaroverlay.h

10:

11: #define status_bar_orientation [uiapplication sharedapplication].statusbarorientation

12: #define rotation_animation_duration [uiapplication sharedapplication].statusbarorientationanimationduration

13:

14:

15: @interface statusbaroverlay()

16:

17: - (void)initializetodefaultstate;

18: - (void)rotatestatusbarwithframe:(nsvalue *)framevalue;

19: - (void)setsubviewhframe;

20: - (void)setsubviewvframe;

21: @end

22:

23:

24: @implementation statusbaroverlay

25: @synthesize contentview;

26: @synthesize textlabel;

27:

28: //重寫init方法

29: - (id)init

30: {

31: self = [super initwithframe:cgrectzero];

32: if (self) {

33: self.windowlevel = uiwindowlevelstatusbar + 1;

34: self.frame = [uiapplication sharedapplication].statusbarframe;

35: [self setbackgroundcolor:[uicolor orangecolor]];

36: [self sethidden:no];

37:

38: //內容視圖

39: uiview *_contentview = [[uiview alloc] initwithframe:self.bounds];

40: self.contentview = _contentview;

41: [self.contentview setautoresizingmask:uiviewautoresizingflexiblewidth];

42: [self.contentview setbackgroundcolor:[uicolor cyancolor]];

43: [self addsubview:self.contentview];

44: [_contentview release];

45:

46:

47: //添加textlabel

48: uilabel *_textlabel = [[uilabel alloc] initwithframe:cgrectmake(30, 0, cgrectgetwidth(self.frame)-60, cgrectgetheight(self.frame))];

49: self.textlabel = _textlabel;

50: [self.textlabel setbackgroundcolor:[uicolor bluecolor]];

51: [self.textlabel setfont:[uifont systemfontofsize:12]];

52: [self.textlabel settextalignment:uitextalignmentcenter];

53: [self.textlabel settextcolor:[uicolor blackcolor]];

54: [self.textlabel settext:@自定義的狀態欄 author by jordy];

55: [self.contentview addsubview:self.textlabel];

56: [_textlabel release];

57:

58: //注冊監聽---當屏幕將要轉動時,所出發的事件(用于操作本視圖改變其frame)

59: [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(willrotatescreenevent:) name:uiapplicationwillchangestatusbarframenotification object:nil];

60: //初始化

61: [self initializetodefaultstate];

62: }

63:

64: return self;

65: }

66:

67:

68:

69:

70: //初始化為默認狀態

71: - (void)initializetodefaultstate

72: {

73: //獲取當前的狀態欄位置

74: cgrect statusbarframe = [uiapplication sharedapplication].statusbarframe;

75: //設置當前視圖的旋轉, 根據當前設備的朝向

76: [self rotatestatusbarwithframe:[nsvalue valuewithcgrect:statusbarframe]];

77:

78:

79:

80: }

81:

82:

83: //旋轉屏幕

84: - (void)rotatestatusbarwithframe:(nsvalue *)framevalue

85: {

86: cgrect frame = [framevalue cgrectvalue];

87: uiinterfaceorientation orientation = status_bar_orientation;

88:

89: if (orientation == uideviceorientationportrait) {

90: self.transform = cgaffinetransformidentity; //屏幕不旋轉

91: [self setsubviewvframe];

92: }else if (orientation == uideviceorientationportraitupsidedown) {

93: self.transform = cgaffinetransformmakerotation(m_pi); //屏幕旋轉180度

94: [self setsubviewvframe];

95: }else if (orientation == uideviceorientationlandscaperight) {

96: self.transform = cgaffinetransformmakerotation((m_pi * (-90.0f) / 180.0f)); //屏幕旋轉-90度

97: [self setsubviewhframe];

98: }else if (orientation == uideviceorientationlandscapeleft){

99: self.transform = cgaffinetransformmakerotation(m_pi * 90.0f / 180.0f); //屏幕旋轉90度

100: [self setsubviewhframe];

101: }

102:

103: self.frame = frame;

104: [self.contentview setframe:self.bounds];

105: }

106:

107: //設置橫屏的子視圖的frame

108: - (void)setsubviewhframe

109: {

110: self.textlabel.frame = cgrectmake(30, 0, 1024-60, 20);

111: }

112: //設置豎屏的子視圖的frame

113: - (void)setsubviewvframe

114: {

115: self.textlabel.frame = cgrectmake(30, 0, 748-60, 20);

116: }

117:

118: #pragma mark -

119: #pragma mark 響應屏幕即將旋轉時的事件響應

120: - (void)willrotatescreenevent:(nsnotification *)notification

121: {

122: nsvalue *framevalue = [notification.userinfo valueforkey:uiapplicationstatusbarframeuserinfokey];

123: [self rotatestatusbaranimatedwithframe:framevalue];

124: }

125:

126: - (void)rotatestatusbaranimatedwithframe:(nsvalue *)framevalue {

127: [uiview animatewithduration:rotation_animation_duration animations:^{

128: self.alpha = 0;

129: } completion:^(bool finished) {

130: [self rotatestatusbarwithframe:framevalue];

131: [uiview animatewithduration:rotation_animation_duration animations:^{

132: self.alpha = 1;

133: }];

134: }];

135: }

136:

137: - (void)dealloc

138: {

139: [[nsnotificationcenter defaultcenter] removeobserver:self];

140: [textlabel release];

141: textlabel = nil;

142:

143: [contentview release];

144: contentview = nil;

145:

146: [super dealloc];

147: }

148:

149: @end

由于代碼比較簡單,并且我在上述代碼里有相應的注釋,這里需要說明一點的是,默認我們繼承自uiwindow的statusbaroverlay類是hidden狀態,需要在初始化的時候設置它的hidden屬性為no,

在屏幕旋轉過程中,自定義的狀態欄與uiviewcontroller之間的旋轉是分離的,所以我們需要做一個隱藏的動畫,在旋轉過程前先隱藏自定義的狀態欄,旋轉結果后設置顯示狀態。

如果需要做一種動畫,比方從底部下移顯示一條信息,隔n秒后又自動收回的動畫,直接設置自定義的視圖的y坐標就可以了,默認y坐標設置是0。

最后, 使用它的方式也比較簡單,只需要初始化,代碼:

statusbaroverlay *statusbaroverlay = [[statusbaroverlay alloc] init];

由于我公司的需求是開機自動下載的功能,所以我在初始化的時候,是放在了appdelegate中。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲精品国产拍免费91在线| 欧美日韩在线一区| 亚洲深爱激情| 一本一本久久a久久精品综合麻豆| 久久久久久久久久久久久女国产乱| 欧美好骚综合网| 国产欧美日韩专区发布| 亚洲午夜av电影| 久久久久久欧美| 国产精品嫩草影院一区二区 | 亚洲伦理在线免费看| 亚洲国产成人av| 亚洲性人人天天夜夜摸| 欧美精品免费观看二区| 99视频超级精品| 欧美激情一区二区在线| 亚洲精品久久在线| 蜜桃av噜噜一区| 激情综合自拍| 欧美国产乱视频| 亚洲激情六月丁香| 久久午夜视频| 91久久久一线二线三线品牌| 午夜久久久久久| 韩日成人av| 欧美日韩免费观看一区三区| 噜噜噜91成人网| 亚洲人体影院| 猛干欧美女孩| 欧美激情第二页| 亚洲美女av在线播放| 国产伦精品一区二区三区视频黑人| 国产欧美一区二区精品性色| 国产精品久久久久久一区二区三区| 欧美体内she精视频| 亚洲成色999久久网站| 亚洲欧美日韩精品| 欧美日韩免费高清| 亚洲精品美女在线| 欧美成人免费播放| 欧美激情成人在线| 亚洲欧美日韩国产| 亚洲精品视频二区| 1024精品一区二区三区| 国产精品视频福利| 欧美日韩激情小视频| 欧美一级久久久久久久大片| 一本色道久久综合| 伊人婷婷久久| 国产欧美日韩一区二区三区在线观看 | 在线播放视频一区| 欧美视频一区二区三区在线观看 | 美日韩在线观看| 亚洲欧美制服另类日韩| 亚洲激情第一区| 樱桃国产成人精品视频| 狠狠综合久久| 日韩一级大片| 亚洲国产精品毛片| 亚洲天堂网在线观看| 亚洲视频第一页| 亚洲精品无人区| 欧美连裤袜在线视频| 毛片av中文字幕一区二区| 久久精品国产在热久久| 欧美精品在线一区二区三区| 亚洲国产三级网| 国产亚洲欧洲| 久久米奇亚洲| 亚洲国产欧美一区二区三区同亚洲 | 欧美激情综合色| 欧美成人午夜激情视频| 欧美精品色网| 国产精品视频免费在线观看| 国产日韩欧美一区在线| 国产精品久久一卡二卡| 狠狠色丁香婷婷综合久久片| 亚洲黄页一区| 一区二区三区视频在线播放| 欧美一区二区三区在线| 欧美高清一区| 国产精品第一区| 亚洲高清av| 久久精品亚洲精品| 欧美日韩免费区域视频在线观看| 国产精品狼人久久影院观看方式| 亚洲国产高清一区| 午夜亚洲福利在线老司机| 免费一级欧美片在线观看| 国产精品视频免费观看| 亚洲人午夜精品| 免费在线欧美视频| 欧美精品久久久久a| 亚洲精品美女在线| 欧美久久久久久| 国产精品九色蝌蚪自拍| 国产精品久久久久一区二区三区共| 亚洲第一黄色网| 亚洲经典自拍| 亚洲淫片在线视频| 久久久久久国产精品mv| 亚洲精选大片| 国产日韩欧美一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 一区二区三区精品视频在线观看| 国产亚洲成精品久久| 欧美日韩亚洲视频一区| 久久婷婷人人澡人人喊人人爽| 亚洲丶国产丶欧美一区二区三区| 久久精品国产精品亚洲综合| 国产日韩精品在线观看| 久久不见久久见免费视频1| 国产欧美在线观看一区| 久久黄色网页| 一区精品在线播放| 美女视频黄a大片欧美| 在线日韩中文字幕| 久久人人看视频| 亚洲欧洲精品一区二区| 欧美三级不卡| 亚洲一区二区成人在线观看| 国产精品久久久久久久久免费| 亚洲制服丝袜在线| 好看的日韩视频| 欧美日韩精品免费观看视频完整 | 国产精品美女一区二区| 亚洲一级二级| 亚洲国产成人午夜在线一区 | 亚洲一本大道在线| 国产农村妇女毛片精品久久莱园子| 欧美区一区二| 欧美成人按摩| 欧美一区二区三区久久精品| 国产精品99久久久久久www| 欧美日韩大陆在线| 91久久午夜| 国产欧美一区视频| 欧美日产在线观看| 国产日韩在线看片| 欧美在线观看一二区| 欧美在线播放一区二区| 一区二区在线视频播放| 国产午夜精品一区二区三区视频| 国产精品vvv| 国产精品午夜电影| 国产精品人人做人人爽| 国产精品99免费看| 国产精品丝袜白浆摸在线| 国产精品黄页免费高清在线观看| 欧美日韩中文字幕在线视频| 欧美日韩高清在线| 国产精品美女久久久久久久| 久久精品国产精品亚洲| 亚洲一级高清| 亚洲视频碰碰| 亚洲欧美国产一区二区三区| 亚洲精华国产欧美| 亚洲国产视频a| 影音国产精品| 亚洲成色www久久网站| 激情国产一区二区| 亚洲欧洲日本一区二区三区| 影音先锋久久| 91久久国产精品91久久性色| 91久久精品国产| 99re这里只有精品6| 一本色道久久综合狠狠躁的推荐| 日韩图片一区| 午夜精品美女自拍福到在线| 欧美一进一出视频| 美女91精品| 欧美日韩亚洲三区| 国产精品视频一区二区三区| 国产精品你懂的在线欣赏| 国产亚洲激情视频在线| 亚洲丁香婷深爱综合| 亚洲国产91色在线| 免费一级欧美片在线观看| 欧美高清视频| 激情成人综合| 久久亚洲国产成人| 欧美波霸影院| 欧美韩日一区| 久久久高清一区二区三区| 久久免费偷拍视频| 欧美电影在线| 亚洲最新合集| 亚洲国产日韩欧美综合久久| 国产精品久久一级| 欧美三级视频| 国内精品亚洲| 夜夜狂射影院欧美极品| 久久九九久精品国产免费直播| 免费在线成人| 国产欧美精品xxxx另类| 亚洲级视频在线观看免费1级| 亚洲欧美三级伦理| 欧美日本成人| 激情偷拍久久| 欧美日韩综合不卡|