对于 Swift 4
你可以通过扩展 UIViewController 轻松使用它
扩展 UIViewController {
func setupRemainingNavItems() {
self.navigationController?.setNavigationBarHidden(false, animated: true)
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
let titleImageView = UIImageView(image: #imageLiteral(resourceName: "your-icon"))
titleImageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
titleImageView.contentMode = .scaleAspectFit
titleImageView.clipsToBounds = true
navigationItem.titleView = titleImageView
let button = UIButton(type: .custom)
button.setImage(UIImage (named: "Group 6"), for: .normal)
button.frame = CGRect(x: 0.0, y: 0.0, width: 30.0, height: 30.0)
button.addTarget(self, action: #selector(tapbutton), for: .touchUpInside)
let barButtonItem = UIBarButtonItem(customView: button)
self.navigationItem.leftBarButtonItem = barButtonItem
}
@objc func tapbutton(){
self.navigationController?.popViewController(animated: true)
print("tap")
}
}
用途:
在 ViewDidLoad() 中调用它
setupRemainingNavItems()
更新了 Swift 5 的代码
首先全局声明一些变量,
let window = UIApplication.shared.keyWindow
let topPadding = window?.safeAreaInsets.top
let bottomPadding = window?.safeAreaInsets.bottom
let guide = window?.safeAreaLayoutGuide
let height = guide?.layoutFrame.size.height
let safeAreaWidth = guide?.layoutFrame.size.width
let width = UIScreen.main.bounds.width/4
let parentView = UIView(frame: CGRect(x: 0 , y:( UIScreen.main.bounds.height - 65) - bottomPadding! , width: safeAreaWidth!, height: 65))
let blurparentView = UIView(frame: CGRect(x: 0, y: 0, width: safeAreaWidth!, height: 60))
let backImage = UIImageView(frame: CGRect(x: 7.5 , y: 20, width: 20, height: 20))
let cartImage = UIImageView(frame: CGRect(x: 6.5 , y: 16.5, width: 25, height: 27))
let cartLabel = UILabel(frame: CGRect(x: 14, y: -4, width: 14, height: 14))
let lblWidth = UIScreen.main.bounds.width/2
extension UIViewController {
func navigationBarDesign() {
let parentView = UIView(frame: CGRect(x: 0, y: topPadding!, width: safeAreaWidth!, height: 60))
parentView.backgroundColor = hexStringToUIColor(hex: Colors.appColor)
let back = UIView(frame: CGRect(x: 10, y: 0, width: 40, height: 60))
let title = UIView(frame: CGRect(x: lblWidth - lblWidth/2, y: 0, width: lblWidth, height: 60))
let cart = UIView(frame: CGRect(x: UIScreen.main.bounds.width - 50, y: 0, width: 40, height: 60))
blurparentView.backgroundColor = hexStringToUIColor(hex: Colors.blackColor)
backImage.image = #imageLiteral(resourceName: "Your-Icon")
cartImage.image = #imageLiteral(resourceName: "Your-Icon")
let titlelabel = UILabel(frame: CGRect(x: 0, y: 0, width: lblWidth, height: 60))
titlelabel.font = UIFont(name: "Segoe UI", size: 20.0)
titlelabel.text = "Home"
titlelabel.textAlignment = .center
titlelabel.textColor = .black
let backButton = UIButton(frame: CGRect(x: 0, y: 0, width: width, height: 50))
let cartButton = UIButton(frame: CGRect(x: 0, y: 0, width: width, height: 50))
cartLabel.textAlignment = .center
cartLabel.textColor = .white
cartLabel.font = UIFont.boldSystemFont(ofSize: 8.0)
cartLabel.setViewRounded()
cartLabel.backgroundColor = hexStringToUIColor(hex: Colors.yellowColor)
cartLabel.isHidden = false
backButton.addTarget(self, action: #selector(clickBack), for: .touchUpInside)
// cartButton.addTarget(self, action: #selector(clickCart), for: .touchUpInside)
back.addSubview(backImage)
back.addSubview(backButton)
title.addSubview(titlelabel)
cart.addSubview(cartImage)
cart.addSubview(cartButton)
cartImage.addSubview(cartLabel)
parentView.addSubview(back)
parentView.addSubview(title)
parentView.addSubview(cart)
parentView.addSubview(blurparentView)
blurparentView.isHidden = true
view.addSubview(parentView)
}
@objc func clickBack(){
parentView.isHidden = false
navigationController?.popViewController(animated: false)
}
}
用途:
在 ViewDidLoad() 中调用它
导航栏设计()