簡體   English   中英

如何找到最父級的SuperView?

[英]How do I find the most parent SuperView?

我正在嘗試向頁面添加新的subView,以便除自身以外的所有內容都顯示為灰色。 但是,我是在屏幕的子視圖中調用它的。 為了解決這個問題,我必須執行以下操作:

[self.view.superview.superview.superview.superview addSubview:self.cardDialog.view];

可以推測,這是非常糟糕的代碼。 如何找到合適的父級並正確設置?

如果視圖是視圖層次結構的一部分,請使用window屬性。

UIView* topView = self.view.window;

或者,如果您的視圖尚未顯示在屏幕上,則可以通過應用程序委托間接獲取窗口

UIView* topView = [UIApplication sharedApplication].delegate.window;

否則,如果您的目標不是窗口,則可以遍歷視圖層次結構,直到找到所需的視圖:

UIView* topView = self.view;

while(topView.superview != nil){
    topview = topView.superview;

    if( /*topview is the one you were looking for*/ ){
        break;
    }
}

我曾經遇到過這種情況,所以我放棄了。 我決定使用modalView代替交叉溶解過渡。 您不僅可以避免遇到的問題,而且還可以使事情井井有條。 最近,我通過獲取parentVC的快照並將其發送到modalView來改進了此方法,然后應用了色調。 我想總體效果就是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM