[iOS] presentViewController引發的frame顯示錯誤

    今天在檢測相冊(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

相關文章
相關標籤/搜索