• Stars
    star
    174
  • Rank 219,104 (Top 5 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 9 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Various Swift playgrounds, for fun and for profit.

ParksAndRecreation

Various Swift and SwiftUI tidbits, for fun and for profit.

Swift

Asynchronous Operations

Base classes for tracking work inside OperationQueue that takes place outside of the queue, without causing a thread to hang by waiting. Includes an Operation for wrapping URLSessionTask.

Inspired by and lovingly nerd-sniped by @jaredsinclair.

Badge Formatter

A simple class for using Unicode to encircle some characters or single-digit numbers in the iOS system font, inspired by this tweet. Includes a gallery live view for demonstration.

Badge gallery

Chunk Sequence

Derived from @krzyzanowskim's blog post: use a protocol extension to split any collection into a group of slices. Think flatten(), but in reverse.

Combinatorial Parsers

A thought exercise strongly inspired by @khanlou (blog post here) and @pointfreeco for a more protocol-oriented, composable parsing flavored like Swift Combine.

Custom Truncation

Use TextKit to perform custom truncation with high performance. Also an example of creating building a drop-in UILabel backed by TextKit.

Debounce

Use DispatchSource to coalesce calls that shouldn't be called more than once per runloop iteration, like UI reconfiguration.

Delimited

A fast recursive-descent parser for CSVs and similarly structured data inspired by Matt Gallagher.

Deriving Scroll Views

Based on a technique used in the iOS 10 Music app, subclasses of UICollectionView and UITableView that derive their intrinsic content size and visible bounds from their content and context, respectively, when isScrollEnabled = false. This is similar to behavior on UITextView. It enables, for instance, putting three collection views in a stack view in a scroll view with low performance impact.

Geometry

Mathematical operators and idiomatic bridging for Core Graphics types.

HTML Reader

Extremely simple read-only HTML parser based on libxml2 with 100% test coverage.

Keyboard Layout Guide

An extension on UIViewController providing a keyboardLayoutGuide property. The layout guide normally mirrors the safe area, but automatically shrinks to avoid the keyboard. It also allows emulating the automatic content keyboard insets applied to UICollectionViewController and UITableViewController. It avoids the pitfalls of most keyboard avoidance implementations, like correctly syncing animations.

The Swift 3 version requires iOS 9.0.

Living Wallpapers

Create your own sun-, time-, or light/dark-based wallpaper for macOS Mojave.

Wallpaper changing from light to dark

Playground requires Swift 4.2 beta and macOS Mojave.

String Localization

Formatted localization using Swift string formatting. Introduces localize with a similar prototype to NSLocalizedString:

func localize(text: LocalizableText, tableName: String? = default, bundle: NSBundle = default, value: String = default, comment: String)

What's a LocalizableText? It's an intermediary type that deconstructs interpolation segments for use with string formatting. But that's not important, what's important is that it's literal convertible:

let filesLeft = 4
let filesTotal = 5
let labelText = localize("test-progress-\(filesLeft)-of-\(filesTotal)", comment: "Help text used for a positional description")

And in your Localizable.strings, just like in Cocoa:

/* Help text used for a positional description */
"test-progress-%@-of-%@" = "%1$@ of %2$@ remaining.";

All placeholders should be %@ on the end of the key, and be represented positionally, i.e., with %1$@, %2$@, and so on.

Target-Action Notifier

A helper for performing type-safe multicast callbacks. The result is a lot like using UIControl, but for weakly held objects and without unsafe selectors.

Heavily inspired by this blog post from @ole.

NSView Layout Margins

Extending NSView Auto Layout with conveniences from iOS, including a view-level version of NSWindow.contentLayoutGuide (think of it like you would safe areas), directionalLayoutMargins, layoutMarginsGuide, and readableContentGuide.

Layout margins

Ordered Dictionary

A simple glueing-together of Dictionary and Array into an ordered, hashed data structure. Useful if your keys are indeed already Hashable, but doesn't have great performance; insertion and removal tend towards the worst of both structures. If you have any alternative, prefer something B-Tree based instead.

Custom Size Classes

"Size classes are fine, but I can't customize them!" Yeah, you can! By inspecting what Mobile Safari does, you can do the same, using override trait collections.

Custom Readable Width

Emulating the calculation of UIView.readableContentGuide.

Receding Navigation Title

Approximating multi-line large titles in navigation bars seen in News, Music, etc.

Badge gallery

Regular Expressions

Simple Swift bridging for NSRegularExpression, as well as general patterns to go from String.UTF16View and Range<String.UTF16Index> to NSString and NSRange.

Repeatable UUIDs

A Swift 5 implementation of the UUID version 5 algorithm, which is based on a SHA-1 hash of some input data. These can be useful as database primary keys identifying some model that has no identifier of its own. Like all UUIDs, version 5 hashed UUIDs still have an astronomically low chance of collision.

String Views

Line, paragraph, sentence, and word views for Swift.String, providing a more idiomatic take on StringProtocol.getLineStart(_:end:contentsEnd:for:) and StringProtocol.getParagraphStart(_:end:contentsEnd:for:) as Swift collections.

Array(string.lines) // -> [Substring]

Floating Now Playing Bar

Experiment adding an accessory to UITabBarController, like Now Playing in Music.​app.

Tab bar palette gallery

  • Drop-in UITabBarController with a paletteViewController property
  • Palette is forwarded appearance (i.e., viewWillAppear) and trait collection events
  • Palette supports sizing through Auto Layout and preferredContentSize and animating changes to those
  • Can animate in, out, and between palette changes
  • Detects and supports highlighting of palette background on tap
  • Supports Interface Builder, 3D Touch, and modal view controllers

Thread with Function

Spawn and join with a pthread_t returning a result from a Swift function, inspired by the Swift stdlib. See also Thread.init(block:) from iOS 10 and up.

UI Geometry

Conveniences for using Core Graphics types in UI programming, such as retina-friendly rounding and equation operators that account for floating point inaccuracy.

View Recursion

Showing off the simple power of Swift iterators by performing breadth-first travel through the trees created by UIView, UIViewController, and CALayer.

SwiftUI

Stickiness

Hiding and unhiding the top and bottoms bars of on scroll to match the various onboarding UIs in iOS (Settings, Apple Pay, Health, etc.)

Similar to Receding Navigation Title in UIKit.

Archive

Obsoleted in Swift 4

ConcretePlusProtocol

If you're hurting for Objective-C's MyClassType<SomeProtocolType> *, try this on for size.

Obsoleted in Swift 4 by MyClass & SomeProtocol syntax.

Value Coding

A simple bridge to bridges concrete value types into NSCoding.

Obsoleted in Swift 4 by Codable.

Obsoleted in Swift 3

BetterCoreDataInit

Use protocol extension to achieve simpler Core Data, like MyManagedObject(context:).

Data

An idiomatic Data<T>, representing any buffer (contiguous or discontiguous) of numeric elements. Part NSData, part dispatch_data_t, Data is useful for low-level byte-based APIs in Swift, such as crypto and string parsing.

Create one with an array:

let data = Data<UInt8>(array: [ 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x21 ])

And enumerate through it in constant time:

for byte in data {
	...
}

Made with lots of help from @a2.

Fixing dispatch_block_t

Even though it's been fixed in 2.1, Swift 2.0 has a rather ugly bug with wrapped dispatch_block_t types. Fix it with a C few tricks and a rational DispatchBlock type.

More Repositories

1

AdvancedCollectionView

Techniques, improvements, and a Swift port derived from WWDC 2014 Session 232, "Advanced User Interfaces Using Collection View"
Objective-C
183
star
2

DZWebDAVClient

An Objective-C WebDAV client based on AFNetworking.
Objective-C
101
star
3

AZAppearanceKit

Objective-C
81
star
4

semver-release-action

Create the next semantic version and tag it.
JavaScript
36
star
5

xld

A tool for Mac OS X that is able to decode/convert/play various 'lossless' audio files. (Google Code mirror+fork)
Objective-C
18
star
6

match-label-action

Tests a pull request for one of several labels.
JavaScript
16
star
7

ConcurrencyCompatibility

Tools for using Swift Concurrency on macOS 10.15 Catalina, iOS 13, tvOS 13, and watchOS 6.
Swift
11
star
8

subler

A QuickTime-compatible MP4 muxer and metadata editor for Mac. (Google code fork)
C++
10
star
9

NotesArchive

Manipulates the undocumented interchange format for the Apple Notes app.
Swift
10
star
10

Silencio

Shut up, Xcode.
Objective-C
9
star
11

DZModalAnimationSegue

A custom UIStoryboardSegue subclass that gives special transitions to modal view controllers.
Objective-C
9
star
12

Authenticator

Fork of the Google Authenticator for iOS with extra features.
Objective-C
8
star
13

Lustre

A protocol-oriented Either and Result for Swift 2.0
Swift
7
star
14

cspell-action

GitHub Action to deploy cspell against a repository
JavaScript
6
star
15

homebridge-satellite-fan

Plugin for homebridge that connects to a Satellite Fan control module: https://www.fan-light.com
JavaScript
6
star
16

DZDropboxClient

A modernized version of the Dropbox SDK.
Objective-C
6
star
17

ffi-mini

A stripped-down build of libffi exclusively for iOS/OS X.
C
5
star
18

LogExperiment

An attempt at providing a more Swift-like `os_log`.
Swift
4
star
19

ATKit

Experimental Swift library for ATProto (Bluesky)
Swift
3
star
20

ProjectTeamRocket

CS 2340 Android application, Spring 2013, Georgia Tech
Java
3
star
21

homebridge-anavi-infrared-aircon

Plugin for homebridge that combines LIRC and a temperature sensor into a thermostat accessory: https://github.com/nfarina/homebridge
JavaScript
3
star
22

HTML

Dead simple parsing of tiny HTML snippets in Swift using libxml2.
Swift
3
star
23

git-commit-action

Create an automated commit, initializing a repo if needed.
JavaScript
3
star
24

FigitalFunctionFow

Xcode's Touch Bar simulator is really simple. ¯\_(ツ)_/¯
Objective-C
3
star
25

Apparent

Stupid Swift µFramework for the stupid way Swift handles stupid UIAppearance.
Objective-C
2
star
26

Attendant

Swift µFramework for associated objects and blocks.
Swift
2
star
27

OneTimePad

Bridging for CommonCrypto in the Swiftiest way possible
Swift
1
star
28

URLGrey

Delightful I/O and file management in Swift.
Swift
1
star
29

zwaldowski.github.io

HTML
1
star
30

waldowski.me

Liquid
1
star
31

homebrew-tap

Ruby
1
star
32

dotfiles

Shell
1
star
33

manage-recipes

Archiving recipes for meal kit delivery services
Swift
1
star
34

Delight

As in, "Surprise And". Experiments Binding SwiftUI Beta 5 to Core Data.
Swift
1
star
35

zw-schoolwork

Undergraduate coursework completed at Coastal Carolina University (2010-2012) and the Georgia Institute of Technology (2012-2013).
Java
1
star
36

stringsutil

Swift command-line utility for manipulating old-style Xcode strings files
Swift
1
star