推荐一款优雅的iOS页面翻页组件——Pages

推荐一款优雅的iOS页面翻页组件——Pages

Pages📖 A lightweight, paging view solution for SwiftUI项目地址:https://gitcode.com/gh_mirrors/pages2/Pages

在iOS应用开发中,我们常常会遇到需要创建滑动翻页效果的场景,如引导页、电子书预览等。今天,我要向大家推荐一个强大的SwiftUI库——Pages,它将帮助你轻松实现这些功能。

项目简介

Pages是由Nachonavarro开发的一个开源项目,它提供了一种简单易用的方式来构建类似UIPageViewController的滑动页面视图,并且支持自定义导航方向、过渡风格以及各种高级定制选项。使用Pages,你可以快速地创建出美观、流畅的页面翻转效果。

Pages 动态演示

技术分析

Pages利用了Swift的函数构建器(Function Builders)特性,使得代码可读性与编写效率大大提高。通过在Pages中嵌套视图,可以直观地声明每个页面的内容。同时,Pages内部实现了UIPageViewController,确保了原生的动画效果和性能。

基础用法如下:

import Pages

struct WelcomeView: View {
    @State var index: Int = 0
    var body: some View {
        Pages(currentPage: $index) {
            Text("欢迎!这是第一页")
            Text("这是第二页")
            Text("...这是第三页")
            Circle() // 第四页是一个圆
        }
    }
}

应用场景

Pages适用于各种需要动态或静态翻页的场景:

  • 引导页(Onboarding)
  • 目录浏览
  • 图书预览
  • 动画展示
  • 数据列表分页

以下是一个动态内容的例子,展示了如何根据数据源创建页面:

import Pages

struct CarsView: View {
    let cars = ["Ford", "Ferrari"]
    @State var index: Int = 0
    var body: some View {
        ModelPages(cars, currentPage: $index) { pageIndex, modelName in
            Text("第\(pageIndex)辆车是\(modelName)")
                .padding(50)
                .foregroundColor(.white)
                .background(Color.blue)
                .cornerRadius(10)
        }
    }
}

项目特点

  1. 易于使用:通过SwiftUI风格的API设计,添加页面就像添加数组元素一样简单。
  2. 高度定制:支持水平和垂直滚动,页面翻转过渡效果,弹性回弹,循环翻页,以及自定义页面控制。
  3. 自适应布局:Pages会自动填充其父视图的全部空间。
  4. 兼容性好:支持iOS 13.0+,Xcode 11.0+。

安装与测试

Pages通过Swift Package Manager进行安装。在Xcode中,选择File > Swift Packages > Add Package Dependency,然后输入项目地址:https://github.com/nachonavarro/Pages

此外,Pages还提供了详细的测试和示例代码,以便你在实际项目中快速上手。

如果你对iOS应用中的滑动翻页效果有需求,那么Pages绝对值得尝试。立即加入社区,一起贡献并体验这个强大的库吧!

查看项目 阅读完整文档 下载Demo

Pages📖 A lightweight, paging view solution for SwiftUI项目地址:https://gitcode.com/gh_mirrors/pages2/Pages

一个类似于安卓ViewPager的开源库 - iOS ViewPager 高级库 支持 iPhone/ipad/ipod 相关方法 pragma mark - version 1.0 /** * 初始化 YFViewPager的方法 * * @param frame frame * @param titles 标题数组 * @param views 视图数组 和标题数组一一对应 * * @return YFViewPager */ - (id)initWithFrame:(CGRect)frame titles:(NSArray *)titles views:(NSArray *)views; /** * 设置选择的菜单按钮 * * @param index 按钮的索引值 从左到右一次是0,1,2,3... */ - (void)setSelectIndex:(NSInteger)index; /** * 点击菜单按钮时 调用的block方法 * * @param block 返回YFViewPager本身和点击的按钮的索引值,从左到右一次是0,1,2,3... */ - (void)didSelectedBlock:(SelectedBlock)block; pragma mark - version 2.0 /** * 初始化 YFViewPager的方法 也是目前使用的YFViewPager的唯一初始化api * * @param frame frame * @param titles 标题数组 * @param icons 标题右侧图标数组 * @param selectedIcons 标题右侧选中时的图标数组 * @param views 视图数组 和标题数组一一对应 * * @return YFViewPager */ - (id)initWithFrame:(CGRect)frame titles:(NSArray *)titles icons:(NSArray *)icons selectedIcons:(NSArray *)selectedIcons views:(NSArray *)views; /** * 设置菜单标题左边的icon 图标 * * @param icons 图标image * @param selectedIcons 菜单被选中时显示的图标image */ - (void)setTitleIconsArray:(NSArray *)icons selectedIconsArray:(NSArray *)selectedIcons; /** * 设置菜单右上角小红点显示的文字,数组需与菜单一一对应,数字为0时 赋值 @0或@"" * * @param tips 小红点上的文字 */ - (void)setTipsCountArray:(NSArray *)tips;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余靖年Veronica

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值