Skip to content

Instantly share code, notes, and snippets.

@brocoo
brocoo / Available UIFonts
Last active August 29, 2015 13:57
Available UIFonts on iOS
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++){
NSString *fontFamily = fontFamilies[i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:fontFamilies[i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
@brocoo
brocoo / Maths macros
Last active August 29, 2015 13:57
Maths macros
#define FLT_EQUAL(a, b) (fabs((a) - (b)) < FLT_EPSILON)
#define FLT_ZERO(a) (fabs(a) < FLT_EPSILON)
@brocoo
brocoo / Prevent iCloud Backup
Created April 23, 2014 14:00
This method should be implemented in a NSURL category
- (BOOL)addSkipBackupAttribute{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self path]]) return NO;
NSError *error = nil;
BOOL success = [self setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [self lastPathComponent], error);
}
return success;
}
@brocoo
brocoo / Swift NSNotification extension
Last active May 13, 2016 09:51
Extension of NSNotification to use a key enum as the notification name.
public enum NotificationKey: String {
case UserSignedIn = "UserSignedInNotification"
case UserSignedOut = "UserSignedOutNotification"
case SomeOtherEvent = "SomeOtherEventNotification"
}
extension NSNotificationCenter {
func addObserver(observer: AnyObject, selector aSelector: Selector, key aKey: NotificationKey) {
self.addObserver(observer, selector: aSelector, name: aKey.rawValue, object: nil)
@brocoo
brocoo / Result.swift
Last active August 29, 2015 14:16
A result enum, storing a boxed type or a NSError meant to be return from any process (API call, etc) (Swift 1.2)
// MARK: - Box
final public class Box<T> {
public let unbox:T
public init(_ value: T) { self.unbox = value }
}
// MARK: - Result enum
public enum Result<T: Printable> {
@brocoo
brocoo / Swift NSError extension
Created March 30, 2015 11:19
Extension of NSError that allow custom personalised errors for a project (Swift 1.2)
// MARK: - NSError
public enum ErrorType: Int {
case Unknown = 1
case NotAuthenticated = 2
func localizedUserInfo() -> [String: String] {
var localizedDescription: String = ""
var localizedFailureReasonError: String = ""
@brocoo
brocoo / Extensions.swift
Last active April 12, 2021 13:27
Swift UIImage extension for base64 conversion
// MARK: - UIImage (Base64 Encoding)
public enum ImageFormat {
case PNG
case JPEG(CGFloat)
}
extension UIImage {
public func base64(format: ImageFormat) -> String {
@brocoo
brocoo / Delay.swift
Last active September 27, 2019 13:49
Delay the execution of a given closure on the main queue
public func delay(time: Double, completion: () -> Void) {
let ms = dispatch_time(DISPATCH_TIME_NOW, Int64(time * Double(NSEC_PER_SEC)))
dispatch_after(ms, dispatch_get_main_queue()) {
() -> Void in
completion()
}
}
public func delay(time: Double) -> (()->Void) -> Void {
return {
@brocoo
brocoo / WebView.swift
Last active August 29, 2015 14:23
Swift 1.2 function to flush shared cookies
public func flushCookies() {
let storage = NSHTTPCookieStorage.sharedHTTPCookieStorage()
if let cookieJar = storage.cookies as? [NSHTTPCookie] {
for cookie in cookieJar { storage.deleteCookie(cookie) }
}
NSUserDefaults.standardUserDefaults().synchronize()
}
@brocoo
brocoo / Flip.swift
Last active August 29, 2015 14:25
Flip UIView around any axis
extension CGFloat {
var toRadians: CGFloat {
return self * CGFloat(M_PI) / 180.0
}
var toDegress: CGFloat {
return self * 180 / CGFloat(M_PI)
}
}