您好,登錄后才能下訂單哦!
看到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是不會顯示出來的。因為它會直接變銷毀掉。也是本人遇到的一個坑。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。