删除 UITabBar 行不起作用
Remove UITabBar line not working
我想去掉 UITabBar 的分隔符。我已经为 UITabBar 设置了自定义背景图像。使用以下代码,分隔符位于 UITabBar 图像上方。
class myTabBarController: UITabBarController {
override func viewDidLoad() {
UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")
}
我添加了以下代码,但它不仅删除了线条,还删除了自定义图像。(阴影)
class myTabBarController: UITabBarController {
override func viewDidLoad() {
self.tabBar.clipsToBounds = true
self.tabBarController?.tabBar.autoresizesSubviews = false
UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")
}
添加这个
UITabBar.appearance().shadowImage = UIImage()
试试这个,
//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil
// or
// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()
这是 shadowImage 的苹果指南。
@available(iOS 6.0, *)
open var shadowImage: UIImage?
Default is nil. When non-nil, a custom shadow image to show instead of
the default shadow image. For a custom shadow to be shown, a custom
background image must also be set with -setBackgroundImage: (if the
default background image is used, the default shadow image will be
used).
这看起来确实像一个错误。在 iOS 10 之前,它工作正常:设置一个 .backgroundImage
然后设置 UITabBar.appearance().shadowImage = nil
(或空图像或透明图像)。
iOS10,但是...
如果 你的背景图片比标签栏高,"shadow image" 会放在背景的顶部图片;高 0.5 磅,将 可见。
如果您的背景图片 不 高于标签栏,"shadow image" 将不再可见。
并且...如果您通过 Debug Hierarchy 比较 iOS 9 和 10 之间的结构,您可以看到 "shadow image" 是不同视图的子视图。
所以...您可以 摆脱它,但需要注意...
一个。使用比标签栏短的背景图片。
乙。剪到边界(但是你会丢失背景图像的顶部)。
摄氏度。使用完全透明的背景...将 .backgroundImage
和 .shadowImage
都设置为 nil 或 UIImage()
。当然,那你就得想办法把你想要的图片作为标签栏的背景来显示。
或者……但不推荐……
D.在 viewDidAppear
上,遍历 tabBar 子视图,找到 "shadow image" 并将其隐藏。这会起作用 - 但如果/当 Apple 更改选项卡栏的结构时它可能会失败(而且,我想,技术上是 "non-documented",所以......):
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 }
}
}
这对我有用
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tabBar.shadowImage = nil
var isFound = false
for allViews in tabBar.subviews {
for backgroundViews in allViews.subviews {
if(backgroundViews is UIImageView)
{
let imageView = backgroundViews as! UIImageView
if imageView.image == nil {
// found it
isFound = true
imageView.isHidden = true
break
}
}
}
if isFound { break }
}
}
我通过将背景图片高度调整为 49pt 解决了类似的问题。
我想去掉 UITabBar 的分隔符。我已经为 UITabBar 设置了自定义背景图像。使用以下代码,分隔符位于 UITabBar 图像上方。
class myTabBarController: UITabBarController {
override func viewDidLoad() {
UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")
}
我添加了以下代码,但它不仅删除了线条,还删除了自定义图像。(阴影)
class myTabBarController: UITabBarController {
override func viewDidLoad() {
self.tabBar.clipsToBounds = true
self.tabBarController?.tabBar.autoresizesSubviews = false
UITabBar.appearance().backgroundImage = UIImage(named: "secretTab.png")
}
添加这个
UITabBar.appearance().shadowImage = UIImage()
试试这个,
//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil
// or
// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()
这是 shadowImage 的苹果指南。
@available(iOS 6.0, *)
open var shadowImage: UIImage?
Default is nil. When non-nil, a custom shadow image to show instead of the default shadow image. For a custom shadow to be shown, a custom background image must also be set with -setBackgroundImage: (if the default background image is used, the default shadow image will be used).
这看起来确实像一个错误。在 iOS 10 之前,它工作正常:设置一个 .backgroundImage
然后设置 UITabBar.appearance().shadowImage = nil
(或空图像或透明图像)。
iOS10,但是...
如果 你的背景图片比标签栏高,"shadow image" 会放在背景的顶部图片;高 0.5 磅,将 可见。
如果您的背景图片 不 高于标签栏,"shadow image" 将不再可见。
并且...如果您通过 Debug Hierarchy 比较 iOS 9 和 10 之间的结构,您可以看到 "shadow image" 是不同视图的子视图。
所以...您可以 摆脱它,但需要注意...
一个。使用比标签栏短的背景图片。
乙。剪到边界(但是你会丢失背景图像的顶部)。
摄氏度。使用完全透明的背景...将 .backgroundImage
和 .shadowImage
都设置为 nil 或 UIImage()
。当然,那你就得想办法把你想要的图片作为标签栏的背景来显示。
或者……但不推荐……
D.在 viewDidAppear
上,遍历 tabBar 子视图,找到 "shadow image" 并将其隐藏。这会起作用 - 但如果/当 Apple 更改选项卡栏的结构时它可能会失败(而且,我想,技术上是 "non-documented",所以......):
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 }
}
}
这对我有用
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tabBar.shadowImage = nil
var isFound = false
for allViews in tabBar.subviews {
for backgroundViews in allViews.subviews {
if(backgroundViews is UIImageView)
{
let imageView = backgroundViews as! UIImageView
if imageView.image == nil {
// found it
isFound = true
imageView.isHidden = true
break
}
}
}
if isFound { break }
}
}
我通过将背景图片高度调整为 49pt 解决了类似的问题。