Skip to content

Instantly share code, notes, and snippets.

View isoiphone's full-sized avatar

Jacob Schwartz isoiphone

View GitHub Profile
@isoiphone
isoiphone / WeakEnum.swift
Last active August 17, 2018 03:17
Am I drunk or does this make sense?
struct WeakEnum<Enum: RawRepresentable>: Codable where Enum: Codable & Equatable, Enum.RawValue: Codable {
let rawValue: Enum.RawValue
let value: Enum?
init(rawValue: Enum.RawValue) {
self.rawValue = rawValue
self.value = Enum.init(rawValue: rawValue)
}
@isoiphone
isoiphone / ImpactFeedbackGenerator.swift
Created April 20, 2017 01:10
Wrapping an iOS 10+ class
class ImpactFeedbackGenerator {
fileprivate init() {
}
static func create() -> ImpactFeedbackGenerator {
if #available(iOS 10.0, *) {
return ConcreteImpactFeedbackGenerator()
} else {
return ImpactFeedbackGenerator()
}
@isoiphone
isoiphone / home.ex
Created December 31, 2016 03:07
budget.com javascript errors
@isoiphone
isoiphone / switchexample.swift
Created December 12, 2016 21:57
Using one switch statement with multiple lines in each case
class OneBigSwitchExample {
enum Type { case First, Second }
var magic: String = ""
var cool: String = ""
var fast: Bool = false
func foo(type: Type) {
switch type {
case .First:
@isoiphone
isoiphone / smoothstep.swift
Created September 12, 2016 18:29
Smoothstep
// so smoooooth.
func smoothstep(x: CGFloat) -> CGFloat {
return x*x*(3-2*x)
}
@isoiphone
isoiphone / ReadableContentGuideHelperView.swift
Created July 19, 2016 22:38
readableContentGuide is a mess.
class ReadableContentGuideHelperView: UIView {
var onChange: ((CGRect)->())?
static func addToView(view: UIView) -> ReadableContentGuideHelperView {
let helperView = ReadableContentGuideHelperView()
view.addSubview(helperView)
if #available(iOS 9.0, *) {
helperView.setupAnchors(view)
} else {
@isoiphone
isoiphone / coreimage_face_example.swift
Last active July 11, 2016 18:24
Using CoreImage to detect faces
import CoreImage
extension UIImage {
func rectsForFaces() -> [CGRect] {
guard let cgImage = CGImage else { return [] }
let ciImage = CoreImage.CIImage(CGImage: cgImage)
let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let detector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)
let hallOfFaces = detector.featuresInImage(ciImage)
@isoiphone
isoiphone / UIImage+color.swift
Created March 28, 2016 16:45
Create UIImage of solid color
extension UIImage {
class func imageWithColor(color: UIColor, size: CGSize=CGSize(width: 1, height: 1)) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, 0)
color.setFill()
UIRectFill(CGRect(origin: CGPoint.zero, size: size))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
extension UIView {
func forEachSubviewOfType<V: UIView>(type: V.Type, @noescape apply block: V -> Void) {
for view in subviews {
if let view = view as? V {
block(view)
} else {
view.forEachSubviewOfType(V.self, apply: block)
}
}
}
@isoiphone
isoiphone / policy.txt
Created January 4, 2016 00:50
Canada National Student Loans Service Centre (NSLSC) Password Policy (https://csnpe-nslsc.cibletudes-canlearn.ca/eng/Default.aspx)
"Your Password must be between 7 and 15 characters long. It must contain at least one upper case letter, one lower case letter, and one number. Your Password cannot contain spaces or special characters (like @, &, or _). It also cannot contain consecutively repeated characters (e.g. 11, 222, AAAA). Please select another Password."