我在 iOS 中使用 PDFKit 作为 PDF 渲染器,但单选按钮中的背景颜色存在问题。
我迭代文档中所有页面上的所有 PDF 注释。
override func viewDidAppear(_ animated: Bool) {
//let pdfData = ... received data from file storage ...
if let document = PDFDocument(data: pdfData) {
for i in 0...document.pageCount {
if let page = document.page(at: i) {
for annot in page.annotations {
if annot.widgetControlType == .radioButtonControl {
annot.backgroundColor = UIColor.red
}
}
}
}
}
}
当我设置背景颜色时,没有任何反应。但是当我尝试将背景颜色设置为Text annotation的类型时,颜色会发生变化。
单选按钮和文本注释之间的区别在于它的类型。Radio 按钮有一个widgetFieldType == .button和 Text 有一个widgetFieldType == .text。
我认为这就是它不起作用的原因。
接下来我尝试删除注释,更改他的背景颜色并再次添加。这也行不通。
if annot.widgetControlType == .radioButtonControl {
page.removeAnnotation(annot)
annot.backgroundColor = UIColor.red
page.addAnnotation(annot)
}
但是当我创建一个 PDFAnotaion 的新实例并将其添加到页面时,它就可以工作了。
if annot.widgetControlType == .radioButtonControl {
page.removeAnnotation(annot)
let newAnnot = PDFAnnotation(bounds: annot.bounds, forType: .widget, withProperties: nil)
newAnnot.backgroundColor = UIColor.red
newAnnot.widgetStringValue = annot.widgetStringValue
page.addAnnotation(newAnnot)
}
最大的问题是这个单选按钮的值没有显示,即使它包含值本身。如果在另一种方法中我从 PDF 注释中获取所有值,则此单选按钮也有正确的值。单选按钮包含值,仅显示。
我试图将所有属性 PDF 注释从annot复制到newAnnot,但没有帮助。
如何正确更改单选按钮的背景颜色并显示其值?