在 iOS7 中移除 UITabBar 水平分隔符

Posted

技术标签:

【中文标题】在 iOS7 中移除 UITabBar 水平分隔符【英文标题】:Remove UITabBar horizontal separator in iOS7 【发布时间】:2014-04-17 23:36:17 【问题描述】:

我想删除 UITabBar 和屏幕其余部分之间的水平分隔线。我在问the same question as this guy,但已针对 ios7 进行了更新。

设置我的 UITabBar 的背景图片并不能缓解问题,设置[UITabBar appearance] 对象的背景图片也不能解决问题。

这在 iOS7 中仍然可能吗?如果有,怎么做?

【问题讨论】:

iOS 7 tabBar-line, how to remove it?的可能重复 【参考方案1】:

您也可以使用以下代码隐藏阴影线:

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

斯威夫特

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

【讨论】:

这是使用私有 API 吗?这会成为 App Store 拒绝的理由吗? ^ 是的,它是一个私有的、未记录的 API,它的使用违反了 Apple 的条款。【参考方案2】:

这个问题的答案与删除导航栏或工具栏的分隔符几乎相同。

官方来说,这只能通过将 shadowImage 设置为空图像来实现。然而,仔细观察documentation,我们看到:

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

通过使用自定义背景图片,您将失去模糊的背景半透明效果。

分隔符是一个 UIImageView,它是标签栏的子视图。您可以在标签栏的层次结构中找到它并将其设置为隐藏。

【讨论】:

感谢您的解释:)【参考方案3】:

此方案使用透明图像,因此更可取。

斯威夫特

tabBar.shadowImage = UIImage()

Objective-C

tabBar.shadowImage = UIImage.new; 

【讨论】:

当然在 Swift 中是:tabBar.shadowImage = UIImage();

以上是关于在 iOS7 中移除 UITabBar 水平分隔符的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中移除 UIToolbar 细线

尽量不要在viewWillDisappear:方法中移除通知

不要在viewWillDisappear:方法中移除通知

iOS7中的UITabBar徽章位置

UITabBar 在 iOS7 上更改一个 UITabBarItem 的背景颜色

UITabBar ios7 模糊无法在 iPad 3 上运行