ios - 删除 UITabBar 行不起作用

标签 ios swift image uitabbar shadow

我想删除 UITabBar 的分隔符。我已经为 UITabBar 设置了自定义背景图像。使用以下代码,分隔符位于 UITabBar 图像上方。

class myTabBarController: UITabBarController {

    override func viewDidLoad() {
                UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")

}

enter image description here

我添加了以下代码,但它不仅删除了线条,还删除了自定义图像。(阴影)

    class myTabBarController: UITabBarController {

        override func viewDidLoad() {
            self.tabBar.clipsToBounds = true
            self.tabBarController?.tabBar.autoresizesSubviews = false
            UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")
}

enter image description here

最佳答案

这看起来确实像一个错误。在 iOS 10 之前,它工作得很好:设置 .backgroundImage,然后设置 UITabBar.appearance().shadowImage = nil (或空图像或透明图像)。

但是,对于 iOS 10...

如果您的背景图像比标签栏高,则“阴影图像”将放置在背景图像的顶部;高度为 0.5 点,并且它可见。

如果您的背景图像高于标签栏,则“阴影图像”将不再可见。

而且......如果您通过调试层次结构比较 iOS 9 和 10 之间的结构,您可以看到“阴影图像”是不同 View 的 subview 。

所以......你可以摆脱它,但有警告......

A.使用比标签栏短的背景图像。

B.剪辑到边界(但随后您会丢失背景图像的顶部)。

C.使用完全透明的背景...将 .backgroundImage.shadowImage 设置为 nil 或 UIImage()。当然,那么你需要找到一些其他方式来显示你想要的图像作为标签栏的背景。

或者...但不推荐...

D.在 viewDidAppear 上,单步执行 tabBar subview ,找到“阴影图像”并将其隐藏。这会起作用 - 但如果/当苹果改变标签栏的结构时它可能会失败(而且,我想,技术上是“未记录的”,所以......):

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    var b = false
    for v in tabBar.subviews {
        for sv in v.subviews {
            if sv.frame.size.height == 0.5 && sv is UIImageView {
                // found it
                b = true
                sv.isHidden = true
                break
            }
        }
        if b { break }
    }

}

关于ios - 删除 UITabBar 行不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865103/

相关文章:

javascript - 使用按钮刷新任意图像

image - 灰度图像和二值图像有什么区别吗?

ios - 如何为导航 Controller 始终可用的 iOS 创建隐藏的滑动菜单 View

ios - 在 GraphQL 中编辑类时的正确工作流程

ios - 单击键盘上的 "Done"可关闭键盘,但不会被关闭

ios - 谁能告诉 API 添加灯泡 Philips Hue Bridges?

swift - 当 alpha 为 0 时,按钮不会触发操作

ios - 使用单个 SKShapeNode 渲染多个重叠的多边形?

swift - 如何在 Firebase 上将我的变量正确设置为一个值而不让它重置进度?

css - 是否有任何网络应用程序可以将小图像合并为一个图像?