Barra de navegação WeChat
WXNavigationBar
está disponível através do CocoaPods. Para instalá-lo, basta adicionar a seguinte linha ao seu Podfile:
use_frameworks !
pod ' WXNavigationBar ' , ' ~> 2.3.6 '
Carthage é um gerenciador de dependências descentralizado que constrói suas dependências e fornece estruturas binárias. Para integrar WXNavigationBar em seu projeto Xcode usando Carthage, especifique-o em seu Cartfile:
github alexiscn/WXNavigationBar
O Swift Package Manager é uma ferramenta para automatizar a distribuição de código Swift e está integrado ao compilador Swift. Está em desenvolvimento inicial, mas WXNavigationBar suporta seu uso em plataformas suportadas.
Depois de configurar seu pacote Swift, adicionar WXNavigationBar como uma dependência é tão fácil quanto adicioná-lo ao valor de dependências de seu Package.swift.
dependencies: [
.package(url: "https://github.com/alexiscn/WXNavigationBar.git", .upToNextMajor(from: "2.3.6"))
]
WXNavigation
torna o UINavigationBar real transparente e adiciona uma visualização como uma barra de navegação falsa ao controlador de visualização.
A barra de navegação real ainda lida com os eventos de toque, a barra de navegação falsa faz as equipes de exibição, por exemplo: backgroundColor, backgroundImage.
Então você usa a barra de navegação normalmente. quando você quiser lidar com as coisas de exibição, você usa WXNavigationBar
Em seu AppDelegate.swift
import WXNavigationBar
func application ( _ application : UIApplication , didFinishLaunchingWithOptions launchOptions : [ UIApplication . LaunchOptionsKey : Any ] ? ) -> Bool {
// ...
WXNavigationBar . setup ( )
}
Você pode personalizar WXNavigationBar
se necessário. Existem duas maneiras de configurar WXNavigationBar: via WXNavigationBar.NavBar
ou via propriedades UIViewController
.
Usar WXNavigationBar.NavBar
para configurar WXNavigationBar
afetará todos os viewcontrollers.
Em seu 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")
}
Você pode configurar as seguintes opções:
/// 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
Você também pode configurar um controlador de visualização específico substituindo as propriedades suportadas WXNavigationBar
.
Você pode configurar a cor de fundo da barra de navegação.
/// Background color of fake NavigationBar
/// Default color is UIColor(white: 237.0/255, alpha: 1.0)
override var wx_navigationBarBackgroundColor : UIColor ? {
return . white
}
Você pode configurar o fundo da barra de navegação usando a imagem.
override var wx_navigationBarBackgroundImage : UIImage ? {
return UIImage ( named : " icons_navigation_bar " )
}
Se você quiser usar a barra de navegação desfocada do sistema:
override var wx_useSystemBlurNavBar : Bool {
return true
}
Ao definir wx_barBarTintColor
, você realmente define barTintColor
de navigationController?.navigationBar
override var wx_barBarTintColor : UIColor ? {
return . red
}
Ao definir wx_baTintColor
, você realmente define tintColor
de navigationController?.navigationBar
override var wx_barTintColor : UIColor ? {
return . black
}
Você pode especificar a imagem sombreada da barra de navegação para um controlador de visualização específico (por exemplo: linha de cor sólida ou linha de cor gradiente):
override var wx_shadowImage : UIImage ? {
return UIImage ( named : " icons_navigation_bar_shadow_line " )
}
Você pode criar uma imagem de sombra a partir de cores, esta propriedade substituirá wx_shadowImage
override var wx_shadowImageTintColor : UIColor ? {
return . red
}
Você pode especificar a imagem traseira da barra de navegação para um controlador de visualização específico:
override var wx_backImage : UIImage ? {
return UIImage ( named : " icons_view_controller_back_image " )
}
Você pode especificar o botão Voltar com visualização personalizada:
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
}
Aqui estão algumas sugestões avançadas de uso para WXNavigationBar
.
Existem várias maneiras de tornar a barra de navegação transparente.
wx_navigationBar . alpha = 0
wx_navigationBar . isHidden = true
override var wx_navigationBarBackgroundColor : UIColor ? {
return . clear
}
alfa e oculto tornam wx_navigationBar invisível, enquanto backgroundColor apenas altera a cor de wx_navigationBar
Você pode atualizar dinamicamente a barra de navegação, como atualizar dinamicamente durante a rolagem.
Consulte MomentViewController
para obter detalhes.
wx_navigationBar
é uma subclasse de UIView, então você pode fazer qualquer coisa com wx_navigationBar
que possa ser feito com UIView.
Se quiser fazer algo quando o usuário tocar no botão Voltar, você pode substituir wx_backButtonClicked
em seu controlador de visualização. Por exemplo, você pode apresentar um alerta quando o usuário toca no botão Voltar.
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
pode ser sobreposto quando você adiciona dinamicamente o controlador de visualização filho. Portanto, é sua responsabilidade trazer wx_navigationBar
para a frente.
// addChild(controller) or addSubview
view . bringSubviewToFront ( wx_navigationBar )
WXNavigationBar é licenciado pelo MIT. LICENÇA
你可以参考中文文档