Skip to content

Instantly share code, notes, and snippets.

View zoejessica's full-sized avatar
🐗
skiing uphill

Zoë Smith zoejessica

🐗
skiing uphill
View GitHub Profile
@zoejessica
zoejessica / chunk.swift
Created May 16, 2016 21:42
Chunk an array into subarrays
extension Array {
func chunk<T : Equatable>(by valueToCompare: (Element) -> T) -> [[Element]] {
var currentValue = self[0]
var startIndex = 0
var splits = [[Element]]()
for (index, value) in self.enumerate() {
if valueToCompare(value) != valueToCompare(currentValue) {
let newSplit = self[startIndex..<index]
splits.append(Array(newSplit))
startIndex = index
@zoejessica
zoejessica / Badged pin
Created April 24, 2015 17:05
Badged pin (eg for maps) using IB_Designable and IBInspectable
#import <UIKit/UIKit.h>
IB_DESIGNABLE @interface BadgedPin : UIView
@property (nonatomic, assign) IBInspectable CGFloat badgeDiameter;
@property (nonatomic, strong) IBInspectable UIColor *badgeColor;
@property (nonatomic, assign) IBInspectable CGFloat badgeStrokeWidth;
@property (nonatomic, strong) IBInspectable UIColor *fillColor;
@property (nonatomic, strong) IBInspectable NSString *imageName;
(*
http://zoesmith.io
Export Bookmarks from Evernote to Pinboard
v1.4 12th September 2012
This script takes selected notes in Evernote and sends an email for each to Pinboard, extracting each note's title, source URL and associated tags. The user should enter their Pinboard email address in the pinboardEmail property below, and can choose a default tag to add to each bookmark on import.
This code is hacky, horrible and non-error checking (but it worked for me). Don't use on thousands of notes at a time, it'll go all crashy. Try selecting one test note first to see if it works for you.
Change log:
@zoejessica
zoejessica / gist:2df4bc074691b8cf2f14
Created May 13, 2014 13:36
Calculating cell heights from auto layout prototype cells, each type of which will always be the same height
// http://stackoverflow.com/a/16881312/2199136
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = [self cellIdentifierForIndexPath:indexPath];
static NSMutableDictionary *heightCache;
if (!heightCache)
heightCache = [[NSMutableDictionary alloc] init];
NSNumber *cachedHeight = heightCache[cellIdentifier];
if (cachedHeight)
return cachedHeight.floatValue;
@zoejessica
zoejessica / gist:770a59e6f380e575ae94
Last active August 29, 2015 14:01
Dynamic cell height calculation where prototype cells' heights will vary according to one important UI element
// In a subclass of UITableViewCell:
- (void)awakeFromNib {
// http://stackoverflow.com/a/14127936/2199136
[super awakeFromNib];
[self layoutIfNeeded];
self.originalSize = self.bounds.size;
self.originalimportantUIElementSize = self.originalimportantUIElement.bounds.size;
}
@zoejessica
zoejessica / UIView + DebugObject
Created March 15, 2014 12:23
Ben Scheirman's category on UIView to get quick look debugging on UIView variables (not just properties)
// http://benscheirman.com/2014/03/quick-look-debugging-with-uiview/
#import "UIView+DebugObject.h"
@implementation UIView (DebugObject)
- (id)debugQuickLookObject {
UIGraphicsBeginImageContext(self.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.layer renderInContext:context];