// 首先设置navigationBar 的具体背景样式
override func viewWillAppear (_ animated: Bool) {
super.viewWillAppear(animated)
let dic: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.white, .font: UIFont.systemFont(ofSize: 18) as Any]
if #available(iOS 15, *) {
let appearance = UINavigationBarAppearance()
appearance.titleTextAttributes = dic
appearance.configureWithTransparentBackground()
appearance.backgroundColor = .clear
appearance.backgroundEffect = UIBlurEffect(style: .dark)
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
} else {
navigationController?.navigationBar.titleTextAttributes = dic
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
}
}
// 其次设置navigationBar 是否透明
override func viewDidLoad() {
super.viewDidLoad()
extendedLayoutIncludesOpaqueBars = true //非常关键
// Do any additional setup after loading the view.
}
// 最后需要设置布局起始点位置 ,如果非tableview, collectionview 则设置属性:
override func viewDidLoad() {
super.viewDidLoad()
self.edgesForExtendedLayout = .bottom
// Do any additional setup after loading the view.
}
// 如果是tableview,collectionview布局,则需要设置属性:
lazy var tableView: UITableView = {
let tableview = UITableView(frame: .zero, style: .plain)
tableview.dataSource = self
tableview.delegate = self
tableview.separatorStyle = .none
tableview.contentInsetAdjustmentBehavior = .always // 非常关键
tableview.backgroundColor = UIColor.clear
tableview.showsVerticalScrollIndicator = false
return tableview
}()