判斷當(dāng)前窗口是否顯示
假如一個(gè)UIView對(duì)象當(dāng)前正在顯示打掘,那么它的window屬性肯定為非空值届氢。雖然官方文檔未說(shuō)明UIView未顯示時(shí)window屬性的取值乖菱,但是經(jīng)過(guò)簡(jiǎn)單的測(cè)試助币,大部分情況下UIView未顯示時(shí)静陈,window的值為空燕雁,因此依據(jù)此判斷當(dāng)前UIViewController是否正在顯示。但是訪問(wèn)UIViewController的view屬性時(shí)鲸拥,可能會(huì)引起view加載(假如此時(shí)還未加載)拐格,這是不必要的,而且還可能引起無(wú)法預(yù)期的問(wèn)題刑赶。因此在訪問(wèn)view屬性之前捏浊,最好先檢查isViewLoaded屬性來(lái)避免上述問(wèn)題.
示例代碼如下,在UIViewController的擴(kuò)展中聲明了一個(gè)isVisible方法撞叨,方便以后調(diào)用
注意:UIView的官方文檔中僅注明當(dāng)view還未添加到window時(shí)呛伴,window屬性為空;但是并未提及當(dāng)window為nil時(shí)谒所,當(dāng)前view未顯示热康。通過(guò)簡(jiǎn)單的Demo檢測(cè)上文的方法可滿足大部分需求,因此使用時(shí)建議進(jìn)行簡(jiǎn)單測(cè)試劣领!
if(self.view.isViewLoaded && self.view.window) {
//code
}