I hereby claim:
- I am harshilshah on github.
- I am harshil (https://keybase.io/harshil) on keybase.
- I have a public key ASDakFowAvIvGAamvulxzoszb7CcuYH4O0wpITZzq6Ojlwo
To claim this, I am signing this object:
| // | |
| // UIFont+SmallCaps.swift | |
| // | |
| // Created by Harshil Shah on 27/04/16. | |
| // Copyright © 2016 Harshil Shah. All rights reserved. | |
| // | |
| import UIKit | |
| extension UIFont { |
| class CollectionViewCellAnimation: UICollectionViewCell { | |
| override var isHighlighted: Bool { | |
| didSet { | |
| if isHighlighted { | |
| handleTouchDown() | |
| } else { | |
| handleTouchUp() | |
| } | |
| } |
| // | |
| // UIColor+Components.swift | |
| // | |
| // Created by Harshil Shah on 12/08/17. | |
| // Copyright © 2017 Harshil Shah. All rights reserved. | |
| // | |
| import UIKit | |
| extension UIColor { |
| // | |
| // CIEdgePreserveUpsampleFilter.swift | |
| // | |
| // Created by Harshil Shah on 18/08/17. | |
| // Copyright © 2017 Harshil Shah. All rights reserved. | |
| // | |
| import CoreImage | |
| extension CIImage { |
| import UIKit | |
| extension UIColor { | |
| convenience init(displayP3Hue hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat = 1) { | |
| // Bound colours to range of [0–1] | |
| let newHue = max(0, min(1, hue)) | |
| let newSaturation = max(0, min(1, saturation)) | |
| let newBrightness = max(0, min(1, brightness)) |
| // | |
| // GrabberView.swift | |
| // | |
| // Created by Harshil Shah on 23/07/17. | |
| // Copyright © 2017 Harshil Shah. All rights reserved. | |
| // | |
| import UIKit | |
| final class GrabberView: UIView { |
| // | |
| // UIView+SafeAnchors.swift | |
| // | |
| extension UIView { | |
| var safeTopAnchor: NSLayoutYAxisAnchor { return optionalSafeAreaLayoutGuide?.topAnchor ?? topAnchor } | |
| var safeBottomAnchor: NSLayoutYAxisAnchor { return optionalSafeAreaLayoutGuide?.bottomAnchor ?? bottomAnchor } | |
| var safeLeftAnchor: NSLayoutXAxisAnchor { return optionalSafeAreaLayoutGuide?.leftAnchor ?? leftAnchor } |
| import UIKit | |
| final class HSViewPropertyAnimator: UIViewPropertyAnimator { | |
| private var preparations: [(UIViewAnimatingPosition) -> ()] = [] | |
| override func startAnimation() { | |
| runPreparations() | |
| super.startAnimation() | |
| } |
I hereby claim:
To claim this, I am signing this object:
| protocol ImageLoader { | |
| var image: UIImage? { get } | |
| func fetchImage(forSize size: CGSize) | |
| func cancelFetch() | |
| } | |
| struct AsyncImage<Loader: ObservableObject & ImageLoader>: View { | |
| @ObservedObject var loader: Loader |