【问题标题】:Customisable SwiftUI Refresh spinner可定制的 SwiftUI 刷新微调器
【发布时间】:2022-08-24 03:01:39
【问题描述】:

我目前有一个包含单个元素的简单 SwiftUI ScrollView。我添加了.refreshable(action: ) 属性以允许(下拉)刷新视图。但是,这只会在拉动刷新时显示默认的灰色微调器。有没有办法可以改变微调器的颜色/样式?

标签: ios swift mobile swiftui ios15


【解决方案1】:

将 onAppear 添加到您的列表并放置

  .onAppear {
                        UIRefreshControl.appearance().tintColor = .green
                        UIRefreshControl.appearance().attributedTitle = NSAttributedString("Refreshing…")
                    }

【讨论】:

    【解决方案2】:

    我想添加一个我的方法,这是一种非常非正统的方法,我并不是说是“解决方案”,只是要讨论的东西,希望它可以帮助某人“测试”并找到更好的角度。

    • 这仅适用于 iOS15+
    1. 将您的内容放入一个列表中,该列表将为您提供 .refreshable 修饰符并允许拉取刷新:SWIFTUI refreshable (Pull to refresh) is not working at ScrollView

    2. 制作你的 UIView 的单例(这是非常不寻常的,但对于这种情况可能有效)

       class SingletonView: UIView { 
       // Singleton instance
           static let shared : UIView = 
       SingletonView.sharedInstance(size: CGSize(width: 20, height: 20))
      
           // You can modify argument list as per your need.
           class private func sharedInstance(size : CGSize)->UIView {
               //Putting the view in the middle, but the details falls on you.
               let view = UIView(frame: CGRect(x: (UIScreen.main.bounds.width / 2) - 10, y: 0, width: size.width, height: size.height))
         //just so you can see something
           view.backgroundColor = .red
               return view
           }
      }
      
    3. 最后将此单例视图添加到您的刷新控制器并隐藏原始视图:

       .onAppear{
      
      UIRefreshControl.appearance().tintColor = .clear
      
      
      UIRefreshControl.appearance().addSubview(SingletonView.shared)
      
       }
      

      要点:https://gist.github.com/Wilsonilo/309600c62c9e27385dfa5296e696b668

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2012-03-12
      • 2018-12-20
      • 1970-01-01
      • 2018-03-29
      • 2022-07-23
      • 1970-01-01
      相关资源
      最近更新 更多