Я использую 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 , но это не помогло.
Как правильно изменить цвет фона переключателя и отобразить его значение?