Skip to content

Instantly share code, notes, and snippets.

View RuiAAPeres's full-sized avatar
💭
🏔🏃‍♂️

Rui Peres RuiAAPeres

💭
🏔🏃‍♂️
View GitHub Profile
@RuiAAPeres
RuiAAPeres / NSObject+FacebookImage
Created August 29, 2013 21:06
Just a small piece of code to get the basic info + profile picture
+ (void(^)())facebookImageBlockWithCompletionHandler:(void(^)(id profilePicture, id userInformation, NSError *error))completionHandler
{
void(^facebookBlock)()= ^{[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"]
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error)
{
if (!error)
{
@RuiAAPeres
RuiAAPeres / gist:7159304
Created October 25, 2013 18:15
WillShow
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}
@RuiAAPeres
RuiAAPeres / gist:7379148
Last active December 27, 2015 19:39
Returning a Class that complies to a given protocol
Class sportsFeedManager = (Class <RPSportsBoundryProtocol>)[RPInteractor sportsFeedManager];
[sportsFeedManager yahooSportsFeedWithCompletion:^(NSArray *sportsFeeds, NSError *error)
{
if (error)
{
// TODO: Handle the error;
}
else
{
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));
else
@RuiAAPeres
RuiAAPeres / gist:7656683
Last active December 29, 2015 10:19
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.
+ (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
RuiAAPeres / gist:8458663
Created January 16, 2014 16:56
Animating a layer with transition to the right + changing the contents
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
RuiAAPeres / gist:8905610
Last active August 29, 2015 13:56
RACSignal + Filter + Timer
// 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
RuiAAPeres / gist:11190505
Created April 22, 2014 18:59
Swizzling valueForKey: and objectForKey:
#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
RuiAAPeres / gist:11353385
Created April 27, 2014 19:18
Draft new spec ReactiveCocoa
Pod::Spec.new do |s|
s.name = "ReactiveCocoa"
s.version = "2.3"
s.summary = "A framework for composing and transforming streams of values."
s.homepage = "https://github.com/blog/1107-reactivecocoa-is-now-open-source"
s.author = { "Josh Abernathy" => "josh@github.com" }
s.source = { :git => "https://github.com/ReactiveCocoa/ReactiveCocoa.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
RuiAAPeres / gist:11402456
Last active August 29, 2015 14:00
Sam Page's SparkRecording Implementation with Facebook's Pop
//The calculations are coming from [here](https://gist.github.com/d-ronnqvist/11266321) (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];