判斷View是否正在顯示的總結

有時候在作一些工程時候爲了視覺美化須要將一些view隱藏顯示,還有的狀況須要看是否是正在顯示,這篇博文就簡單總結一下怎麼處理html

最簡單易行的是本身動手作一個標誌

BOOL isShow;網絡

而後在添加到superView時候,isShow = YESless

從父視圖移除時候,isShow = NO測試

遍歷全部子視圖進行操做,這樣能夠同時對多個子視圖進行操作,移除視圖釋放內存等

for(UIView * view in [self.view subviews]){
        if(View isKindOfCless:[OneViewObject class]){
            //...spa

ps :IOS  判斷當前UIViewController 是否正在顯示

某些狀況下,需判斷當前ViewController是否正在顯示,好比後臺網絡請求報錯,咱們可能只但願在發起請求的頁面彈窗提示用戶,當用戶已經跳轉到其餘界面,不作彈窗,減小對用戶的干擾。htm

假如一個UIView對象當前正在顯示,那麼它的window屬性確定爲非空值。雖然官方文檔未說明UIView未顯示時window屬性的取值, 可是通過簡單的測試,大部分狀況下UIView未顯示時,window的值爲空,所以依據此判斷當前UIViewController是否正在顯示。可是 訪問UIViewController的view屬性時,可能會引發view加載(假如此時還未加載),這是沒必要要的,並且還可能引發沒法預期的問題。因 此在訪問view屬性以前,最好先檢查isViewLoaded屬性來避免上述問題。
- (BOOL)isVisible {
    return (self.isViewLoaded && self.view.window);
}對象

同時引用另一位博友的處理方式內存

iOS判斷UIView是否顯示在屏幕上

如何判斷一個view 是否在另一個view 範圍內

其原理是將兩個view的座標convert 到相對於同一個view的座標,再對比文檔

貼一段代碼吧:
    CGRect rect = [_testButton convertRect:_testButton.frame toView:self.view];
    if (CGRectIntersectsRect(self.view.frame, rect)) {
        NSLog(@"true");
    }else{
        NSLog(@"false");
    }get

相關文章
相關標籤/搜索