PDFAnnotation单选按钮不会更改背景颜色或不显示值

时间:2019-07-04 09:28:45

标签: swift radio-button background-color pdfkit pdf-annotations

我在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 ,但这没有帮助。

如何正确更改单选按钮的背景色并显示其值?

0 个答案:

没有答案