This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIHostingController { | |
convenience public init(rootView: Content, ignoreSafeArea: Bool) { | |
self.init(rootView: rootView) | |
if ignoreSafeArea { | |
disableSafeArea() | |
} | |
} | |
func disableSafeArea() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import AVFoundation | |
import Combine | |
// simply use | |
// player.periodicTimePublisher() | |
// .receive(on: RunLoop.main) | |
// .assign(to: \SomeClass.elapsedTime, on: someInstance) | |
// .store(in: &cancelBag) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BlurryOverlayView: UIVisualEffectView { | |
private var animator: UIViewPropertyAnimator! | |
private var delta: CGFloat = 0 // The amount to change fractionComplete for each tick | |
private var target: CGFloat = 0 // The fractionComplete we're animating to | |
private(set) var isBlurred = false | |
private var displayLink: CADisplayLink! | |
override init(effect: UIVisualEffect?) { | |
super.init(effect: effect) | |
setup() |