Swift 导航栏将不透明
我需要导航栏变得透明。以下是我在我的Swift 导航栏将不透明,swift,uikit,uinavigationbar,Swift,Uikit,Uinavigationbar,我需要导航栏变得透明。以下是我在我的ViewController中输入的内容: class ViewController: UIViewController { @IBOutlet weak var navbar: UINavigationBar! override func viewDidLoad() { super.viewDidLoad() navbar.isTranslucent=true navbar.shadowImage = UIImage()
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:我没有使用导航控制器
如何修复它?这三行应该足以使您的
UINavigationBar
透明
override func viewDidLoad() {
super.viewDidLoad()
// make transparent the navbar
navbar.setBackgroundImage(UIImage(), for: .default)
navbar.shadowImage = UIImage()
navbar.isTranslucent = true
}
如果您使用最新的测试版iOS 13.4和XCode 11.4进行构建,那么xmhafiz答案将不再有效。 我找到了另一种方法,也许只是测试版软件中的一个bug,但我正在写下来,以防万一
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
}
}
}
我只是回来删除我想出来的答案-完全按照你的建议相同的方式。我会接受答案的。谢谢。对我有用。我用的是导航控制器,所以你的“导航栏”用的是“导航控制器?.navigationBar”