Add PromiseKit dependency

- Added PromiseKit dependency
This commit is contained in:
2018-11-15 22:08:00 -04:00
parent 2689d86c18
commit be7b6b5881
541 changed files with 46282 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
//
// UIView+PromiseKit_UIAnimation.m
// YahooDenaStudy
//
// Created by Masafumi Yoshida on 2014/07/11.
// Copyright (c) 2014 DeNA. All rights reserved.
//
#import <PromiseKit/PromiseKit.h>
#import "UIView+AnyPromise.h"
#define CopyPasta \
NSAssert([NSThread isMainThread], @"UIKit animation must be performed on the main thread"); \
\
if (![NSThread isMainThread]) { \
id error = [NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"Animation was attempted on a background thread"}]; \
return [AnyPromise promiseWithValue:error]; \
} \
\
PMKResolver resolve = nil; \
AnyPromise *promise = [[AnyPromise alloc] initWithResolver:&resolve];
@implementation UIView (PromiseKit)
+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations {
return [self promiseWithDuration:duration delay:0 options:0 animations:animations];
}
+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void(^)(void))animations
{
CopyPasta;
[UIView animateWithDuration:duration delay:delay options:options animations:animations completion:^(BOOL finished) {
resolve(@(finished));
}];
return promise;
}
+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void(^)(void))animations
{
CopyPasta;
[UIView animateWithDuration:duration delay:delay usingSpringWithDamping:dampingRatio initialSpringVelocity:velocity options:options animations:animations completion:^(BOOL finished) {
resolve(@(finished));
}];
return promise;
}
+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options keyframeAnimations:(void(^)(void))animations
{
CopyPasta;
[UIView animateKeyframesWithDuration:duration delay:delay options:options animations:animations completion:^(BOOL finished) {
resolve(@(finished));
}];
return promise;
}
@end