XYNav
iOS 15
在 iOS 15 上,苹果改变了导航条的一些默认行为,开发者可以自己设置 UINavigationBar 的各个 Appearance 属性,以确保在各种情况下 UINavigationBar 的正常显示。
/// 控制 bar 在标准高度上的外观
@available(iOS 13.0, *)
@NSCopying open var standardAppearance: UINavigationBarAppearance
/// 控制 bar 在紧凑布局上的外观,如未设置就用 standardAppearance
@available(iOS 13.0, *)
@NSCopying open var compactAppearance: UINavigationBarAppearance?
/// 控制 bar 在其关联的 scrollView 滑动到bar顶部的时刻的外观,未设置使用 standardAppearance
@available(iOS 13.0, *)
@NSCopying open var scrollEdgeAppearance: UINavigationBarAppearance?
/// 控制 bar 在紧凑布局上,其关联的 scrollView 滑动到bar顶部的时刻的外观。如未设置依次尝试 scrollEdgeAppearance、compactAppearance、standardAppearance
@available(iOS 15.0, *)
@NSCopying open var compactScrollEdgeAppearance: UINavigationBarAppearance?
XYNav 默认将导航条背景颜色设置为属性 barTintColor
。设置 barTintColor
后,导航条颜色将固定,并且相关的 ScrollView 滑动不会受到影响。
快速设置统一的全局样式
iOS App 开发中通常需要设置一个导航栏主基调,如 导航栏标题字体属性、颜色、大小
,navBar.tintColor
,navBar.barTintColor
等。XYNav 支持使用 UIAppearance 的方式统一设置。
重点在于重写了 UINavigationBar.appearance().barTintColor = .cyan
的实现,实现了一次设置,所有子页面的默认样式为统一的导航条背景颜色,具体页面也可以再次自定义需要的效果。
浅色/深色模式
XYNav 自动适配浅色/深色模式,无需您关心。
iPhone X
矩形屏和刘海屏自动适配,无需关注
XYNav 是一个简单易用的导航控制器。
目标
让开发过程更专注业务,让导航使用更加简单透明。
核心功能
- 让导航栈每个页面独立拥有自己的导航栏,单页面导航栏可完全自定义。
- 全屏侧滑返回手势。单页面可独立控制是否支持侧滑返回、侧滑响应范围
- 完全使用 UINavigationController 的 API,使用无缝切换
- 提供增强版自定义 API,让使用更简单
示例
示例
要运行示例工程,请先克隆仓库,然后从示例目录运行 pod install
。
零成本接入
与使用系统导航栏一样无缝切换。使用 XYNav
你仅需做一件事
// 纯代码创建 - 直接替换 UINavigationController 即可
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
// 直接 XYNavigationController 创建并设置为 rootVC 即可
let vc = ViewController()
let nav = XYNavigationController(rootViewController: vc)
window?.rootViewController = nav
return true
}
如果使用 StoryBoard 创建,只需要将 StoryBoard 中的导航控制器指定 Class 为 XYNavigationController 即可,如图
特性 (UINavigationController API 完全支持)
- 支持每个 VC 自定义的
navigationBarClass
- 支持 Unwind
- 支持屏幕旋转
- 支持禁用侧滑返回手势
- 支持设置侧滑返回手势响应范围
- 支持通过
Interface Builder / StoryBoard
初始化的方式 - 支持统一的 UIAppearance 统一设置导航栏样式
- 支持亮、暗模式自动切换
- 支持系统导航栏透明效果
要求
- Swift 5.0
- iOS 9.0
安装
XYNav 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'XYNav'
作者
xiaoyouPrince, [email protected]
许可协议
XYNav 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。