UIWindow使用技巧

看到UIWindow,相信很多人都會想起下方的代碼。這是舊版本Xcode提供的模板,用於創建整個項目的視圖容器。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    CGRect bounds = [UIScreen mainScreen].bounds;

    self.window = [[UIWindow alloc] initWithFrame:bounds];

    [self.window makeKeyWindow];

}


那究竟什麼是UIWindow呢?它是繼承自UIView的一種特殊視圖,用於承載基本的UI控件,包括UIView。每個app裏至少有一個UIWindow,稱作keyWindow。當這個window執行becomeKeyWindow

,makeKeyWindow或者makeKeyAndVisible方法,就成爲了keyWindow。除了keyWindow之外,還可以創建其他的window用於輔助顯示。


UIWindow顯示:

通過new,alloc創建出來的window都是隱藏的,將window的屬性hidden設成NO或者執行makeKeyAndVisible就可以將window顯示出來。



UIWindow的默認顯示層級(UIWindowLevel)有3種:

UIWindowLevelNormal -- 普通層級,在狀態欄下方

UIWindowLevelAlert -- 跟UIAlertView一個層級,比狀態欄高一個層級

UIWindowLevelStatusBar -- 跟狀態欄一個層級

創建時默認是UIWindowLevelNormal,一般keywindow都是這個層級。由於UIWindowLevel是CGFloat數值,因此可以將該屬性設成一個具體的數值。或者在提供的3種值的基礎進行加減。如騰訊的自選股app中,刷新列表時候在狀態欄上方顯示一個刷新成功提示可以將UIWindowLevel設成UIWindowLevelStatusBar+1。


注意:

項目使用ARC時,使用臨時變量創建的UIWindow是不會顯示出來的。因爲它會直接變銷燬掉。也是本人遇到的一個坑。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章