【问题标题】:Programmatically replace UIImageView with PDFView in Swift在 Swift 中以编程方式将 UIImageView 替换为 PDFView
【发布时间】:2018-11-30 04:06:50
【问题描述】:

我的故事板中有一个 UIImageView,其中一个 IBOutlet 连接到我的视图控制器。有没有办法以编程方式将其替换为 PDFView 并在运行时为 PDFView 提供约束?我正在根据我是显示图像还是 pdf 来更改视图。

【问题讨论】:

  • 只需将场景中的两个视图放在同一位置并根据需要隐藏视图

标签: ios swift uiimageview pdfview


【解决方案1】:

有一个UIView,链接到一个 IBOutlet 到你的 ViewController,在你的故事板中有正确的约束,并在运行时添加/删除适当的子视图(UIImageViewPDFView)。

例如,添加一个PDFView作为填充整个UIView的子视图(这里命名为containerView):

import PDFKit

//...

let pdfView = PDFView()

pdfView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(pdfView)

pdfView.leadingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.leadingAnchor).isActive = true
pdfView.trailingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.trailingAnchor).isActive = true
pdfView.topAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.topAnchor).isActive = true
pdfView.bottomAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.bottomAnchor).isActive = true

//add pdf content 
guard let path = Bundle.main.url(forResource: "example", withExtension: "pdf") else { return }

if let document = PDFDocument(url: path) {
    pdfView.document = document
}

对于 UIImageView :

let imageName = "yourImage.png"
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)

imageView.frame = CGRect(x: containerView.frame.origin.x, 
                         y: containerView.frame.origin.y, 
                         width: containerView.frame.size.width, 
                         height: containerView.frame.size.height)
containerView.addSubview(imageView)

不要忘记在必要时删除您的子视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多