QLPreviewController下部ボタンを隠す

1739 ワード

必要なのは、PDF、DOCなどのドキュメントをオンラインでプレビューし、繰り返しテストすることです.UIDocumentInteractionControllerとQLPreviewControllerではオンライン直接プレビューファイルが実現できないことが判明しました(誰かが展望通知をした場合)、折衷してファイルのダウンロードを実現し、QLPreviewControllerで開きますが、開く過程で下部にToolBarがあり、上にshareItemが存在することがわかり、それを隠そうとしました.
このtoolBarを隠すためにstackover上の文章QLPreviewController hide bottom toolbarを見つけた
  • 新規QLPreviewController
  • 方法ですべてのtoolBarを取得し、テストは2つの
  • である.
    -(NSArray *)findAllToolBarsFromView:(UIView *)view{
        NSMutableArray * bars = [[NSMutableArray alloc]initWithCapacity:0]; 
        for (UIView * view2 in view.subviews) {
            if ([view2 isKindOfClass:[UIToolbar class]]) {
                [bars addObject:view2];
            }
            [bars addObjectsFromArray:[self findAllToolBarsFromView:view2]];
        }
        return  bars;
    }```
    
    
    *  toolBars , toolbar, ‘hidden’
    
    ```-(void)viewWillAppear:(BOOL)animated{ 
        [super viewWillAppear:animated];
          self.qlToolBar = [self getToolBarFromView:self.view];
          self.qlToolBar.hidden = true;
          if (self.qlToolBar) {
              [self.qlToolBar addObserver:self forKeyPath:@"hidden" options:NSKeyValueObservingOptionPrior context:nil];
          } }```
        - (void)viewWillDisappear:(BOOL)animated{
          [super viewWillDisappear:animated];
          [self.navigationController removeObserver:self forKeyPath:@"hidden"];
        }
        - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    
          BOOL isToolBarHidden = self.qlToolBar.hidden;
          // If the ToolBar is not hidden
          if (!isToolBarHidden) {
              dispatch_async(dispatch_get_main_queue(), ^{
                  self.qlToolBar.hidden = true;
              });
          }
        }```
    
     toolBar