EachNavigationBar為每個(gè)視圖控制器自定義導(dǎo)航條
EachNavigationBar:每個(gè)視圖控制器的自定義導(dǎo)航條。
示例
要運(yùn)行示例項(xiàng)目,首先克隆 repo 并在 Example 目錄運(yùn)行 pod install。
版本要求
- iOS 9.0
- Swift 4.2
安裝
EachNavigationBar 可通過 CocoaPods 或者 Carthage 安裝, 簡單的添加下面一行到你的 Podfile 或者 Cartfile:
Podfile
pod 'EachNavigationBar'
Cartfile
github "Pircate/EachNavigationBar"
用法
導(dǎo)入
Swift
import EachNavigationBar
開啟
給當(dāng)前導(dǎo)航棧的 viewControllers 添加一個(gè)獨(dú)立的導(dǎo)航欄。
只對當(dāng)前導(dǎo)航棧有效,不影響其他導(dǎo)航棧。
let nav = UINavigationController(rootViewController: vc) nav.navigation.configuration.isEnabled = true
設(shè)置
導(dǎo)航棧全局配置
不要通過 navigationController.navigationBar 去設(shè)置全局屬性!!!
更多配置請看這里
nav.navigation.configuration.titleTextAttributes = [.foregroundColor: UIColor.blue] nav.navigation.configuration.barTintColor = UIColor.red nav.navigation.configuration.shadowImage = UIImage(named: "shadow") nav.navigation.configuration.setBackgroundImage(UIImage(named: "nav"), for: .any, barMetrics: .default) nav.navigation.configuration.backItem = UINavigationController.Configuration.BackItem(style: .title("返回")) nav.navigation.configuration.prefersLargeTitles = true nav.navigation.configuration.largeTitle.displayMode = .always
每個(gè)控制器設(shè)置
普通設(shè)置
// 一般用法同系統(tǒng)組件 navigation.bar -> EachNavigationBar -> UINavigationBar navigation.item -> UINavigationItem // 隱藏導(dǎo)航欄 navigation.bar.isHidden = true // 設(shè)置導(dǎo)航欄透明度 navigation.bar.alpha = 0.5 // 設(shè)置標(biāo)題透明度 navigation.bar.setTitleAlpha(0.5) // 設(shè)置 barButtonItem 透明度 navigation.bar.setTintAlpha(0.5) // 如果 barButtonItem 是自定義視圖 navigation.item.leftBarButtonItem?.customView?.alpha = 0.5 // 如果 barButtonItem 自定義了 tintColor navigation.item.leftBarButtonItem?.tintColor = navigation.item.leftBarButtonItem?.tintColor?.withAlphaComponent(0.5) // 移除毛玻璃效果 navigation.bar.isTranslucent = false // 隱藏底部陰影 navigation.bar.isShadowHidden = true // 設(shè)置狀態(tài)欄樣式 navigation.bar.statusBarStyle = .lightContent // 設(shè)置返回按鈕 navigation.bar.backBarButtonItem = .init(style: .title("Back"), tintColor: .red) // 允許返回事件 navigation.bar.backBarButtonItem.shouldBack = { item in // do something return false } // 返回事件之前回調(diào) navigation.bar.backBarButtonItem.willBack = { // do something } // 返回事件之后回調(diào) navigation.bar.backBarButtonItem.didBack = { // do something } // 如果想自定義導(dǎo)航欄位置,請將下面屬性設(shè)為 false navigation.bar.automaticallyAdjustsPosition = false // 導(dǎo)航欄附加高度 navigation.bar.additionalHeight = 14 // 導(dǎo)航欄附加視圖 navigation.bar.additionalView = UIView() // 導(dǎo)航欄陰影 navigation.bar.shadow = Shadow( color: UIColor.black.cgColor, opacity: 0.5, offset: CGSize(width: 0, height: 3))
大標(biāo)題設(shè)置(iOS 11.0+)
// 開啟大標(biāo)題 navigation.bar.prefersLargeTitles = true // 顯示模式 navigation.item.largeTitleDisplayMode = .always // 設(shè)置大標(biāo)題透明度 navigation.bar.setLargeTitleAlpha(0.5)
關(guān)于約束
和使用系統(tǒng)導(dǎo)航欄完全一致。
評論
圖片
表情
