Я знаю, что это старый вопрос, но я трачу столько часов на поиски решения и придумал что-то, что работает.
Итак, для любого, кто ищет то же, что и я. Вот мое решение.
коды в Objective-C, но it'l быть простой переход на Swift
Сначала мы создаем подкласс QLPreviewController и в подклассе переопределения следующих методов
Edit
Swift:
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];
}
Удалить наблюдатель на viewWillDisappear
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[self.navigationController toolbar] removeObserver:self forKeyPath:@"hidden"];
}
и метод наблюдателя: Обязательно, потому что, когда вы одним нажатием изображение, чтобы скрыть панель навигации и панель инструментов, кнопка часть снова становится видимым на кране.
- (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];
});
}
}
И PreviewController должен быть выдвинут от вас существующих navigationController
[self.navigationController pushViewController:qlPreviewController animated:YES];
А также мы должны использовать подкласс вместо QLPreviewController.
Возможно, это может помочь: http://stackoverflow.com/questions/22953117/hide-right-button-n-qlpreviewcontroller? – Terry
работать отлично для меня https://stackoverflow.com/a/45344701/1603380 – Buntylm