Ich habe einen iOS-App in schnellen geschrieben, die den Standard-Navigationsleiste Hintergrund in AppDelegate
überschreibt:UINavigationBar Aussehen für UIDocumentInteractionController
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let navBackgroundImage = UIImage(named: "navBck")
UINavigationBar.appearance().barTintColor = UIColor(patternImage: navBackgroundImage)
}
In der App das ich verwenden mag ein UIDocumentInteractionController
ein PDF zum Anzeigen generiert die App-Datei.
let docInteractionController = UIDocumentInteractionController(url: pdfURL!)
docInteractionController.delegate = self
docInteractionController.presentPreview(animated: true)
Das Problem ist, dass der benutzerdefinierte Hintergrund Ich habe nicht unterstützt scheinen und diese stürzt mit dem folgenden Fehler (die ohne den benutzerdefinierten Hintergrund treten nicht in AppDelegate
)
Assertionsfehler in - [ UICGColor encodeWithCoder:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.7.47/UIColor.m:1549 Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: 'Nur RGBA oder Weiße Farbräume werden in dieser Situation unterstützt.
Ich bin auf der Suche nach der saubersten und einfachsten Möglichkeit, dies zu umgehen, indem Sie einen ARGB-Hintergrund nur für diesen Vorgang in der Navigationsleiste wiederherstellen. Ich habe die unten versucht, in meiner UIDocumentInteractionControllerDelegate
Implementierung ohne Glück (Abstürze mit dem gleichen Fehler)
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
UINavigationBar.appearance().barTintColor = UIColor.darkGrey
return self
}
func documentInteractionControllerDidEndPreview(_ controller: UIDocumentInteractionController)
{
let navBackgroundImage:UIImage! = UIImage(named: "navBck")
UINavigationBar.appearance().barTintColor = UIColor(patternImage: navBackgroundImage)
}
Versuchen Sie, die barTintColor vor dem Anzeigen des UIDocumentInteractionController festzulegen. – tmrog
Nur versucht, das gibt den gleichen Fehler – tishu