1
1
//
2
- // NSView+NSViewAnimationWithBlocks.h
3
- // Mail
4
- //
5
- // Created by Robert Widmann on 7/13/12.
6
- // Copyright (c) 2012 CodaFi Inc. All rights reserved.
7
- //
8
- // Taken from // Taken from https://github.com/jasonwiener/Mail/
2
+ // Taken from
3
+ // https://github.com/BigZaphod/Chameleon/blob/master/UIKit/Classes/UIViewAnimationGroup.m
4
+
9
5
10
6
#import < Cocoa/Cocoa.h>
11
7
12
8
typedef NSInteger NSViewAnimationTransition;
13
9
14
10
enum NSViewAnimationTransition{
15
- NSViewAnimationTransitionNone,
16
- NSViewAnimationTransitionFlipFromLeft,
17
- NSViewAnimationTransitionFlipFromRight,
18
- NSViewAnimationTransitionCurlUp,
19
- NSViewAnimationTransitionCurlDown,
11
+ NSViewAnimationTransitionNone,
12
+ NSViewAnimationTransitionFlipFromLeft,
13
+ NSViewAnimationTransitionFlipFromRight,
14
+ NSViewAnimationTransitionCurlUp,
15
+ NSViewAnimationTransitionCurlDown,
16
+ };
17
+
18
+ typedef NS_ENUM (NSInteger , NSViewAnimationGroupTransition) {
19
+ NSViewAnimationGroupTransitionNone,
20
+ NSViewAnimationGroupTransitionFlipFromLeft,
21
+ NSViewAnimationGroupTransitionFlipFromRight,
22
+ NSViewAnimationGroupTransitionCurlUp,
23
+ NSViewAnimationGroupTransitionCurlDown,
24
+ NSViewAnimationGroupTransitionFlipFromTop,
25
+ NSViewAnimationGroupTransitionFlipFromBottom,
26
+ NSViewAnimationGroupTransitionCrossDissolve,
20
27
};
21
28
22
29
typedef NSUInteger NSViewAnimationOptions;
23
30
24
31
enum NSViewAnimationOptions{
25
- NSViewAnimationOptionLayoutSubviews = 1 << 0 ,
26
- NSViewAnimationOptionAllowUserInteraction = 1 << 1 , // turn on user interaction while animating
27
- NSViewAnimationOptionBeginFromCurrentState = 1 << 2 , // start all views from current value, not initial value
28
- NSViewAnimationOptionRepeat = 1 << 3 , // repeat animation indefinitely
29
- NSViewAnimationOptionAutoreverse = 1 << 4 , // if repeat, run animation back and forth
30
- NSViewAnimationOptionOverrideInheritedDuration = 1 << 5 , // ignore nested duration
31
- NSViewAnimationOptionOverrideInheritedCurve = 1 << 6 , // ignore nested curve
32
- NSViewAnimationOptionAllowAnimatedContent = 1 << 7 , // animate contents (applies to transitions only)
33
- NSViewAnimationOptionShowHideTransitionViews = 1 << 8 , // flip to/from hidden state instead of adding/removing
34
-
35
- NSViewAnimationOptionCurveEaseInOut = 0 << 16 , // default
36
- NSViewAnimationOptionCurveEaseIn = 1 << 16 ,
37
- NSViewAnimationOptionCurveEaseOut = 2 << 16 ,
38
- NSViewAnimationOptionCurveLinear = 3 << 16 ,
39
-
40
- NSViewAnimationOptionTransitionNone = 0 << 20 , // default
41
- NSViewAnimationOptionTransitionFlipFromLeft = 1 << 20 ,
42
- NSViewAnimationOptionTransitionFlipFromRight = 2 << 20 ,
43
- NSViewAnimationOptionTransitionCurlUp = 3 << 20 ,
44
- NSViewAnimationOptionTransitionCurlDown = 4 << 20 ,
45
- NSViewAnimationOptionTransitionCrossDissolve = 5 << 20 ,
46
- NSViewAnimationOptionTransitionFlipFromTop = 6 << 20 ,
47
- NSViewAnimationOptionTransitionFlipFromBottom = 7 << 20 ,
32
+ NSViewAnimationOptionLayoutSubviews = 1 << 0 ,
33
+ NSViewAnimationOptionAllowUserInteraction = 1 << 1 , // turn on user interaction while animating
34
+ NSViewAnimationOptionBeginFromCurrentState = 1 << 2 , // start all views from current value, not initial value
35
+ NSViewAnimationOptionRepeat = 1 << 3 , // repeat animation indefinitely
36
+ NSViewAnimationOptionAutoreverse = 1 << 4 , // if repeat, run animation back and forth
37
+ NSViewAnimationOptionOverrideInheritedDuration = 1 << 5 , // ignore nested duration
38
+ NSViewAnimationOptionOverrideInheritedCurve = 1 << 6 , // ignore nested curve
39
+ NSViewAnimationOptionAllowAnimatedContent = 1 << 7 , // animate contents (applies to transitions only)
40
+ NSViewAnimationOptionShowHideTransitionViews = 1 << 8 , // flip to/from hidden state instead of adding/removing
41
+
42
+ NSViewAnimationOptionCurveEaseInOut = 0 << 16 , // default
43
+ NSViewAnimationOptionCurveEaseIn = 1 << 16 ,
44
+ NSViewAnimationOptionCurveEaseOut = 2 << 16 ,
45
+ NSViewAnimationOptionCurveLinear = 3 << 16 ,
46
+
47
+ NSViewAnimationOptionTransitionNone = 0 << 20 , // default
48
+ NSViewAnimationOptionTransitionFlipFromLeft = 1 << 20 ,
49
+ NSViewAnimationOptionTransitionFlipFromRight = 2 << 20 ,
50
+ NSViewAnimationOptionTransitionCurlUp = 3 << 20 ,
51
+ NSViewAnimationOptionTransitionCurlDown = 4 << 20 ,
52
+ NSViewAnimationOptionTransitionCrossDissolve = 5 << 20 ,
53
+ NSViewAnimationOptionTransitionFlipFromTop = 6 << 20 ,
54
+ NSViewAnimationOptionTransitionFlipFromBottom = 7 << 20 ,
48
55
};
49
56
50
57
typedef NSInteger NSViewAnimationCurve;
51
58
52
59
enum NSViewAnimationCurve{
53
- NSViewAnimationCurveEaseInOut, // slow at beginning and end
54
- NSViewAnimationCurveEaseIn, // slow at beginning
55
- NSViewAnimationCurveEaseOut, // slow at end
56
- NSViewAnimationCurveLinear
60
+ NSViewAnimationCurveEaseInOut, // slow at beginning and end
61
+ NSViewAnimationCurveEaseIn, // slow at beginning
62
+ NSViewAnimationCurveEaseOut, // slow at end
63
+ NSViewAnimationCurveLinear
57
64
};
58
65
66
+ extern BOOL NSViewAnimationOptionIsSet (NSViewAnimationOptions options, NSViewAnimationOptions option);
67
+
59
68
@interface NSView (NSViewAnimationWithBlocks)
60
69
61
70
+ (void )animateWithDuration : (NSTimeInterval )duration delay : (NSTimeInterval )delay options : (NSViewAnimationOptions)options animations : (void (^)(void ))animations completion : (void (^)(BOOL finished))completion ;
@@ -66,23 +75,14 @@ enum NSViewAnimationCurve{
66
75
67
76
+ (void )beginAnimations : (NSString *)animationID context : (void *)context ;
68
77
+ (void )commitAnimations ;
69
- + (void )setAnimationBeginsFromCurrentState : (BOOL )beginFromCurrentState ;
70
- + (void )setAnimationCurve : (NSViewAnimationCurve)curve ;
71
- + (void )setAnimationDelay : (NSTimeInterval )delay ;
72
- + (void )setAnimationDelegate : (id )delegate ;
73
- + (void )setAnimationDidStopSelector : (SEL )selector ;
74
- + (void )setAnimationDuration : (NSTimeInterval )duration ;
75
- + (void )setAnimationRepeatAutoreverses : (BOOL )repeatAutoreverses ;
76
- + (void )setAnimationRepeatCount : (float )repeatCount ;
77
- + (void )setAnimationWillStartSelector : (SEL )selector ;
78
78
+ (BOOL )areAnimationsEnabled ;
79
79
+ (void )setAnimationsEnabled : (BOOL )enabled ;
80
80
81
81
@end
82
82
83
83
@interface NSViewBlockAnimationDelegate : NSObject {
84
- void (^_completion)(BOOL finished);
85
- BOOL _ignoreInteractionEvents;
84
+ void (^_completion)(BOOL finished);
85
+ BOOL _ignoreInteractionEvents;
86
86
}
87
87
88
88
@property (nonatomic , copy ) void (^completion)(BOOL finished);
@@ -92,29 +92,24 @@ enum NSViewAnimationCurve{
92
92
93
93
@end
94
94
95
- @interface NSViewAnimationGroup : NSObject {
96
- @private
97
- NSString *_name;
98
- void *_context;
99
- NSUInteger _waitingAnimations;
100
- BOOL _didSendStartMessage;
101
- NSTimeInterval _animationDelay;
102
- NSTimeInterval _animationDuration;
103
- NSViewAnimationCurve _animationCurve;
104
- NSViewAnimationTransition _transitionType;
105
- id _animationDelegate;
106
- SEL _animationDidStopSelector;
107
- SEL _animationWillStartSelector;
108
- BOOL _animationBeginsFromCurrentState;
109
- BOOL _animationRepeatAutoreverses;
110
- float _animationRepeatCount;
111
- CFTimeInterval _animationBeginTime;
112
- CALayer *_transitionLayer;
113
- BOOL _transitionShouldCache;
114
- NSMutableSet *_animatingViews;
115
- }
116
-
117
- + (id )animationGroupWithName : (NSString *)theName context : (void *)theContext ;
95
+ @interface NSViewAnimationGroup : NSObject
96
+
97
+ @property (nonatomic , copy ) NSString *name;
98
+ @property (nonatomic , assign ) void *context;
99
+ @property (nonatomic , copy ) void (^completionBlock)(BOOL finished);
100
+ @property (nonatomic , assign ) BOOL allowUserInteraction;
101
+ @property (nonatomic , assign ) BOOL beginsFromCurrentState;
102
+ @property (nonatomic , assign ) NSViewAnimationCurve curve;
103
+ @property (nonatomic , assign ) NSTimeInterval delay;
104
+ @property (nonatomic , strong ) id delegate;
105
+ @property (nonatomic , assign ) SEL didStopSelector;
106
+ @property (nonatomic , assign ) SEL willStartSelector;
107
+ @property (nonatomic , assign ) NSTimeInterval duration;
108
+ @property (nonatomic , assign ) BOOL repeatAutoreverses;
109
+ @property (nonatomic , assign ) float repeatCount;
110
+ @property (nonatomic , assign ) NSViewAnimationGroupTransition transition;
111
+
112
+ - (id )initWithAnimationOptions : (NSViewAnimationOptions)options ;
118
113
119
114
- (id )actionForView : (NSView *)view forKey : (NSString *)keyPath ;
120
115
0 commit comments