Custom UINavigationController UINavigationBar

后端 未结 4 1618
眼角桃花
眼角桃花 2021-02-02 04:24

Basically I want a custom UINavigationBar. I don\'t want it to be \"translucent\" or anything, like the pictures app.

I basically want to completely remove

相关标签:
4条回答
  • 2021-02-02 04:49

    To see through the UINavigationBar, if you choose to have one, just:

    self.navigationController.navigationBar.translucent=YES;
    

    You'll have to change the tint/color to match the background if you want it to appear like the image you posted.

    0 讨论(0)
  • 2021-02-02 04:56

    At the beginning of your AppDelegate subclass UINavigationBar as below:

    @interface CustomNavBar : UINavigationBar
    
    @end
    
    @implementation CustomNavBar
    
    - (void)drawRect:(CGRect)rect {
        UIImage *image = [UIImage imageNamed:@"bar.png"];
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    

    and then in the AppDelegate do this magic:

    //Set custom NavigationBar
    [self.navController setValue:[[CustomNavBar alloc]init] forKeyPath:@"navigationBar"];
    //Set tint to match bar.png
    self.navController.navigationBar.tintColor = [UIColor colorWithRed:0.93 green:0.43 blue:0 alpha:1];
    //Set font for NavigationBar
    [self.navController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Comfortaa-Bold" size:20], UITextAttributeFont, nil]];
    

    That should give you a lot more control over UINavigationController look & feel.

    0 讨论(0)
  • 2021-02-02 05:13

    Hard to tell, could be the UINavigationBar is there and color matches the UIView background or, there is no UINavigationBar, just a view with custom buttons and UILabel on top. Pick an approach and code it, or ask the question again with more specifics.

    0 讨论(0)
  • 2021-02-02 05:15
    @implementation UINavigationBar (background)
    
    - (void)drawRect:(CGRect)rect {
        UIImage *image = [UIImage imageNamed:@"navigationbar.png"];
        [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    }
    
    @end
    

    basically, its not completely see through - its a visual lie. The only way to do it realistically is to override UINavigationBar's drawRect: method, as shown above.

    0 讨论(0)
提交回复
热议问题