Position of navigation bar for modal view - iOS7

前端 未结 8 2261
南笙
南笙 2020-11-29 18:08

In a navigation controller, you automatically get the correct colour and position of a navigation bar as expected.

like this

8条回答
  •  广开言路
    2020-11-29 18:49

    Figured out the 3 options for solving this problem.

    Option 1: Resize the Nav Bar

    float currentVersion = 7.0;
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
        // iOS 7
        self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 64);
    }
    

    Option 2: Hide the Status Bar

    For example, in the modal view where you want to hide the status bar

    Add this method

    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    

    In viewDidLoad add

    float currentVersion = 7.0;
    
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
        [self prefersStatusBarHidden];
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    }
    else {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
    

    Now, when you dismiss the modal view, and you want your status bar back. Add this in viewWillAppear

        float currentVersion = 7.0;
    
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= currentVersion) {
        [self prefersStatusBarHidden];
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
        NSLog(@"ios7");
    }
    else {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    }
    

    and this, but return NO this time

    - (BOOL)prefersStatusBarHidden
    {
        return NO;
    }
    

    Option 3: Embed in Nav Controller

    Select your modal view, just embed that in a Navigation Controller.

    enter image description here

提交回复
热议问题