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()
        }
    }
    
    
  • 相关阅读:
    js练习-两个栈实现队列
    js练习- 给你一个对象,求有几层
    React Context上下文
    react-native StatusBar透明
    react-native-splash-screen 隐藏statusbar
    掘金转载-手写一个Promise
    multipart/form-data
    (转)浅谈测试驱动开发(TDD)
    Objective-C urlEncode urlDecode
    (转)在Xcode 7上直接使用Clang Address Sanitizer
  • 原文地址:https://www.cnblogs.com/chaostudy/p/15078457.html
Copyright © 2011-2022 走看看