我在我的項目中有一個錯誤(我已經第二次遇到),我只需在UIViewController視圖的頂部添加一個視圖。什麼都不突出,像這樣:UI故障,儘管在主線程上運行UI操作的事實
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.displayEmailNotificationsIfNeeded()
}
的錯誤是,由於某種原因,自動佈局不正確地工作,並在頂部不加它,而是圍繞60pt比需要的低。我懷疑〜60pt來自手動頂部約束調整,包括導航欄和狀態欄,但這並不重要。
的事實是,如果我在主隊列明確運行的方法,像這樣的問題就會消失:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
print("is main thread: ", NSThread.isMainThread())
dispatch_async(dispatch_get_main_queue(), {() -> Void in
print("is main thread inside block: ", NSThread.isMainThread())
self.displayEmailNotificationsIfNeeded()
})
}
打印語句返回true
兩種情況。這不是很糟糕,但出於好奇,我想了解是什麼原因造成的。有沒有辦法調試這種情況,並理解爲什麼在主線程上明確執行操作修復了一些UI故障?