Skip to content

Instantly share code, notes, and snippets.

View jpmcglone's full-sized avatar

John P. McGlone jpmcglone

View GitHub Profile
import SwiftUI
struct GestureTester: View {
@State var isPressed = false
@State var location = CGPoint.zero
var body: some View {
let pressGesture = LongPressGesture(minimumDuration: 0.5).onEnded {
self.isPressed = $0
}
import SwiftUI
public extension Spacer {
static func exactly(_ value: CGFloat) -> some View {
Spacer()
.frame(
minWidth: value,
idealWidth: value,
maxWidth: value,
minHeight: value,
public struct VSpacer: View {
private let spacing: CGFloat
public init(_ spacing: CGFloat) {
self.spacing = spacing
}
public var body: some View {
Spacer()
.frame(idealHeight: spacing, maxHeight: spacing)
func highestKey<T, N: Comparable>(of dictionary: Dictionary<T, N>) -> T? {
var highestKey: T?
var highestValue: N?
for key in dictionary.keys {
let value = dictionary[key]
if highestValue == nil || value! > highestValue! {
highestKey = key
highestValue = value
}
import Foundation
class Weak<T> {
private weak var _value: AnyObject?
var value: T? { return _value as? T }
init(_ value: T) {
_value = value as AnyObject
}
}
import Foundation
public class BidirectionalMap<Left: Hashable, Right: Hashable> {
private var leftToRightMapping = [Left : Right]()
private var rightToLeftMapping = [Right : Left]()
public subscript(left: Left) -> Right? {
get { return leftToRightMapping[left] }
set (newValue) {
@propertyWrapper
class Lazy<T> {
fileprivate var loader: (()->T)
fileprivate var _value: T?
var projectedValue: Lazy<T> { return self }
var wrappedValue: T {
_value = _value ?? loader()
return _value!
}
@jpmcglone
jpmcglone / Additions.swift
Created October 4, 2016 16:56
Swift 3 - Set if not nil
import Foundation
func setIfNotNil<T>(_ obj: inout T?, _ other: T?) {
guard other != nil else { return }
obj = other
}
@jpmcglone
jpmcglone / Realm+Sync
Created September 16, 2016 02:31
Realm 'sync' function (Swift 3)
import RealmSwift
extension Realm {
func sync<T: Object>(_ obj: T) {
var beganWriteTransaction = false
if !isInWriteTransaction {
beganWriteTransaction = true
beginWrite()
}
@jpmcglone
jpmcglone / gist:5a5e866ef333716d6d88b55f93b95e15
Created August 13, 2016 21:58
Remove All Gesture Recognizers
func removeAllGestureRecognizers() {
gestureRecognizers?.forEach(self.removeGestureRecognizer)
}