PDFAnnotation Radiobutton не меняет цвет фона или не отображает значение - PullRequest
0 голосов
/ 04 июля 2019

Я использую PDFKit в iOS в качестве средства рендеринга 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 , но это не помогло.

Как правильно изменить цвет фона переключателя и отобразить его значение?

...