Skip to content

Instantly share code, notes, and snippets.

View jrturton's full-sized avatar

Richard Turton jrturton

View GitHub Profile
import Foundation
func coalesce<T>(args: T?...) -> T? {
for possible in args {
if let actual = possible {
return actual
}
}
return nil
}
@jrturton
jrturton / UIImageOrientation to TIFF orientation
Created February 27, 2014 11:35
Converting UImageOrientation to TIFF orientation values
switch (originalOrientation)
{
case UIImageOrientationUp:
orientationValue = @1;
break;
case UIImageOrientationDown:
orientationValue = @3;
break;
case UIImageOrientationLeft:
orientationValue = @8;
@jrturton
jrturton / gist:4690976
Created February 1, 2013 12:16
switch out a screenful of content for another one, in a left or right direction.
-(void)changeArticle:(UIButton*)sender
{
CGFloat multiplier = (sender == self.nextButton) ? 1.0 : -1.0;
// Render to an image and drop in the new version
UIGraphicsBeginImageContextWithOptions(self.articleContainer.frame.size, YES, 0);
CGContextRef c = UIGraphicsGetCurrentContext();
[self.articleContainer.layer renderInContext:c];
UIImage *articleScreenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
@jrturton
jrturton / GridTableViewController.m
Last active December 18, 2015 03:48
UICollectionView fed by NSFetchedResultsController
#pragma mark - NSFetchedResultsControllerDelegate
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
self.pendingObjectUpdates = [NSMutableArray array];
self.pendingSectionUpdates = [NSMutableArray array];
}
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
@jrturton
jrturton / NSString+CurrencyIndicators.m
Created June 7, 2013 10:07
Category for adding currency indicators to NSStrings
@interface NSString (CurrencyIndicators)
-(NSString*)stringByAddingCurrencyIndicator:(NSString*)indicatorCode;
@end
@implementation NSString (CurrencyIndicators)
-(NSString*)stringByAddingCurrencyIndicator:(NSString*)indicatorCode
{
#import "UIResponder+FirstResponder.h"
static __weak id currentFirstResponder;
@implementation UIResponder (FirstResponder)
+(id)currentFirstResponder {
currentFirstResponder = nil;
[[UIApplication sharedApplication] sendAction:@selector(findFirstResponder:) to:nil from:nil forEvent:nil];
return currentFirstResponder;
@jrturton
jrturton / NSString+URLCharacters.m
Created July 31, 2013 09:53
Escaping reserved URL characters
-(NSString*)stringByPercentEscapingReservedURLCharacters
{
NSString *cleanedString = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge CFStringRef)self, NULL, (CFStringRef)@"!#$&'()*+,/:;=?@[]", kCFStringEncodingUTF8));
return cleanedString;
}
@jrturton
jrturton / UIImage+HLImages.m
Created July 31, 2013 10:49
Tint mono image
-(UIImage*)tintedMonoImageWithColor:(UIColor*)color
{
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f);
[color setFill];
CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height);
UIRectFill(bounds);
[self drawInRect:bounds blendMode:kCGBlendModeDestinationIn alpha:1.0];
UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
@jrturton
jrturton / gist:6364558
Last active December 21, 2015 20:58
Navigation back buttons themed like iOS7, for iOS 5 and 6
-(void)themeBackButtons
{
// Appearance proxy methods
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage backButtonImage] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(7.0, 0.0) forBarMetrics:UIBarMetricsDefault];
}
// The image above is generated by this method
+(UIImage *)backButtonImage
{
@jrturton
jrturton / gist:6881601
Created October 8, 2013 08:41
Increment build number at every archive or release build
if [ $CONFIGURATION = "Release" ] || [ $CONFIGURATION = "Dev" ]; then
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
fi