今天在檢測相冊(photo+camera)這部分的bug時,發如今長按(long press)照片、錄像或點擊拍照的圖標以後,再返回原來的view(assetTableViewController),該view會顯示 錯誤,會顯示一片空白。web
下面現總結個人工做思路和debugging的步驟:app
1. 設斷點;在返回的view controller的viewwillappear和viewwilllayoutsubviews這兩處設置斷點以查看該view的frame大小函數
2. 重現bug:長按照片或錄像等,當進入該view時在兩個端點處看到該view的frame變化了!!debug
具體是:會進入viewwilllayoutsubviews函數3次,並在第二次和第三次被改變了,y變成了0.io
3. 跟蹤代碼並大膽猜想:發現這些返回的操做都同時前後調用了presentViewControllerhe dismissViewController(這個是難點和關鍵)bug
在網上試圖找解決方案,未果!以後經過在每一個函數以後添加本身以前寫的一個webbrowserviewcontroller來進行檢測,即將presentviewController這段代碼換成webbrowserviewcontroller,而後返回,驚奇地發現沒問題了。 方法
4. 嘗試解決:presentViewController 是UIViewController的方法,它的實現咱們無法改變,因此只能從本身的代碼下手。首先該view嵌套在另外一個view裏面,因此嘗試用總結
一個containerVC = [UIApplication sharedApplication].keyWindow.rootViewController來進行present和dismiss。實驗以後發現正確!layout
雖然問題解決了,可是仍是不知其因此然,但願看官們能參與討論並提出建議~~di