Quicklook/QLPreviewController, some problems with iOS 8 but everything works with iOS 7.1

前端 未结 2 1325
梦如初夏
梦如初夏 2021-02-04 18:06

I\'m working with QuickLook to view PDF Files.

It\'s working properly in iOS 7.1 but some problems happens with iOS 8 GM.

Pictures are better than words, I wanna

相关标签:
2条回答
  • 2021-02-04 18:33

    I've been recently able to fix the background issue bug (the animation is still choppy).

    To fix the 'black background' issue I set a custom background color of navigation controller's view on push. When returning back to my view controller I make sure to restore the original background color to nil.

    - (void)viewWillApear:(BOOL)animated {
       [super viewWillApear:animated];
       self.navigationController.view.backgroundColor = nil;
    
       // Optional - In order to ease the animation bug
       self.view.alpha = 1.0;
    }
    
    
    - (void)viewWillDissapear:(BOOL)animated {
       [super viewWillDissapear:animated];
       self.navigationController.view.backgroundColor = [UIColor whiteColor];
    
       // Optional - In order to ease the animation bug
       [UIView animateWithDuration:0.35 animations:^{
          self.view.alpha = 0.0;
       }];
    }
    

    This code should go to your view controller from which you're pushing QLPreviewController.

    This solution is definitely a hack at it's best, but hope it helps!

    0 讨论(0)
  • 2021-02-04 18:38

    I got the same problem with the transition. My solution was to store the previewController in a property and initialize it once in viewDidLoad in my presenting view controller.

    I also had to set the currentPreviewItemIndex equals 0 every time I push the previewcontroller, although I'm only showing one file at the time. If I'm not setting the value zip files are not opened by default and the preview controller shows a 'Show contents' button instead which will open a new preview controller suffering the same transition issue.

    I'm still trying to fix the not hiding navigation bar issue. In the apple sample project everything works fine. It seems that modally presenting the navigation controller causes the problem in my project.

    EDIT:

    It definitely seems to be a bug to me. The problem with the navigation bar only appears if the navigation controller is presented modal. It seems to me that the preview controller creates a new navigation controller and also a new navigation bar. This one is hidden under the navigation bar of the hosting navigation controller. This screenshot shows the problem quite well: enter image description here

    The blue highlighted bar is self.navigationBar and the blue framed one belongs to the preview controller. Again this happens only if the navigation controller is presented modal.

    My workaround is to set the my view controller as the navigation controllers delegate and hide the navigation bar as soon the preview controller is pushed. I only tested my code on iOS 8.0 and 8.1.

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.previewController = [[QLPreviewController alloc] init];
        self.previewController.delegate = self;
        self.previewController.dataSource = self;
    
        self.navigationController.delegate = self;
    }
    
    -(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        // Workaround:
        // If the previewController is pushed to a navigation controller which is presented modal, it appears that the preview controller adds a second navigation bar (and navigation controller).
        // This results in a UI glitch that one nav bar is always visible. To prevent this we hide our navigation bar so that only the one owned by the preview controller is visible.
        // Note that this only happends if the navigation controller is presented modal, thus it seems to be an iOS bug.
        if (viewController == self.previewController) {
            [self.navigationController setNavigationBarHidden:YES animated:YES];
        }    
    }
    
    0 讨论(0)
提交回复
热议问题