Skip to content

Instantly share code, notes, and snippets.


Rui Peres RuiAAPeres

View GitHub Profile
RuiAAPeres / NSObject+FacebookImage
Created Aug 29, 2013
Just a small piece of code to get the basic info + profile picture
View NSObject+FacebookImage
+ (void(^)())facebookImageBlockWithCompletionHandler:(void(^)(id profilePicture, id userInformation, NSError *error))completionHandler
void(^facebookBlock)()= ^{[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"]
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error)
if (!error)
View gist:7159304
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
RuiAAPeres / gist:7379148
Last active Dec 27, 2015
Returning a Class that complies to a given protocol
View gist:7379148
Class sportsFeedManager = (Class <RPSportsBoundryProtocol>)[RPInteractor sportsFeedManager];
[sportsFeedManager yahooSportsFeedWithCompletion:^(NSArray *sportsFeeds, NSError *error)
if (error)
// TODO: Handle the error;
View gist:7452910
void SwizzleClassMethod(Class c, SEL orig, SEL new) {
Method origMethod = class_getClassMethod(c, orig);
Method newMethod = class_getClassMethod(c, new);
c = object_getClass((id)c);
if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))
class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
RuiAAPeres / gist:7656683
Last active Dec 29, 2015
The parseData is the private method, where the parsing actually works (NSData => NSDictionary). The other one parseLoginData (the public method), builds the model object from the Dictionary.
View gist:7656683
+ (void)parseLoginData:(NSData *)responseData withCompletionBlock:(MJDataSourceCompletionBlock)completionBlock
[self parseData:responseData withCompletionBlock:^(id response, MJError *error)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
MJLoginResponse *loginResponse = [[MJLoginResponse alloc] initWithLoginResponse:response];
dispatch_async(dispatch_get_main_queue(), ^(void)
RuiAAPeres / gist:8458663
Created Jan 16, 2014
Animating a layer with transition to the right + changing the contents
View gist:8458663
CAAnimationGroup *animationsGroup = [CAAnimationGroup animation];
CATransition *t = [CATransition animation];
t.type = kCATransitionPush;
t.subtype = kCATransitionFromRight;
t.duration = 1.0f;
id currentContents = _layer.contents;
_layer.contents = (id)([UIImage imageNamed:@"image2.jpg"].CGImage);
RuiAAPeres / gist:8905610
Last active Aug 29, 2015
RACSignal + Filter + Timer
View gist:8905610
// The goal is to make a server call every 5 minutes, but I want to make sure the user has at least moved 500 meters, how would go after this:
[RACObserve(self, userLocation) filter:^BOOL(CLLocation *newLocation)
return [newLocation distanceFromLocation:self.userLocation]>APH500Meters;
// I was thinking on creating a scheduler so I got this:
RACScheduler *scheduler = [RACScheduler schedulerWithPriority:RACSchedulerPriorityDefault];
RuiAAPeres / gist:11190505
Created Apr 22, 2014
Swizzling valueForKey: and objectForKey:
View gist:11190505
#import <objc/runtime.h>
@implementation NSDictionary (Swizzled)
static void swizzInstance(Class class, SEL originalSel, SEL newSel)
Method origMethod = class_getInstanceMethod(class, originalSel);
Method newMethod = class_getInstanceMethod(class, newSel);
method_exchangeImplementations(origMethod, newMethod);
RuiAAPeres / gist:11353385
Created Apr 27, 2014
Draft new spec ReactiveCocoa
View gist:11353385 do |s| = "ReactiveCocoa"
s.version = "2.3"
s.summary = "A framework for composing and transforming streams of values."
s.homepage = "" = { "Josh Abernathy" => "" }
s.source = { :git => "", :tag => "v#{s.version}" }
s.license = 'MIT'
s.description = "ReactiveCocoa (RAC) is an Objective-C framework for Functional Reactive Programming. It provides APIs for composing and transforming streams of values."
RuiAAPeres / gist:11402456
Last active Aug 29, 2015
Sam Page's SparkRecording Implementation with Facebook's Pop
View gist:11402456
//The calculations are coming from [here]( (thanks David!)
- (void)updateAnimations
CGFloat duration = self.duration * (1.f - [[self.progressLayers firstObject] strokeEnd]);
CGFloat strokeEndFinal = 1.f;
for (CAShapeLayer *progressLayer in self.progressLayers)
POPBasicAnimation *popEndAnimation = [POPBasicAnimation animation];