Skip to content

Instantly share code, notes, and snippets.

View zsiegel's full-sized avatar

Zac Siegel zsiegel

View GitHub Profile
@zsiegel
zsiegel / gist:3939819
Created October 23, 2012 16:18
Core Text - Calculating line height
CGFloat GetLineHeightForFont(CTFontRef iFont)
{
CGFloat lineHeight = 0.0;
check(iFont != NULL);
// Get the ascent from the font, already scaled for the font's size
lineHeight += CTFontGetAscent(iFont);
// Get the descent from the font, already scaled for the font's size
@zsiegel
zsiegel / gist:3939839
Last active October 11, 2015 23:58
Core Text - Line height property inspection
/* Setup our fonts - One system font from Apple and a custom font */
CTFontRef bodyCopyFont = CTFontCreateWithName((__bridge CFStringRef) [Theme fontForBodyOfSize:11].fontName, [Theme fontForBodyOfSize:11].lineHeight, NULL);
CTFontRef systemFont = CTFontCreateWithName((__bridge CFStringRef) [UIFont systemFontOfSize:11].fontName, [UIFont systemFontOfSize:11].lineHeight, NULL);
/* Lets inspect the properties */
NSLog(@"*****************************************************************");
NSLog(@"SYSTEM-FONT LINE HEIGHT PROPERTY %f", [UIFont systemFontOfSize:11].lineHeight);
NSLog(@"SYSTEM-FONT CALCULATED LINE HEIGHT %f", [self getLineHeightForFont:systemFont]); //Custom function
NSLog(@"*****************************************************************");
NSLog(@"CUSTOM-FONT LINE HEIGHT PROPERTY %f", [Theme fontForBodyOfSize:11].lineHeight);
@zsiegel
zsiegel / gist:3954411
Created October 25, 2012 18:12
UIView Rounded Corner Mask
CAShapeLayer *layer = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerBottomLeft) cornerRadii:CGSizeMake(5.0, 5.0)];
layer.path = path.CGPath;
self.layer.mask = layer;
@zsiegel
zsiegel / gist:3954413
Created October 25, 2012 18:12
UIView Rounded Corner Mask
CAShapeLayer *layer = [CAShapeLayer layer];
NSUInteger cornersToRound = UIRectCornerTopLeft | UIRectCornerBottomLeft;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds
byRoundingCorners:cornersToRound
cornerRadii:CGSizeMake(5.0, 5.0)];
layer.path = path.CGPath;
self.layer.mask = layer;
@zsiegel
zsiegel / gist:3969946
Created October 28, 2012 21:15
CouchDB replication filter template
function (doc, req) {
if(doc._deleted){ return true; }
//YOUR CUSTOM LOGIC HERE
return false;
}
@zsiegel
zsiegel / gist:7588299
Last active December 29, 2015 00:49
WTF
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
teamSelector.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
teamSelector.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
@zsiegel
zsiegel / build-version.gradle
Last active January 9, 2020 06:42
Android manifest versioning with gradle and git
task('increaseVersionCode') << {
def manifestFile = file("src/main/AndroidManifest.xml")
def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def versionCode = Integer.parseInt(matcher.group(1))
android.defaultConfig.versionCode = versionCode + 1
println "Setting version code to ${android.defaultConfig.versionCode}"
def manifestContent = matcher.replaceAll("versionCode=\"" + android.defaultConfig.versionCode + "\"")
@zsiegel
zsiegel / gist:7919194
Last active December 31, 2015 02:09
Android Strict Mode
public void setupStrictMode() {
StrictMode.enableDefaults();
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
@zsiegel
zsiegel / gist:ef6573dbbf09ad1ced87
Created November 11, 2014 18:13
SparseArrayTypeAdapter for testing a square-flow bug
package com.square.flow;
import android.util.SparseArray;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
@zsiegel
zsiegel / Presenter
Last active August 29, 2015 14:15
Android MVP Presenter example
public class MyPresenter {
public MyPresenter(IView viewInterface){
}
public void start() {
//this should be called from a onResume() lifecycle method or similar
//subscribe here
}