我在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
}
}
}
}
}
}
当我设置背景颜色时,什么也没发生。 但是,当我尝试将背景颜色设置为文本注释的类型时,颜色就会改变。
单选按钮和“文本”注释之间的区别在于其类型。 单选按钮具有 widgetFieldType == .button ,文本具有 widgetFieldType == .text 。
我认为这是它不起作用的原因。
接下来,我尝试删除注释,更改其背景颜色,然后再次添加。这也行不通。
if annot.widgetControlType == .radioButtonControl {
page.removeAnnotation(annot)
annot.backgroundColor = UIColor.red
page.addAnnotation(annot)
}
但是当我创建PDFAnnotaion的新实例并将其添加到页面时,它就可以工作。
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 ,但这没有帮助。
如何正确更改单选按钮的背景色并显示其值?