今天在检测相册(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