[英]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.