iOS显示PDF有多种方式,具体可参见:https://blog.csdn.net/qq_34047841/article/details/70225881。
如果使用系统原生的QLPreviewController,就必须容忍它的导航栏和新页面展示。否则想单纯的通过addChildViewController或者addSubview:QLPreviewController.view将其嵌套在已有的ViewController中均会导致读取失效。
但通过如下方式可解决此问题:
@property (strong, nonatomic) QLPreviewController *previewController;
@property (strong, nonatomic) UIView *quickLookView;
...
[self addChildViewController:self.previewController];
[self.quickLookView addSubview:self.previewController.view];
[self.previewController didMoveToParentViewController:self];
[self.view addSubview:self.quickLookView];
...
[self.previewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.quickLookView);
make.left.equalTo(self.quickLookView);
make.right.equalTo(self.quickLookView);
make.bottom.equalTo(self.quickLookView);
}];
另外补充一点,若要展示网络资源pdf,需要先将其下载,否则直接在代理方法里return 一个远程 url是无法显示的。
网友评论