在 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 水平分隔符的主要内容,如果未能解决你的问题,请参考以下文章
尽量不要在viewWillDisappear:方法中移除通知