问题
On iOS 10 this code doesn't work in order to remove the tabBar shadow line:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Somebody knows, what must I do to remove it?
On iOS 9.3
with this two lines the line is removed, but iOS 10
ignores setShadowImage
command.
回答1:
removes the topline for @iOS 13.0
let appearance = tabBar.standardAppearance
appearance.shadowImage = nil
appearance.shadowColor = nil
tabBar.standardAppearance = appearance;
removes the topline for iOS 12.0 and earlier
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
回答2:
Just try to bellow code for iOS 10 :-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"fondoTabBar"]];
[UITabBar appearance].layer.borderWidth = 0.0f;
[UITabBar appearance].clipsToBounds = true;
return YES;
}
Swift 3.x
UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
回答3:
For iOS 13
if (@available(iOS 13.0, *)) {
UITabBarAppearance *appearance = [self.tabBarController.tabBar.standardAppearance copy];
appearance.shadowImage = nil;
appearance.shadowColor = nil;
self.tabBarController.tabBar.standardAppearance = appearance;
}
回答4:
Tested on iOS 12.1
override func viewDidLoad() {
// Remove default border line
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
tabBar.backgroundColor = UIColor.white
}
回答5:
For iOS 10 changed tabbar style to black did the trick
self.tabBarController.tabBar.shadowImage = UIImage()
self.tabBarController.tabBar.barStyle = .Black
回答6:
I had the same problem in ios 10. I fixed this issue just changing the height of UITabBar (by default is 49). Check it here how to change the height.
回答7:
You should implement the following two methods at the same time:
[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];
回答8:
It's a shadow image (property) of tabbar. Try following solutions and see.
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).
回答9:
I don't have the reputation to comment but to add to gnoix's answer, I had a slightly different problem in that I wanted the shadow and the background clear so I had in Swift
if #available(iOS 13.0, *) {
let appearance = tabBar.standardAppearance.copy()
appearance.configureWithTransparentBackground()
tabBar.standardAppearance = appearance
} else {
tabBar.backgroundColor = UIColor.clear
let image = UIImage(ciImage: CIImage(color: CIColor.clear)).af_imageAspectScaled(toFit: tabBar.bounds.size)
tabBar.backgroundImage = image
tabBar.shadowImage = image
}
回答10:
This works for me @iso13:
AppDelegate.swift
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().shadowImage = nil
or
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderWidth = 0
or
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderColor = UIColor.clear.cgColor
回答11:
You can do it this way in your FirstViewController.swift:
Swift 4.2
self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clear.cgColor
self.tabBarController?.tabBar.clipsToBounds = true
Just change border color as you want.
回答12:
If you create your own subclass of UITabBarController, you can set the values in viewDidLoad like this
Swift 3
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.layer.borderWidth = 0
self.tabBar.clipsToBounds = true
}
来源:https://stackoverflow.com/questions/39850794/remove-top-line-from-tabbar