PAYATHON 2026

SwiftUI 中如何关闭 PDFView 的页面阴影?

数据阿明

结论

将 PDFView 的 pageShadowsEnabled 设为 false,可以关闭 PDF 页面边缘的阴影:

pdfView.pageShadowsEnabled = false

题目中的 layer.shadowOpacity、layer.shadowRadius 和 layer.shadowOffset 控制的是 PDFView 视图图层的阴影。页面阴影由 PDFKit 绘制,因此修改这些图层属性不会关闭页面阴影。Apple 的 PDFView API 将 pageShadowsEnabled 定义为控制页面边缘阴影的属性,该属性从 iOS 12 起可用。Apple PDFView 文档

在 UIViewRepresentable 中设置

创建 PDFView 时设置该属性:

import PDFKit
import SwiftUI

struct PDFKitView: UIViewRepresentable {
    let data: Data

    func makeUIView(context: Context) -> PDFView {
        let pdfView = PDFView()
        pdfView.document = PDFDocument(data: data)
        pdfView.autoScales = false
        pdfView.scaleFactor = 1.0
        pdfView.displayMode = .singlePageContinuous
        pdfView.displayDirection = .vertical
        pdfView.backgroundColor = .clear
        pdfView.pageShadowsEnabled = false
        return pdfView
    }

    func updateUIView(_ uiView: PDFView, context: Context) {}
}

兼容较早的系统版本

pageShadowsEnabled 从 iOS 12 起可用。若应用还支持 iOS 12 之前的版本,可以通过可用性检查来设置:

if #available(iOS 12.0, *) {
    pdfView.pageShadowsEnabled = false
}

关闭页面阴影后如果仍能看到边缘效果,可以检查 PDF 页面本身是否绘制了边框或阴影。pageShadowsEnabled 只控制 PDFKit 为页面边缘绘制的阴影。

备注:内容仅供参考。