微信導覽列
WXNavigationBar
可透過 CocoaPods 取得。要安裝它,只需將以下行新增至您的 Podfile 中:
use_frameworks !
pod ' WXNavigationBar ' , ' ~> 2.3.6 '
Carthage 是一個去中心化的依賴管理器,它可以建立您的依賴項並為您提供二進位框架。若要使用 Carthage 將 WXNavigationBar 整合到您的 Xcode 專案中,請在您的 Cartfile 中指定它:
github alexiscn/WXNavigationBar
Swift Package Manager 是一個用於自動分發 Swift 程式碼的工具,並整合到 swift 編譯器中。它處於早期開發階段,但 WXNavigationBar 確實支援在受支援的平台上使用它。
設定好 Swift 套件後,將 WXNavigationBar 新增為依賴項就像將其新增至 Package.swift 的依賴項值一樣簡單。
dependencies: [
.package(url: "https://github.com/alexiscn/WXNavigationBar.git", .upToNextMajor(from: "2.3.6"))
]
WXNavigation
使實際的 UINavigationBar 透明,並將視圖作為假導覽列新增至視圖控制器。
實際的導覽列仍然處理觸控事件,假導覽列則處理顯示人員,例如:backgroundColor、backgroundImage。
所以你像往常一樣使用導覽列。當你想處理顯示的事情時,你使用WXNavigationBar
在你的AppDelegate.swift
中
import WXNavigationBar
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
// ...
WXNavigationBar . setup ( )
}
如果需要,您可以自訂WXNavigationBar
。有兩種方法可以配置 WXNavigationBar:透過WXNavigationBar.NavBar
或透過UIViewController
屬性。
使用WXNavigationBar.NavBar
配置WXNavigationBar
將會影響所有的viewcontroller。
在你的AppDelegate.swift
中
import WXNavigationBar
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
// ...
// Customize WXNavigationBar if needed (Optional)
// WXNavigationBar.NavBar.backImage = UIImage(named: "xxx")
}
您可以配置以下選項:
/// Back Image for Navigation Bar
public static var backImage : UIImage ? = Utility . backImage
/// Use custom view to create back button.
/// Note: You do not need to add tap event to custom view. It's handled in WXNavigationBar.
public static var backButtonCustomView : UIView ? = nil
/// Background Image for NavigationBar
public static var backgroundImage : UIImage ? = nil
/// Background color for NavigationBar
public static var backgroundColor : UIColor = UIColor ( white : 237.0 / 255 , alpha : 1.0 )
/// Tint Color for NavigationBar
public static var tintColor = UIColor ( white : 24.0 / 255 , alpha : 1.0 )
/// Shadow Image for NavigationBar
public static var shadowImage : UIImage ? = UIImage ( )
/// Enable fullscreen pop gesture
public static var fullscreenPopGestureEnabled = false
您也可以透過覆寫WXNavigationBar
支援的屬性來配置特定的視圖控制器。
您可以配置導覽列的背景顏色。
/// Background color of fake NavigationBar
/// Default color is UIColor(white: 237.0/255, alpha: 1.0)
override var wx_navigationBarBackgroundColor : UIColor ? {
return . white
}
您可以使用影像配置導覽列背景。
override var wx_navigationBarBackgroundImage : UIImage ? {
return UIImage ( named : " icons_navigation_bar " )
}
如果你想使用類似系統的模糊導覽列:
override var wx_useSystemBlurNavBar : Bool {
return true
}
透過設定wx_barBarTintColor
,您實際上設定了navigationController?.navigationBar
的barTintColor
override var wx_barBarTintColor : UIColor ? {
return . red
}
透過設定wx_baTintColor
,您實際上設定了navigationController?.navigationBar
的tintColor
override var wx_barTintColor : UIColor ? {
return . black
}
您可以為特定視圖控制器指定導覽列陰影影像(例如:純色線或漸層色線):
override var wx_shadowImage : UIImage ? {
return UIImage ( named : " icons_navigation_bar_shadow_line " )
}
您可以從顏色建立陰影影像,該屬性將覆蓋wx_shadowImage
override var wx_shadowImageTintColor : UIColor ? {
return . red
}
您可以為特定視圖控制器指定導覽列背面影像:
override var wx_backImage : UIImage ? {
return UIImage ( named : " icons_view_controller_back_image " )
}
您可以使用自訂視圖指定後退按鈕:
override var wx_backButtonCustomView : UIView ? {
let label = UILabel ( )
label . text = " back "
label . textAlignment = . center
return label
}
override var wx_disableInteractivePopGesture : Bool {
return true
}
override var wx_fullScreenInteractivePopEnabled : Bool {
return false
}
override wx_interactivePopMaxAllowedDistanceToLeftEdge : CGFloat {
return view . bounds . width * 0.5
}
以下是WXNavigationBar
的一些進階使用建議。
有多種方法可以使導覽列透明。
wx_navigationBar . alpha = 0
wx_navigationBar . isHidden = true
override var wx_navigationBarBackgroundColor : UIColor ? {
return . clear
}
alpha和hidden讓wx_navigationBar不可見,而backgroundColor只是改變wx_navigationBar的顏色
您可以動態更新導覽列,例如捲動時動態更新。
有關詳細信息,請參閱MomentViewController
。
wx_navigationBar
是UIView的子類,所以你可以用wx_navigationBar
做任何UIView能做的事情。
如果你想在使用者點擊後退按鈕時執行某些操作,你可以在視圖控制器中重寫wx_backButtonClicked
。例如,您可以在使用者點擊後退按鈕時顯示警報。
override func wx_backButtonClicked ( ) {
let alert = UIAlertController ( title : " Are you sure to exit " , message : nil , preferredStyle : . alert )
alert . addAction ( UIAlertAction ( title : " OK " , style : . default , handler : { [ weak self ] _ in
self ? . navigationController ? . popViewController ( animated : true )
} ) )
alert . addAction ( UIAlertAction ( title : " Cancel " , style : . cancel , handler : { _ in
} ) )
present ( alert , animated : true , completion : nil )
}
當動態新增子視圖控制器時, wx_navigationBar
可以被覆寫。因此,您有責任將wx_navigationBar
置於前面。
// addChild(controller) or addSubview
view . bringSubviewToFront ( wx_navigationBar )
WXNavigationBar 已獲得 MIT 許可。執照
你可以參考中文文檔