筆者適配iOS10后,發(fā)現原來的QLPreviewController顯示為空白頁面,但是在iOS10之前均顯示正常。
經過測試發(fā)現,QLPreviewController的代理方法都進行了執(zhí)行,檢查iOS10以及iOS10以前的系統版本以及對應的模擬器沙盒中的文件發(fā)現,文件均存在,而且均可以正常打開,通過分享,也可以將完整文件進行分享,即問題就是顯示不出來。
測試結果:QLPreviewController.view的frame沒有大小,之前此處使用了系統的默認值,所以需要謹記,以后都要設置好。
解決方法:只需設置QLPreviewController的view的frame 或者 邊界約束,就可以顯示正常了。
iOS10以前代碼:
- (QLPreviewController *)previewVc {
if (_previewVc == nil) {
_previewVc = [[QLPreviewController alloc] init];
[self addChildViewController:self.previewVc];
[self.view addSubview:_previewVc.view];
}
return _previewVc;
}
iOS10以后代碼:frame版本
- (QLPreviewController *)previewVc {
if (_previewVc == nil) {
_previewVc = [[QLPreviewController alloc] init];
//DF_WIDTH 為屏幕寬度 DF_HEIGHT為屏幕高度
_previewVc.view.frame = CGRectMake(0, 0, DF_WIDTH, DF_HEIGHT);
[self addChildViewController:self.previewVc];
[self.view addSubview:_previewVc.view];
}
return _previewVc;
}
iOS10以后代碼:masonry約束版本
- (QLPreviewController *)previewVc {
if (_previewVc == nil) {
_previewVc = [[QLPreviewController alloc] init];
[self addChildViewController:self.previewVc];
[self.view addSubview:_previewVc.view];
[_previewVc.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
}
return _previewVc;
}
有的小伙伴可能遇到不同的問題,比如QLPreviewController的代理方法不能執(zhí)行,可以在合適的地方調用reloadData方法
[self.previewVc reloadData];
小伙伴們有問題可以留言,一起探討,謝謝。