SwiftUINavigator - 轻松在UIKit项目中使用SwiftUI视图的导航器





项目名称:SwiftUINavigator

项目简介

SwiftUINavigator是一个开源库,旨在解决在使用UIHostingController时遇到的难以预测和解决的bug。通过SwiftUINavigator,开发者可以在UIKit项目中轻松地使用SwiftUI视图,并实现视图之间的导航。

功能特点

  • 简单集成:通过.asViewController()方法,将SwiftUI视图包装成UIViewController。

  • 导航功能:提供pushpresentpop等导航方法,方便在SwiftUI视图间进行导航。

  • 属性配置:允许配置标题、背景颜色等UIViewController属性。

  • 视图桥接:支持在SwiftUI视图中使用UIKit的导航功能。

示例代码

以下是SwiftUINavigator的使用示例代码:

let viewController = HomeView() // View
    .asViewController() // WrapperViewController
    .title("HomeView") // UIViewController
    .backgroundColor(.gray) // UIViewController
    .hidesBottomBarWhenPushed(true) // UIViewController
weak var navigator: Navigator?
let controller = DestinationView().asViewController()
navigator.push(controller)
weak var navigator: Navigator?
let controller = DestinationView().asViewController()
navigator?.present(controller, .popover)
weak var navigator: Navigator?
navigator.pop(to: "HomeView")
weak var navigator: Navigator?
navigator.pop()
weak var navigator: Navigator?
navigator.dismiss()

项目示例

UIKit侧

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    guard let scene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: scene.coordinateSpace.bounds)
    window?.windowScene = scene
    
    let controller = RootView().asViewController()
    let navigationController = UINavigationController(rootViewController: controller)
    
    window?.rootViewController = navigationController
    window?.makeKeyAndVisible()
}

SwiftUI侧

struct RootView: Wrappable {
    
    weak var navigator: Navigator?
    
    var body: some View {
        Button("Button") {
            let controller = DestinationView().asViewController()
            navigator?.push(controller)
        }
    }
}

struct DestinationView: Wrappable {
    
    weak var navigator: Navigator?
    
    var body: some View {
        Button("Button") {
            navigator?.pop()
        }
    }
}

扩展

SwiftUINavigator作为一个开源项目,开发者可以在此基础上增加更多功能,比如支持更多的导航动画、集成更多的第三方库或者增加对新iOS版本的支持。此外,项目也可以作为学习SwiftUI和UIKit混合开发的实例,对于希望深入了解这些技术的开发人员来说,是一个很好的学习资源。

或许喜欢

SwiftUICoreImage:简化Core Image在SwiftUI中的使用

SwiftUICoreImage是一个开源库,旨在简化在SwiftUI中使用Core Image进行图像处理的过程,提供链式滤镜应用和渲染到SwiftUI视图的功能。

最近更新 2024-12-10

Uray - 具有Hero动画的时尚电子商务iOS应用UI

Uray是一个使用SwiftUI 3.0开发的时尚电子商务iOS应用UI,特色是Hero动画和复杂的SwiftUI界面设计,提供丰富的动画和自定义UI组件。

最近更新 2024-12-09

RichTextKit:Swift和SwiftUI中编辑富文本的SDK

RichTextKit是一个Swift SDK,支持在Swift和SwiftUI中编辑富文本,具备文本样式、字体、颜色等多种功能,并提供跨平台的RichTextEditor。

最近更新 2024-12-09

热榜

Made with in Shangrao,China By 老雷

Copyright © devler.cn 1987 - Present

赣ICP备19009883号-1