zoukankan      html  css  js  c++  java
  • SwiftUI 中使用BBSwiftUIKit开源库实现上拉加载和下拉刷新

    BBSwiftUIKit开源库GitHub地址

    import SwiftUI
    import BBSwiftUIKit
    
    struct ContentView: View {
        
        @State var list : [Int] = (0..<50).map{$0}
        @State var isRefreshing: Bool = false
        @State var isLoadingMore: Bool = false
        @State var isReloadData: Bool = false
        var body: some View {
            BBTableView(list) { i in
                Text("Text(i)")
                    .padding()
                    .background(Color.blue)
            }
            //调用该方法后isRefreshing会变为true
            .bb_pullDownToRefresh(isRefreshing: $isRefreshing) {
                print("Refresh")
                //设置为一秒后停止刷新
                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                    self.list = (0..<50).map{$0}
                    self.isRefreshing = false
                }
            }
            .bb_pullUpToLoadMore(bottomSpace: 40) {
                if self.isLoadingMore{return}
                self.isLoadingMore = true
                print("Loading More")
                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                    let more = (self.list.count..<self.list.count + 10)
                    self.list.append(contentsOf: more)
                    self.isLoadingMore = false
                }
                
            }
            .bb_reloadData($isReloadData)
        }
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    

    BBScrollView的使用

    import SwiftUI
    import BBSwiftUIKit
    
    struct ScrollViewTest: View {
        
        
        @State var contentOffset: CGPoint = .zero
        @State var contentOffsetToScrollAnimated: CGPoint? = CGPoint(x: 200.0, y: 0.0)
    
        var body: some View {
            let list : [Int] = (0..<50).map{$0}
            BBScrollView(.horizontal, contentOffset: $contentOffset) {
                // Add views
                HStack(spacing:0) {
                    ForEach(list,id:.self) { i in
                        Text("(i)")
                            .frame( UIScreen.main.bounds.width/10, height: 30, alignment: .center)
                            .background(Color.blue)
                            
                    }
                }
            }
            .bb_bounces(false) // 反弹效果
            .bb_isPagingEnabled(true) // 分页效果
            .bb_showsHorizontalScrollIndicator(false) // 是否显示水平滚动条
            .bb_showsVerticalScrollIndicator(false)
        }
    }
    
    struct ScrollViewTest_Previews: PreviewProvider {
        static var previews: some View {
            ScrollViewTest()
        }
    }
    
    
  • 相关阅读:
    Reverse题的tips
    电子公文传输系统 团队作业(五):冲刺总结(第三天)
    webrtc sdp(会话传输协议)详解
    CentOS新系统开启网络
    FreeSWITCH Cookbook
    NetEngine AR V300R019 配置指南-IP业务(命令行)—— NAT
    将md(markdown)文件导出成pdf的最简单办法
    liblinear
    Accelerometer, Gyroscope, and Magnetometer Analysis with Matplotlib
    svmlight
  • 原文地址:https://www.cnblogs.com/chaostudy/p/15078457.html
Copyright © 2011-2022 走看看