Ich weiß, dass dies eine alte Frage ist, aber ich habe so viele Stunden damit verbracht, nach einer Lösung zu suchen und habe etwas gefunden, das funktioniert.
Also, für jeden, der nach dem gleichen Ding wie ich sucht. Hier ist meine Lösung.
Codes sind in Objective-C, aber it'l eine einfache Umstellung auf Swift
Zuerst erstellen wir Unterklasse von QLPreviewController und in der Unterklasse
bearbeiten
Swift die folgenden Methoden außer Kraft gesetzt werden:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.rightBarButtonItem = nil
//For ipads the share button becomes a rightBarButtonItem
self.navigationController?.toolbar?.isHidden = true
//This hides the share item
self.navigationController?.toolbar?.addObserver(self, forKeyPath: "hidden", options: NSKeyValueObservingOptionPrior, context: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.toolbar?.removeObserver(self, forKeyPath: "hidden")
}
override func observeValue(forKeyPath keyPath: String, ofObject object: Any, change: [AnyHashable: Any], context: UnsafeMutableRawPointer) {
var isToolBarHidden: Bool? = self.navigationController?.toolbar?.isHidden
// If the ToolBar is not hidden
if isToolBarHidden == nil {
DispatchQueue.main.async(execute: {() -> Void in
self.navigationController?.toolbar?.isHidden = true
})
}
}
self.navigationController?.pushViewController(qlPreviewController, animated: true)
Objective-C:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationItem.rightBarButtonItem = nil; //For ipads the share button becomes a rightBarButtonItem
[[self.navigationController toolbar] setHidden:YES]; //This hides the share item
[[self.navigationController toolbar] addObserver:self forKeyPath:@"hidden" options:NSKeyValueObservingOptionPrior context:nil];
}
Entfernen Sie die Beobachter auf viewWillDisappear
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[self.navigationController toolbar] removeObserver:self forKeyPath:@"hidden"];
}
und den Beobachter Methode: Erforderlich, weil, wenn Sie das Bild einziges Antippen die Navigationsleiste und Werkzeugleiste auszublenden, die Share-Taste auf Hahn wieder sichtbar wird.
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
BOOL isToolBarHidden = [self.navigationController toolbar].hidden;
// If the ToolBar is not hidden
if (!isToolBarHidden) {
dispatch_async(dispatch_get_main_queue(), ^{
[[self.navigationController toolbar] setHidden:YES];
});
}
}
Und die PreviewController hat von Ihnen Navigation
[self.navigationController pushViewController:qlPreviewController animated:YES];
bestehenden geschoben werden und müssen wir auch statt QLPreviewController die Unterklasse verwenden.
Vielleicht können diese helfen: http://stackoverflow.com/questions/22953117/hide-right-button-n-qlpreviewcontroller? – Terry
funktioniert gut für mich https://Stackoverflow.com/a/45344701/1603380 – Buntylm