筆者適配iOS10后,發(fā)現(xiàn)原來的QLPreviewController顯示為空白頁面,但是在iOS10之前均顯示正常。
經(jīng)過測試發(fā)現(xiàn),QLPreviewController的代理方法都進(jìn)行了執(zhí)行句柠,檢查iOS10以及iOS10以前的系統(tǒng)版本以及對應(yīng)的模擬器沙盒中的文件發(fā)現(xiàn),文件均存在,而且均可以正常打開溯职,通過分享精盅,也可以將完整文件進(jìn)行分享,即問題就是顯示不出來谜酒。
測試結(jié)果:QLPreviewController.view的frame沒有大小叹俏,之前此處使用了系統(tǒng)的默認(rèn)值,所以需要謹(jǐn)記甚带,以后都要設(shè)置好她肯。
解決方法:只需設(shè)置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í)行,可以在合適的地方調(diào)用reloadData方法
[self.previewVc reloadData];
小伙伴們有問題可以留言碉输,一起探討籽前,謝謝。