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()
        }
    }
    
    
  • 相关阅读:
    linux系统/var/log目录下的信息详解
    SQL 显示表名显示列名
    P2P平台介绍
    outlook署名最后一行没换行
    CSS3下的渐变文字效果实现
    SSH(poderosa)を使って、さくらのMySQLサーバーに接続する方法
    内网IP外网IP的关联及访问互联网原理
    自己吃的哑巴亏,怎么也要吞下去
    解决Ehcache缓存警告问题
    管理的艺术
  • 原文地址:https://www.cnblogs.com/chaostudy/p/15078457.html
Copyright © 2011-2022 走看看