Abhishek Banthia
9 years ago
4 changed files with 1 additions and 278 deletions
@ -1,20 +0,0 @@ |
|||||||
//
|
|
||||||
// CLAnimatedImages.h
|
|
||||||
//
|
|
||||||
// Code generated using QuartzCode 1.39.16 on 5/10/16.
|
|
||||||
// www.quartzcodeapp.com
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h> |
|
||||||
|
|
||||||
IB_DESIGNABLE |
|
||||||
@interface CLAnimatedImages : NSView |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (void)addUntitled1Animation; |
|
||||||
- (void)addUntitled1AnimationCompletionBlock:(void (^)(BOOL finished))completionBlock; |
|
||||||
- (void)removeAnimationsForAnimationId:(NSString *)identifier; |
|
||||||
- (void)removeAllAnimations; |
|
||||||
|
|
||||||
@end |
|
@ -1,241 +0,0 @@ |
|||||||
// |
|
||||||
// CLAnimatedImages.m |
|
||||||
// |
|
||||||
// Code generated using QuartzCode 1.39.16 on 5/10/16. |
|
||||||
// www.quartzcodeapp.com |
|
||||||
// |
|
||||||
|
|
||||||
#import "CLAnimatedImages.h" |
|
||||||
#import "QCMethod.h" |
|
||||||
|
|
||||||
@interface CLAnimatedImages () |
|
||||||
|
|
||||||
@property (nonatomic, strong) NSMutableDictionary * layers; |
|
||||||
@property (nonatomic, strong) NSMapTable * completionBlocks; |
|
||||||
@property (nonatomic, assign) BOOL updateLayerValueForCompletedAnimation; |
|
||||||
|
|
||||||
|
|
||||||
@end |
|
||||||
|
|
||||||
@implementation CLAnimatedImages |
|
||||||
|
|
||||||
#pragma mark - Life Cycle |
|
||||||
|
|
||||||
- (instancetype)initWithFrame:(CGRect)frame |
|
||||||
{ |
|
||||||
self = [super initWithFrame:frame]; |
|
||||||
if (self) { |
|
||||||
[self setupProperties]; |
|
||||||
[self setupLayers]; |
|
||||||
} |
|
||||||
return self; |
|
||||||
} |
|
||||||
|
|
||||||
- (instancetype)initWithCoder:(NSCoder *)coder |
|
||||||
{ |
|
||||||
self = [super initWithCoder:coder]; |
|
||||||
if (self) { |
|
||||||
[self setupProperties]; |
|
||||||
[self setupLayers]; |
|
||||||
} |
|
||||||
return self; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (void)setupProperties{ |
|
||||||
self.completionBlocks = [NSMapTable mapTableWithKeyOptions:NSPointerFunctionsOpaqueMemory valueOptions:NSPointerFunctionsStrongMemory];; |
|
||||||
self.layers = [NSMutableDictionary dictionary]; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
- (void)setupLayers{ |
|
||||||
[self setWantsLayer:YES]; |
|
||||||
|
|
||||||
CALayer * effect = [CALayer layer]; |
|
||||||
effect.frame = CGRectMake(25.09, 4.93, 230.89, 203.84); |
|
||||||
[self.layer addSublayer:effect]; |
|
||||||
self.layers[@"effect"] = effect; |
|
||||||
//effect effect layer setup |
|
||||||
{ |
|
||||||
CALayer * TopPlaces = [CALayer layer]; |
|
||||||
TopPlaces.frame = CGRectMake(0, -0, 66, 57.02); |
|
||||||
[effect addSublayer:TopPlaces]; |
|
||||||
self.layers[@"TopPlaces"] = TopPlaces; |
|
||||||
CALayer * TopPlaces2 = [CALayer layer]; |
|
||||||
TopPlaces2.frame = CGRectMake(82.46, -0, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces2]; |
|
||||||
self.layers[@"TopPlaces2"] = TopPlaces2; |
|
||||||
CALayer * TopPlaces3 = [CALayer layer]; |
|
||||||
TopPlaces3.frame = CGRectMake(164.92, -0, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces3]; |
|
||||||
self.layers[@"TopPlaces3"] = TopPlaces3; |
|
||||||
CALayer * TopPlaces4 = [CALayer layer]; |
|
||||||
TopPlaces4.frame = CGRectMake(0, 73.43, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces4]; |
|
||||||
self.layers[@"TopPlaces4"] = TopPlaces4; |
|
||||||
CALayer * TopPlaces5 = [CALayer layer]; |
|
||||||
TopPlaces5.frame = CGRectMake(82.46, 73.43, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces5]; |
|
||||||
self.layers[@"TopPlaces5"] = TopPlaces5; |
|
||||||
CALayer * TopPlaces6 = [CALayer layer]; |
|
||||||
TopPlaces6.frame = CGRectMake(164.92, 73.43, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces6]; |
|
||||||
self.layers[@"TopPlaces6"] = TopPlaces6; |
|
||||||
CALayer * TopPlaces7 = [CALayer layer]; |
|
||||||
TopPlaces7.frame = CGRectMake(0, 146.86, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces7]; |
|
||||||
self.layers[@"TopPlaces7"] = TopPlaces7; |
|
||||||
CALayer * TopPlaces8 = [CALayer layer]; |
|
||||||
TopPlaces8.frame = CGRectMake(82.46, 146.86, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces8]; |
|
||||||
self.layers[@"TopPlaces8"] = TopPlaces8; |
|
||||||
CALayer * TopPlaces9 = [CALayer layer]; |
|
||||||
TopPlaces9.frame = CGRectMake(164.92, 146.86, 65.97, 56.99); |
|
||||||
[effect addSublayer:TopPlaces9]; |
|
||||||
self.layers[@"TopPlaces9"] = TopPlaces9; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
[self resetLayerPropertiesForLayerIdentifiers:nil]; |
|
||||||
} |
|
||||||
|
|
||||||
- (void)resetLayerPropertiesForLayerIdentifiers:(NSArray *)layerIds{ |
|
||||||
[CATransaction begin]; |
|
||||||
[CATransaction setDisableActions:YES]; |
|
||||||
|
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces"]){ |
|
||||||
CALayer * TopPlaces = self.layers[@"TopPlaces"]; |
|
||||||
TopPlaces.masksToBounds = YES; |
|
||||||
TopPlaces.contents = [NSImage imageNamed:@"Tokyo"]; |
|
||||||
TopPlaces.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces2"]){ |
|
||||||
CALayer * TopPlaces2 = self.layers[@"TopPlaces2"]; |
|
||||||
TopPlaces2.masksToBounds = YES; |
|
||||||
TopPlaces2.contents = [NSImage imageNamed:@"london"]; |
|
||||||
TopPlaces2.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces3"]){ |
|
||||||
CALayer * TopPlaces3 = self.layers[@"TopPlaces3"]; |
|
||||||
TopPlaces3.masksToBounds = YES; |
|
||||||
TopPlaces3.contents = [NSImage imageNamed:@"SF"]; |
|
||||||
TopPlaces3.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces4"]){ |
|
||||||
CALayer * TopPlaces4 = self.layers[@"TopPlaces4"]; |
|
||||||
TopPlaces4.masksToBounds = YES; |
|
||||||
TopPlaces4.contents = [NSImage imageNamed:@"LA"]; |
|
||||||
TopPlaces4.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces5"]){ |
|
||||||
CALayer * TopPlaces5 = self.layers[@"TopPlaces5"]; |
|
||||||
TopPlaces5.masksToBounds = YES; |
|
||||||
TopPlaces5.contents = [NSImage imageNamed:@"sydney"]; |
|
||||||
TopPlaces5.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces6"]){ |
|
||||||
CALayer * TopPlaces6 = self.layers[@"TopPlaces6"]; |
|
||||||
TopPlaces6.masksToBounds = YES; |
|
||||||
TopPlaces6.contents = [NSImage imageNamed:@"Singapore"]; |
|
||||||
TopPlaces6.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces7"]){ |
|
||||||
CALayer * TopPlaces7 = self.layers[@"TopPlaces7"]; |
|
||||||
TopPlaces7.masksToBounds = YES; |
|
||||||
TopPlaces7.contents = [NSImage imageNamed:@"NYC"]; |
|
||||||
TopPlaces7.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces8"]){ |
|
||||||
CALayer * TopPlaces8 = self.layers[@"TopPlaces8"]; |
|
||||||
TopPlaces8.masksToBounds = YES; |
|
||||||
TopPlaces8.contents = [NSImage imageNamed:@"HongKong"]; |
|
||||||
TopPlaces8.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
if(!layerIds || [layerIds containsObject:@"TopPlaces9"]){ |
|
||||||
CALayer * TopPlaces9 = self.layers[@"TopPlaces9"]; |
|
||||||
TopPlaces9.masksToBounds = YES; |
|
||||||
TopPlaces9.contents = [NSImage imageNamed:@"Paris"]; |
|
||||||
TopPlaces9.contentsGravity = kCAGravityResizeAspectFill; |
|
||||||
} |
|
||||||
|
|
||||||
[CATransaction commit]; |
|
||||||
} |
|
||||||
|
|
||||||
#pragma mark - Animation Setup |
|
||||||
|
|
||||||
- (void)addUntitled1Animation{ |
|
||||||
[self addUntitled1AnimationCompletionBlock:nil]; |
|
||||||
} |
|
||||||
|
|
||||||
- (void)addUntitled1AnimationCompletionBlock:(void (^)(BOOL finished))completionBlock{ |
|
||||||
if (completionBlock){ |
|
||||||
CABasicAnimation * completionAnim = [CABasicAnimation animationWithKeyPath:@"completionAnim"];; |
|
||||||
completionAnim.duration = 4.2; |
|
||||||
completionAnim.delegate = self; |
|
||||||
[completionAnim setValue:@"Untitled1" forKey:@"animId"]; |
|
||||||
[completionAnim setValue:@(NO) forKey:@"needEndAnim"]; |
|
||||||
[self.layer addAnimation:completionAnim forKey:@"Untitled1"]; |
|
||||||
[self.completionBlocks setObject:completionBlock forKey:[self.layer animationForKey:@"Untitled1"]]; |
|
||||||
} |
|
||||||
|
|
||||||
NSString * fillMode = kCAFillModeForwards; |
|
||||||
|
|
||||||
////Effect animation |
|
||||||
CAKeyframeAnimation * effectTransformAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; |
|
||||||
effectTransformAnim.values = @[[NSValue valueWithCATransform3D:CATransform3DIdentity], |
|
||||||
[NSValue valueWithCATransform3D:CATransform3DConcat(CATransform3DMakeScale(1.5, 1.5, 1), CATransform3DMakeRotation(-3 * M_PI/180, -0, -0, 1))], |
|
||||||
[NSValue valueWithCATransform3D:CATransform3DConcat(CATransform3DMakeScale(1.5, 1.5, 1), CATransform3DMakeRotation(3 * M_PI/180, 0, 0, 1))]]; |
|
||||||
effectTransformAnim.keyTimes = @[@0, @0.44, @1]; |
|
||||||
effectTransformAnim.duration = 0.5; |
|
||||||
effectTransformAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; |
|
||||||
effectTransformAnim.autoreverses = YES; |
|
||||||
[effectTransformAnim setValue:@0.4 forKeyPath:@"instanceDelay"]; |
|
||||||
[effectTransformAnim setValue:@0 forKeyPath:@"instanceOrder"]; |
|
||||||
|
|
||||||
CABasicAnimation * effectZPositionAnim = [CABasicAnimation animationWithKeyPath:@"zPosition"]; |
|
||||||
effectZPositionAnim.fromValue = @0; |
|
||||||
effectZPositionAnim.toValue = @100; |
|
||||||
effectZPositionAnim.duration = 0.5; |
|
||||||
effectZPositionAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; |
|
||||||
effectZPositionAnim.autoreverses = YES; |
|
||||||
[effectZPositionAnim setValue:@0.4 forKeyPath:@"instanceDelay"]; |
|
||||||
[effectZPositionAnim setValue:@0 forKeyPath:@"instanceOrder"]; |
|
||||||
|
|
||||||
CAAnimationGroup * effectUntitled1Anim = [QCMethod groupAnimations:@[effectTransformAnim, effectZPositionAnim] fillMode:kCAFillModeBoth forEffectLayer:YES sublayersCount:9]; |
|
||||||
[QCMethod addSublayersAnimation:effectUntitled1Anim forKey:@"effectUntitled1Anim" forLayer:(CALayer *)self.layers[@"effect"]]; |
|
||||||
} |
|
||||||
|
|
||||||
#pragma mark - Animation Cleanup |
|
||||||
|
|
||||||
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ |
|
||||||
void (^completionBlock)(BOOL) = [self.completionBlocks objectForKey:anim];; |
|
||||||
if (completionBlock){ |
|
||||||
[self.completionBlocks removeObjectForKey:anim]; |
|
||||||
if ((flag && self.updateLayerValueForCompletedAnimation) || [[anim valueForKey:@"needEndAnim"] boolValue]){ |
|
||||||
[self updateLayerValuesForAnimationId:[anim valueForKey:@"animId"]]; |
|
||||||
[self removeAnimationsForAnimationId:[anim valueForKey:@"animId"]]; |
|
||||||
} |
|
||||||
completionBlock(flag); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
- (void)updateLayerValuesForAnimationId:(NSString *)identifier{ |
|
||||||
if([identifier isEqualToString:@"Untitled1"]){ |
|
||||||
[QCMethod updateValueFromPresentationLayerForAnimation:[self.layers[@"effect"] animationForKey:@"effectUntitled1Anim"] theLayer:self.layers[@"effect"]]; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
- (void)removeAnimationsForAnimationId:(NSString *)identifier{ |
|
||||||
if([identifier isEqualToString:@"Untitled1"]){ |
|
||||||
[self.layers[@"effect"] removeAnimationForKey:@"effectUntitled1Anim"]; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
- (void)removeAllAnimations{ |
|
||||||
[self.layers enumerateKeysAndObjectsUsingBlock:^(id key, CALayer *layer, BOOL *stop) { |
|
||||||
[layer removeAllAnimations]; |
|
||||||
}]; |
|
||||||
} |
|
||||||
|
|
||||||
@end |
|
@ -1,16 +0,0 @@ |
|||||||
//
|
|
||||||
// CLArrowIndicators.h
|
|
||||||
// Clocker
|
|
||||||
//
|
|
||||||
// Created by Abhishek Banthia on 5/9/16.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h> |
|
||||||
|
|
||||||
@interface CLArrowIndicators : NSControl |
|
||||||
|
|
||||||
@property (strong, nonatomic) NSColor *blackColor; |
|
||||||
@property (assign, nonatomic) BOOL mouseDown; |
|
||||||
|
|
||||||
@end |
|
Loading…
Reference in new issue