我需要导航栏变得透明。这是我在ViewController
中输入的内容:
class ViewController: UIViewController {
@IBOutlet weak var navbar: UINavigationBar!
override func viewDidLoad() {
super.viewDidLoad()
navbar.isTranslucent=true
navbar.shadowImage = UIImage()
navbar.backgroundColor = UIColor.clear
}
根据调试视图层次结构UIVisualEffectBackdropView
,UIVisualEffectSubview
和UIVisualEffectSubview
(是两个),阻止了它变得透明。
ps:我没有使用导航控制器。
我该如何解决?
答案 0 :(得分:5)
如果使用最新的Beta iOS 13.4和XCode 11.4进行构建,则xmhafiz答案将不再起作用。 我发现了另一种方式,也许只是beta版软件中的一个错误,但我还是在这里写下来,以防万一
import UIKit
class TransparentNavBar :UINavigationBar {
override func awakeFromNib() {
super.awakeFromNib()
self.setBackgroundImage(UIImage(), for: .default)
self.shadowImage = UIImage()
self.isTranslucent = true
self.backgroundColor = .clear
if #available(iOS 13.0, *) {
self.standardAppearance.backgroundColor = .clear
self.standardAppearance.backgroundEffect = .none
self.standardAppearance.shadowColor = .clear
}
}
}
答案 1 :(得分:1)
这三行应该足以使您的UINavigationBar
透明。
override func viewDidLoad() {
super.viewDidLoad()
// make transparent the navbar
navbar.setBackgroundImage(UIImage(), for: .default)
navbar.shadowImage = UIImage()
navbar.isTranslucent = true
}