[英]Odd behavior when calling addSubView in viewDidLoad
我已經在IB中創建了一個UIView
,當我將其添加到viewDidLoad
的UIViewController
時,視圖的背景色更改為clearColor
,並且按鈕不可單擊(它們不接收觸摸)。 如果我嘗試在代碼中設置背景色,則不會發生任何事情。 看起來像這樣:
但是,如果我在viewWillAppear
運行完全相同的代碼,它將正常顯示,並且可以單擊,如下所示:
該代碼很簡單,並且是viewDidLoad
的唯一代碼(我在那里刪除了所有其他代碼,看是否是問題所在):
[myView setFrame:CGRectMake(0, 0, 320, 30)];
[self.view addSubview:myView];
我試過調用bringSubviewToFront
,但沒有執行任何操作。 有任何想法嗎?
其他注意事項:
UIView
與視圖控制器的主視圖位於同一NIB中,並通過IBOutlet
連接。
NIB文件是與視圖控制器分開創建的,並調用initWithNibName
。
我已經在NIB文件中設置了自定義類和視圖出口,以匹配視圖控制器。
NIB文件的自動版式已關閉
沒有情節提要
這里沒有足夠的信息可以確定,但是我想您的控制器已設置為在頂部欄后面擴展視圖。 我不相信諸如topLayoutGuide之類的topLayoutGuide
布局的東西要等到viewDidLoad
之后topLayoutGuide
計算出來。
可能的解決方案:
如果不需要,請取消選中視圖控制器上的“頂部欄下方的邊緣”。
在viewDidLoad
添加視圖,但將其放置在viewDidLayoutSubviews
使用自動布局約束放置myView
,而不是顯式設置其框架。
這里的問題是,當您在viewDidLoad
添加視圖時,我們不知道發生了什么。 僅僅知道它在viewWillAppear
工作還不夠。 我們必須知道它沒有出現時的狀態。 為了實現這一目標,我提出:
UIView
技巧 實現以下內容(通常是結合使用)可以幫助診斷常見視圖問題的根源。
nil
? -window
嗎? -hidden
嗎? -clipsToBounds
嗎? -alpha
為1-ish。 UIView
可以代替嗎? viewDidLoad
, viewWillAppear
, viewDidLayoutSubviews
等)與視圖viewWillAppear
? super
( viewDidLoad
等)? UINavigationController
, UITabBarController
等)? -wantsFullscreenLayout
嗎? -edgesForExtendedLayout
是否有邊緣? -translatesAutoresizingMaskIntoConstraints
是否設置正確? 當他們來找我時,我會加更多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.