#ios #swift #swiftui #uikit #ios-pdfkit
#iOS #swift #swiftui #uikit #ios-pdfkit
Вопрос:
Я работаю над приложением, которое должно отображать довольно большой файл PDF. Для этого я использую PDFKits PDFView, который затем оборачивается в UIViewRepresentable. Проблема в том, что при настройке PDFView.autoScales = true
я получаю сообщение об ошибке при запуске. Приложение все еще работает, как и функция автоматического масштабирования, но я все равно хотел бы исправить ошибку. Я также должен упомянуть, что я полный новичок, когда дело доходит до разработки iOS.
Это моя реализация makeUIView:
func makeUIView(context: UIViewRepresentableContext<PDFKitRepresentedView>) -> PDFKitRepresentedView.UIViewType {
let pdfView = PDFView()
pdfView.autoScales = true
pdfView.pageBreakMargins.top = 0.0
pdfView.pageBreakMargins.bottom = 0.0
pdfView.pageShadowsEnabled = false
pdfView.document = PDFDocument(url: self.url)
return pdfView
}
И это ошибка:
[Assert] -[UIScrollView _clampedZoomScale:allowRubberbanding:]: Must be called with non-zero scale
[Unknown process name] CGAffineTransformInvert: singular matrix.
Похоже, они печатаются всякий раз, когда инициализируется PDFView. Есть идеи, в чем может быть проблема?
Комментарии:
1. Если это не влияет на функциональность приложения, игнорируйте его — это внутренние компоненты UIKit.
2. Я согласен, игнорирование этого, вероятно, не проблема. Сообщения, появляющиеся в консоли из внутренних компонентов системы, не редкость. Но попробуйте установить значение autoScales равным true после установки документа и полей.
3. @CenkBilgen, к сожалению, не помогло, но хорошо, я пока проигнорирую это, спасибо.
Ответ №1:
Я столкнулся с той же проблемой, и сейчас я ее исправил.
Ваш PDFView должен сначала установить фрейм.Вы можете указать любое значение.
let pdfView = PDFView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
self.view.addSubview(pdfView)
Теперь все в порядке, а затем устраните ошибку
Ответ №2:
В итоге я просто проигнорировал его. Кажется, работает нормально.