Skip to content

Instantly share code, notes, and snippets.

View zwaldowski's full-sized avatar

Zachary Waldowski zwaldowski

View GitHub Profile

A [term]_method is like a function; you will learn more about them later.

A [term]_method_ is like a function; you will learn more about them later.

A [term]_method is like a function; you will learn more about them later.

@zwaldowski
zwaldowski / EventGenerator.swift
Created April 26, 2019 05:35
UIKit Touch Synthesis (Hacks! Hacks hacks! Hacks!)
import UIKit
import ObjectiveC.runtime
// MARK: - IOKit
@objc private protocol IOHIDEvent: NSObjectProtocol {}
private struct IOHIDDigitizerEventMask: OptionSet {
let rawValue: UInt32
init(rawValue: UInt32) { self.rawValue = rawValue }
@zwaldowski
zwaldowski / DoneAccessoryView.swift
Created February 11, 2019 16:01
iOS Done Accessory Bar — The two versions below are mutually exclusive
import UIKit
class DoneAccessoryView: UIInputView {
private let toolbar = UIToolbar()
init() {
super.init(frame: .zero, inputViewStyle: .default)
translatesAutoresizingMaskIntoConstraints = false
allowsSelfSizing = true
@zwaldowski
zwaldowski / CardPresenting.swift
Last active December 7, 2022 09:14
iOS presentation controller for bottom-focused cards using Auto Layout - https://www.icloud.com/iclouddrive/0wJzCDOwwXTRF53bM4xWLbYag#card-magic-ii
import UIKit
private class CardPresenter: UIPresentationController {
private let dimmingView = UIView()
private let roundingView = UIView()
// MARK: -
override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController?) {
{
si = (
{
a = "-0.3427528387535028";
i = 0;
o = 1;
z = "270.9334057827345";
},
{
a = "-10.23975864472505";
import Photos
private extension Collection where Element == URLQueryItem {
subscript(_ name: String) -> String? {
return first { $0.name == name }?.value
}
}
@zwaldowski
zwaldowski / Validate.swift
Created February 5, 2018 15:02
Non-nil validation using KeyPath
import Foundation
struct Test {
var a: String?
var b: Int?
var c: NSObject?
var x = 42
enum Error: Swift.Error {
@zwaldowski
zwaldowski / Digest.swift
Last active May 3, 2018 23:51
Swift 4 CC_SHA1 and fast toHexString extensions
import Foundation
private func loadCSymbol<T>(named name: String, of _: T.Type = T.self) -> T {
let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2)
guard let sym = dlsym(RTLD_DEFAULT, name) else { preconditionFailure(String(cString: dlerror())) }
return unsafeBitCast(sym, to: T.self)
}
private let CC_SHA1_DIGEST_LENGTH = 20
private let CC_SHA1: @convention(c) (UnsafeRawPointer, Int32, UnsafeMutablePointer<UInt8>) -> UnsafeMutablePointer<UInt8> = loadCSymbol(named: "CC_SHA1")
#import <Foundation/Foundation.h>
typedef void(^SomeBlock)(void);
@interface Foo: NSObject
// If this one isn't marked `_Nonnull`, a caller of the class
// won't warn.
- (void)doAThingWithCompletionHandler:(_Nonnull SomeBlock)handler;
@zwaldowski
zwaldowski / KeyedCodable.swift
Last active August 7, 2017 23:01
Swift 4 Beta 5 NSKeyed{Una,A}rchiver Codable Support
import Foundation
// Stolen from https://github.com/ole/whats-new-in-swift-4/blob/master/Whats-new-in-Swift-4.playground/Pages/Encoding%20and%20decoding.xcplaygroundpage/Contents.swift#L14-L31
struct Card: Codable, Equatable {
enum Suit: String, Codable {
case clubs, spades, hearts, diamonds
}
enum Rank: Int, Codable {
case two = 2, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace