可伸缩头部滚动视图

一个带有粘性头部的滚动视图,当您滚动时,头部会缩小。使用 SwiftUI 编写。

阅读文章 »

SPM Compatible Cocoapods Compatible Carthage Compatible License: MIT

使用方法

  1. 将您的头部和内容代码放入 ScalingHeaderScrollView 构造函数中。
  2. 设置必要的修饰符,请参见下文。
struct ContentView: View {

    var body: some View {
       ScalingHeaderScrollView {
            ZStack {
                Rectangle()
                    .fill(.gray.opacity(0.15))
                Image("header")
            }
        } content: {
            Text("↓ Pull to refresh ↓")
                .multilineTextAlignment(.center)
                .padding()
        }
    }
}

必需参数

header - 用于您的头部的 @ViewBuilder
content - 用于您的内容的 @ViewBuilder

可用修饰符,可选

将当前的折叠进度值传递到进度绑定中:0 表示完全未折叠,1 表示完全折叠

.collapseProgress(_ progress: Binding<CGFloat>)

允许为 ScrollView 到达底部设置回调

.scrollViewDidReachBottom(perform: @escaping () -> Void)

允许为下拉刷新动作设置回调和 isLoading 状态

.pullToRefresh(isLoading: Binding<Bool>, perform: @escaping () -> Void)

允许为下拉加载更多动作设置回调和 isLoading 状态

.pullToLoadMore(isLoading: Binding<Bool>, perform: @escaping () -> Void)

允许内容滚动重置,需要将 Binding 更改为 true

.scrollToTop(resetScroll: Binding<Bool>)

允许更改当前头部高度,需要更改状态,可能的值为 .collapsed、.expanded 或 .custom(CGFloat)

.snapHeaderToState(state: Binding<SnapHeaderState?>, animated: Bool)

更改头部的最小和最大高度,默认值为 min = 150.0max = 350.0

.height(min: CGFloat = 150.0, max: CGFloat = 350.0)

向上滚动时 - 在实际的头部折叠和简单地将其向上移动之间切换(默认情况下向上移动)

.allowsHeaderCollapse()

向下滚动时 - 启用(默认禁用)头部缩放

.allowsHeaderGrowth()

启用/禁用(默认禁用)头部捕捉。可用模式

.setHeaderSnapMode(.immediately)

为头部捕捉设置自定义位置(如前一点所述)。在 0...1 中指定任意数量的值来设置捕捉点,0 - 完全折叠的头部,1 - 完全展开的头部

.headerSnappingPositions(snapPositions: [CGFloat])

设置滚动视图将自动捕捉到的自定义初始位置。在 0...1 中指定一个值,0 - 完全折叠的头部,1 - 完全展开的头部

.initialSnapPosition(initialSnapPosition: CGFloat)

隐藏滚动指示器(默认为 false)

.hideScrollIndicators()

示例

要尝试 ScalingHeaderScrollView 示例

安装

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/exyte/ScalingHeaderScrollView.git")
]

CocoaPods

要安装 ScalingHeaderScrollView,只需将以下行添加到您的 Podfile 中

pod 'ScalingHeaderScrollView'

Carthage

要使用 Carthage 将 ScalingHeaderScrollView 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "Exyte/ScalingHeaderScrollView"

要求

我们其他的开源 SwiftUI 库

PopupView - Toasts 和弹窗库
Grid - 最强大的 Grid 容器
AnimatedTabBar - 带有多种预设动画的选项卡栏
MediaPicker - 可自定义的媒体选择器
Chat - 聊天 UI 框架,具有完全可定制的消息单元格、输入视图和内置的媒体选择器
OpenAI OpenAI REST API 的 Wrapper 库
AnimatedGradient - 动画线性渐变
ConcentricOnboarding - 动画引导流程
FloatingButton - 浮动按钮菜单
ActivityIndicatorView - 多个动画加载指示器
ProgressIndicatorView - 多个动画进度指示器
FlagAndCountryCode - 每个国家的电话代码和标志
SVGView - SVG 解析器
LiquidSwipe - 流体导航动画