如何消除PDFView“页面阴影”?

Posted

技术标签:

【中文标题】如何消除PDFView“页面阴影”?【英文标题】:How to eliminate PDFView "page shadow"? 【发布时间】:2018-05-20 12:37:03 【问题描述】:

ios PDFView 添加到 UIView 时,PDFView 的页面区域会添加类似阴影的边框。有没有办法消除阴影?

我知道一些麻烦的方法来做到这一点:在屏幕外扩展边界,覆盖白色 UIView 以隐藏阴影,或修改私有 PDFPageView(到剪辑到边界)。我特别不希望这里的边界在屏幕外,并且不想被其他黑客弄乱。

附上示例。 (例如这里使用的 IRS 表格;应用程序与 IRS 无关......)

【问题讨论】:

【参考方案1】:

更新:Apple 对我的 Radar 的回复是,iOS 12 beta 3 中添加了一个新属性 PDFView.pageShadowsEnabled。现在这是隐藏阴影的正确方法。万岁!

https://developer.apple.com/documentation/pdfkit/pdfview/3013838-pageshadowsenabled?changes=latest_minor

iOS 12 之前的信息如下:

我与 Apple(WWDC 2018 实验室)确认没有官方方法可以隐藏阴影。有人告诉我有一个仅限内部的方法可以做到这一点,并要求提交一个雷达以公开该方法。雷达#40847614,如果有人想上当。

与此同时,我正在深入研究视图层次结构,并将所有内容剪裁到边界。我不喜欢它,但它似乎工作。阴影在旋转时返回,所以我在 viewWillAppear 和 viewWillTransitionToSize 中都调用它。

-(void)removeShadowFromPDFView:(UIView *)view 
    //Deep-dive into pdfView and set all views to clipsToBounds = YES

    view.clipsToBounds = YES;

    if ([view subviews].count == 0) 
        //No subviews to examine
        return;
    

    for (UIView *subview in view.subviews) 
        view.clipsToBounds = YES;
        [self removeShadowFromView:subview];
    

【讨论】:

请注意,它是 pageShadowsEnabled,复数阴影。 也添加到 MacOS 10.14【参考方案2】:

我在拆分视图窗格中遇到了类似的问题。我所做的是检查子视图中的每个视图,以及它们的每个子视图,还有层,直到确定问题视图(花了一些时间)。然后我只是将该视图隐藏或不透明。

当我测试 uiview 子类时,我没有硬核名称,而是使用格式字符串构造它,以免触发我的应用程序的一些自动化测试(Apple 批准)。

【讨论】:

【参考方案3】:

在 Swift 中,您可以使用以下代码行禁用页面阴影

pdfView.pageShadowsEnabled = false

【讨论】:

以上是关于如何消除PDFView“页面阴影”?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道用户何时在 PDFView 中滑动到下一页? - 安卓

如何在 Swift 中创建单页垂直滚动 PDFView

Android:如何在 Robolectric 中测试 PDFView?

PDFView - 如何自动缩放并仍然加载第一页?

如何在 iOS 的对象库中使用“pdfView”?

如何在 swift 中将 UIImage 中的 PDF 放入 PDFView 中?