Skip to content

Instantly share code, notes, and snippets.

View myell0w's full-sized avatar
🙌

Matthias Tretter myell0w

🙌
View GitHub Profile
@myell0w
myell0w / UIView+QueuedAnimations.m
Created April 14, 2014 10:09
UIView queued animations
@implementation UIView (AnimationQueue)
+ (void)mtd_animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion semaphore:(dispatch_semaphore_t)semaphore {
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self animateWithDuration:duration animations:animations completion:^(BOOL finished) {
dispatch_semaphore_signal(semaphore);
if (completion) {
completion(finished);
}

Keybase proof

I hereby claim:

  • I am myell0w on github.
  • I am myell0w (https://keybase.io/myell0w) on keybase.
  • I have a public key whose fingerprint is 61A1 EE8B 9D4D EE36 96CC 60D7 25EC 905A 888F 5AD8

To claim this, I am signing this object:

-- Start Genius for current playing track and display Growl Notification
tell application "iTunes"
activate
set curr_track to name of current track
set curr_artist to artist of current track
set visible of front browser window to true
end tell
tell application "System Events"
@myell0w
myell0w / gist:966302
Created May 11, 2011 11:21
MKMapView Annotations
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
// .. Code for other annotations …
if ([annotation isMemberOfClass:[SPCluster class]]) {
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:kClusterAnnotationViewIdentifier];
if (!annotationView) {
annotationView = [[SPClusterView alloc] initWithAnnotation:annotation reuseIdentifier:kClusterAnnotationViewIdentifier];
}
@myell0w
myell0w / gist:1373050
Created November 17, 2011 12:41
MTLocation How-To
// MTLocation How-To
- (void)viewDidLoad {
[super viewDidLoad];
// 1. Create MapView
self.mapView = [MKMapView mapViewInSuperview:self.view];
// 2. Create BarButtonItem
self.locationItem = [MTLocateMeBarButtonItem userTrackingBarButtonItemForMapView:self.mapView]; // @property (nonatomic, strong) UIBarButtonItem *locationItem;
@myell0w
myell0w / gist:3006517
Created June 27, 2012 20:05
Objective-C Annotations Syntax Example
@interface AnnotationTest : NSObject
@MyAnnotation (type="surname")
@property (nonatomic, copy) NSString *name;
@end
@myell0w
myell0w / BoldDynamicText
Last active January 2, 2016 14:09
Respect the accessibility setting "Bold Text" on iOS7, when implementing Dynamic Type with a custom font.
BOOL MTDIsBoldTextEnabled(void) {
static BOOL boldTextEnabled = NO;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Hack that checks if the "bold text" flag in the accessibility settings is enabled
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
boldTextEnabled = [font.fontName rangeOfString:@"MediumP4"].location != NSNotFound;
});
@myell0w
myell0w / ArrayCast.swift
Created September 1, 2016 13:16
NSMutableArray -> [TypedArray]
func allNodesWithoutSorting() -> [MNCNode] {
let allNodes = NSMutableArray(object: self.mainNode)
self.addAll(subnodesOfNode: self.mainNode, toArray: allNodes)
// trick the compiler…
return (allNodes as AnyObject as? [MNCNode]) ?? []
}
@myell0w
myell0w / LongPressGestureRecognizer.swift
Created July 19, 2017 14:49
A UIGestureRecognizer that fires either on long-press or on a force-touch (3D Touch ™️)
import Foundation
import UIKit
import UIKit.UIGestureRecognizerSubclass
/// A Gesture Recognizer that fires either on long press, or on "3D Touch"
final class MNTLongPressGestureRecognizer: UILongPressGestureRecognizer {
// MARK: - Properties
@myell0w
myell0w / UIView+Hierarchy.swift
Created June 13, 2018 12:05
Traverse View Hierarchy Upwards
extension UIView {
func findFirstSuperview<T>(ofClass viewClass: T.Type, where predicate: (T) -> Bool) -> T? where T: UIView {
var view: UIView? = self
while view != nil {
if let typedView = view as? T, predicate(typedView) {
break
}
view = view?.superview
}