Панель навигации WeChat
WXNavigationBar
доступен через CocoaPods. Чтобы установить его, просто добавьте следующую строку в свой подфайл:
use_frameworks !
pod ' WXNavigationBar ' , ' ~> 2.3.6 '
Carthage — это децентрализованный менеджер зависимостей, который создает ваши зависимости и предоставляет вам двоичные платформы. Чтобы интегрировать WXNavigationBar в ваш проект Xcode с помощью Carthage, укажите его в своем Cartfile:
github alexiscn/WXNavigationBar
Менеджер пакетов Swift — это инструмент для автоматизации распространения кода 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
повлияет на все контроллеры представления.
В вашем 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
, вы фактически устанавливаете barTintColor
для navigationController?.navigationBar
override var wx_barBarTintColor : UIColor ? {
return . red
}
Устанавливая wx_baTintColor
, вы фактически tintColor
для navigationController?.navigationBar
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
}
альфа и скрытый делают 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. ЛИЦЕНЗИЯ
你可以参考中文文档