iOS UITabBar : Remove top shadow gradient line

前端 未结 15 1275
暖寄归人
暖寄归人 2020-12-02 08:59

I implemented a custom UITabBar and I still have this gradient/shadow on top of it. I added

[self.tabBar setBackgroundImage:[UIImage imageNamed:@\"navBarBotto

相关标签:
15条回答
  • 2020-12-02 09:45

    Calling [[UITabBar appearance] setShadowImage:] will customise all UITabBar instances in your app.

    If you want to customize just one UITTabBar, you can do this:

    [self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]];
    
    0 讨论(0)
  • 2020-12-02 09:47

    In your view controller or view controllers or BasicViewController that most of the viewcontrollers inherit in the viewDidLoad just put these 2 lines:

    [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tab_bar_background"]];
    [[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparent_shadow"]];
    

    Be sure transparent_shadow@2x.png is an image 1x1 or 2x2 transparent and the tab_bar_background@2x.png is an image 640x100 as the bottom bar is 50px in height.

    Works on iOS 9.3

    0 讨论(0)
  • 2020-12-02 09:49

    Here's another easy to implement answer:

    [self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
    

    Worked for me.

    0 讨论(0)
  • 2020-12-02 09:51

    Similary in answer for this question ... if You don't want to mess with any kind of 1x1 transparent image, this work's too:

    [[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]]; 
    [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
    

    In swift:

    UITabBar.appearance().shadowImage = UIImage()
    UITabBar.appearance().backgroundImage = UIImage()
    
    0 讨论(0)
  • 2020-12-02 09:53

    Try this, ** Objective-C **

    //Remove shadow image by assigning nil value.
    [[UITabBar appearance] setShadowImage: nil];
    
    // or 
    
    // Assing UIImage instance without image reference
    [[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];
    

    ** Swift **

    //Remove shadow image by assigning nil value.
    UITabBar.appearance().shadowImage = nil
    
    // or 
    
    // Assing UIImage instance without image reference
    UITabBar.appearance().shadowImage = UIImage()
    


    Here is apple guideline for shadowImage.

    @available(iOS 6.0, *)
    open var shadowImage: UIImage?
    

    Default is nil. When non-nil, a custom shadow image to show instead of the default shadow image. For a custom shadow to be shown, a custom background image must also be set with -setBackgroundImage: (if the default background image is used, the default shadow image will be used).

    0 讨论(0)
  • 2020-12-02 09:57

    Swift

    Try this for your custom tab bar. It will hide horizontal shadow line.

    self.tabBar.setValue(true, forKey: "_hidesShadow")
    

    Objective C

    [self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
    
    0 讨论(0)
提交回复
热议问题