gpt4 book ai didi

ios - 删除 UITabBar 行不起作用

转载 作者:可可西里 更新时间:2023-11-01 01:16:58 25 4
gpt4 key购买 nike

我想删除 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 磅,可见。

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

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

所以...您可以摆脱它,但要注意...

一个。使用比标签栏短的背景图片。

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

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

或者……但不推荐……

D.在 viewDidAppear 上,遍历 tabBar subview ,找到“阴影图像”并将其隐藏。这会起作用 - 但如果/当 Apple 更改选项卡栏的结构时它可能会失败(而且,我想,在技术上是“未记录的”,所以......):

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com