在iOS 10上,此代码无法删除tabBar阴影线:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
有人知道,我该怎么做才能删除它?
使用这两行在iOS 9.3
上删除该行,但iOS 10
忽略setShadowImage
命令。
答案 0 :(得分:27)
试着低估 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
答案 1 :(得分:18)
只有2行删除了背线
<svg width="76" height="76">
<defs>
<mask id="myMask">
<rect fill="#fff" rx="15" ry="15" width="76" height="76"/>
</mask>
</defs>
<rect id="border" mask="url(#myMask)" fill="#000" x="0" y="0" width="76" height="76" />
<rect id="image" mask="url(#myMask)" fill="#fff" x="1" y="1" width="74" height="74" />
</svg>
答案 2 :(得分:8)
对于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;
}
答案 3 :(得分:4)
从iOS 13.3开始运行的解决方案
// remove top line
if #available(iOS 13.0, *) {
// ios 13.0 and above
let appearance = tabBar.standardAppearance
appearance.shadowImage = nil
appearance.shadowColor = nil
appearance.backgroundEffect = nil
// need to set background because it is black in standardAppearance
appearance.backgroundColor = .someColor
tabBar.standardAppearance = appearance
} else {
// below ios 13.0
let image = UIImage()
tabBar.shadowImage = image
tabBar.backgroundImage = image
// background
tabBar.backgroundColor = .someColor
}
答案 4 :(得分:1)
这对我有效@ iso13:
AppDelegate.swift
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().shadowImage = nil
或
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderWidth = 0
或
UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderColor = UIColor.clear.cgColor
答案 5 :(得分:0)
对于iOS 10,将tabbar样式更改为黑色就行了
self.tabBarController.tabBar.shadowImage = UIImage()
self.tabBarController.tabBar.barStyle = .Black
答案 6 :(得分:0)
我在ios 10中遇到了同样的问题。我修改了这个问题只是改变了UITabBar的高度(默认为49)。检查here如何更改高度。
答案 7 :(得分:0)
您应该同时实施以下两种方法:
[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];
答案 8 :(得分:0)
在iOS 12.1上测试
override func viewDidLoad() {
// Remove default border line
tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
tabBar.backgroundColor = UIColor.white
}
答案 9 :(得分:0)
我没有发表评论的声誉,但是要添加到gnoix的答案中,我有一个略有不同的问题,就是我希望阴影和清晰可见,因此我在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 :(得分:0)
您可以在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
只需更改边框颜色即可。
答案 11 :(得分:0)
对于我来说,带有tabBar外观的解决方案不起作用,因为在这种情况下它忽略了我的sed -r 's/([^\s]+?.*)=((.*(?=,$))+|.*).*/"$1":"$2",/g' *20200502*
。
最适合我的是tabBar.itemPositioning = .centered
。
别忘了设置tabBar.barStyle = .black
或您喜欢的其他任何颜色。
答案 12 :(得分:0)
如果您使用情节提要,那就是 在标签栏控制器上,选择“标签栏”
,然后添加一个运行时属性“ clipsToBounds” bool:
答案 13 :(得分:-1)
如果您创建自己的UITabBarController子类,则可以设置 像viewDidLoad这样的值
Swift 3
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.layer.borderWidth = 0
self.tabBar.clipsToBounds = true
}
答案 14 :(得分:-1)
这是tabbar的阴影图像(属性)。请尝试以下解决方案并查看。
试试这个, **目标-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()
以下是shadowImage的Apple指南。
@available(iOS 6.0, *)
open var shadowImage: UIImage?
默认为零。当非零时,显示自定义阴影图像而不是 默认阴影图像。要显示自定义阴影,请自定义 必须使用-setBackgroundImage设置背景图像:(如果是 使用默认背景图像,默认阴影图像将是 使用)。