Something went wrong. Try again.
A slopfork of Sam Henri Gold's Twitter client, reskinned like Tweetie 2 / Twitter for iPhone circa 2012. Personal use.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162import SwiftUIimport UIKit
/// Place inside the scroll content, so only that scroll view's system spinner is hidden.package struct ClassicRefreshControlStyle: UIViewRepresentable { package init() {}
package func makeUIView(context: Context) -> SpinnerStyleView { SpinnerStyleView() }
package func updateUIView(_ view: SpinnerStyleView, context: Context) { view.updateRefreshControl() }
package static func dismantleUIView(_ view: SpinnerStyleView, coordinator: ()) { view.restoreTint() }
package final class SpinnerStyleView: UIView { private weak var styledControl: UIRefreshControl? private var originalTint: UIColor?
package override func didMoveToWindow() { super.didMoveToWindow() if window == nil { restoreTint() } else { updateRefreshControl() } }
package override func layoutSubviews() { super.layoutSubviews() updateRefreshControl() }
func updateRefreshControl() { var ancestor = superview while let view = ancestor { if let scrollView = view as? UIScrollView { guard let control = scrollView.refreshControl else { return } if styledControl !== control { restoreTint() originalTint = control.tintColor styledControl = control } control.tintColor = .clear return } ancestor = view.superview } }
func restoreTint() { styledControl?.tintColor = originalTint styledControl = nil originalTint = nil } }}