【发布时间】:2022-08-24 03:01:39
【问题描述】:
我目前有一个包含单个元素的简单 SwiftUI ScrollView。我添加了.refreshable(action: ) 属性以允许(下拉)刷新视图。但是,这只会在拉动刷新时显示默认的灰色微调器。有没有办法可以改变微调器的颜色/样式?
标签: ios swift mobile swiftui ios15
我目前有一个包含单个元素的简单 SwiftUI ScrollView。我添加了.refreshable(action: ) 属性以允许(下拉)刷新视图。但是,这只会在拉动刷新时显示默认的灰色微调器。有没有办法可以改变微调器的颜色/样式?
标签: ios swift mobile swiftui ios15
将 onAppear 添加到您的列表并放置
.onAppear {
UIRefreshControl.appearance().tintColor = .green
UIRefreshControl.appearance().attributedTitle = NSAttributedString("Refreshing…")
}
【讨论】:
我想添加一个我的方法,这是一种非常非正统的方法,我并不是说是“解决方案”,只是要讨论的东西,希望它可以帮助某人“测试”并找到更好的角度。
将您的内容放入一个列表中,该列表将为您提供 .refreshable 修饰符并允许拉取刷新:SWIFTUI refreshable (Pull to refresh) is not working at ScrollView
制作你的 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
}
}
最后将此单例视图添加到您的刷新控制器并隐藏原始视图:
.onAppear{
UIRefreshControl.appearance().tintColor = .clear
UIRefreshControl.appearance().addSubview(SingletonView.shared)
}
要点:https://gist.github.com/Wilsonilo/309600c62c9e27385dfa5296e696b668
【讨论】: