在iOS7中去除UITabBar的水平分隔线

3
我想要移除UITabBar和屏幕其余部分之间的水平分隔线。我提出了与这位网友相同的问题,但是更新到了iOS7。
设置UITabBar的背景图并不能解决这个问题,也不能通过设置[UITabBar appearance]对象的背景图来解决。
在iOS7中是否仍然有可能实现这一点?如果是,应该怎么做?

可能是 iOS 7 tabBar-line, how to remove it? 的重复问题。 - QED
3个回答

5
您可以使用以下代码隐藏阴影线:
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];

Swift

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

这是否使用了私有API?这会成为App Store拒绝的理由吗? - abc123
^ 是的,它是一个私有的、未记录的API,使用它违反了苹果的条款。 - Charles Kenney

3
这个解决方案使用了透明图片,因此更为可取。 Swift
tabBar.shadowImage = UIImage()

Objective-C

tabBar.shadowImage = UIImage.new; 

1
当然,在Swift中,这是:tabBar.shadowImage = UIImage(); - cleverbit

2
这个问题的答案与删除导航栏或工具栏的分隔符基本相同。
官方上,只能通过将shadowImage设置为空图像来实现。然而,如果仔细查看文档,我们会发现:

要显示自定义阴影图像,必须使用backgroundImage属性设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像。

通过使用自定义背景图像,您将失去模糊的背景透明度。
分隔符是tab bar的子视图UIImageView。您可以在tab bar的层次结构中找到它并将其设置为隐藏。

谢谢您的解释 :) - KarenAnne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接