├── Demo
├── SpinKitTests
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ ├── SpinKitTests.m
│ └── SpinKitTests-Info.plist
├── SpinKit
│ ├── Images.xcassets
│ │ ├── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── RTTestViewController.h
│ ├── RTAppDelegate.h
│ ├── main.m
│ ├── SpinKit-Prefix.pch
│ ├── LanchScreen.xib
│ ├── SpinKit-Info.plist
│ ├── RTAppDelegate.m
│ └── RTTestViewController.m
└── SpinKit.xcodeproj
│ ├── project.xcworkspace
│ └── contents.xcworkspacedata
│ └── project.pbxproj
├── .gitignore
├── SpinKit.podspec
├── LICENSE
├── SpinKit
├── Animations
│ ├── RTSpinKitArcAnimation.h
│ ├── RTSpinKitWaveAnimation.h
│ ├── RTSpinKitArcAltAnimation.h
│ ├── RTSpinKitBounceAnimation.h
│ ├── RTSpinKitCircleAnimation.h
│ ├── RTSpinKitPlaneAnimation.h
│ ├── RTSpinKitPulseAnimation.h
│ ├── RTSpinKit9CubeGridAnimation.h
│ ├── RTSpinKitWordPressAnimation.h
│ ├── RTSpinKitChasingDotsAnimation.h
│ ├── RTSpinKitCircleFlipAnimation.h
│ ├── RTSpinKitThreeBounceAnimation.h
│ ├── RTSpinKitFadingCircleAnimation.h
│ ├── RTSpinKitWanderingCubesAnimation.h
│ ├── RTSpinKitFadingCircleAltAnimation.h
│ ├── RTSpinKitPlaneAnimation.m
│ ├── RTSpinKitPulseAnimation.m
│ ├── RTSpinKitCircleFlipAnimation.m
│ ├── RTSpinKitFadingCircleAnimation.m
│ ├── RTSpinKitBounceAnimation.m
│ ├── RTSpinKitWaveAnimation.m
│ ├── RTSpinKitThreeBounceAnimation.m
│ ├── RTSpinKitArcAnimation.m
│ ├── RTSpinKitCircleAnimation.m
│ ├── RTSpinKitFadingCircleAltAnimation.m
│ ├── RTSpinKit9CubeGridAnimation.m
│ ├── RTSpinKitWordPressAnimation.m
│ ├── RTSpinKitArcAltAnimation.m
│ ├── RTSpinKitWanderingCubesAnimation.m
│ └── RTSpinKitChasingDotsAnimation.m
├── RTSpinKitAnimating.h
├── RTSpinKitUtils.h
├── RTSpinKitUtils.m
├── RTSpinKitView.h
└── RTSpinKitView.m
└── README.md
/Demo/SpinKitTests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Demo/SpinKit/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Demo/SpinKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Demo/SpinKit/RTTestViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTTestViewController.h
3 | // SpinKit
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RTTestViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | .DS_Store
3 | */build/*
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | profile
14 | *.moved-aside
15 | DerivedData
16 | .idea/
17 | *.hmap
18 | *.xccheckout
19 |
20 | #CocoaPods
21 | Pods
22 |
--------------------------------------------------------------------------------
/Demo/SpinKit/RTAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTAppDelegate.h
3 | // SpinKit
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface RTAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Demo/SpinKit/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // SpinKit
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "RTAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([RTAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Demo/SpinKit/SpinKit-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_3_0
10 | #warning "This project uses features only available in iOS SDK 3.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #endif
17 |
--------------------------------------------------------------------------------
/SpinKit.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'SpinKit'
3 | s.version = '1.2.0'
4 | s.authors = {'Ramon Torres' => 'raymondjavaxx@gmail.com'}
5 | s.homepage = 'https://github.com/raymondjavaxx/SpinKit-ObjC'
6 | s.summary = 'UIActivityIndicatorView replacement with multiple styles and animations.'
7 | s.source = {:git => 'https://github.com/raymondjavaxx/SpinKit-ObjC.git', :tag => '1.2.0'}
8 | s.license = {:type => 'MIT', :file => 'LICENSE'}
9 | s.platform = :ios, '6.0'
10 | s.public_header_files = 'SpinKit/RTSpinKitView.h', 'SpinKit/RTSpinKitAnimating.h'
11 | s.source_files = 'SpinKit/**/*.{m,h}'
12 | s.requires_arc = true
13 | end
14 |
--------------------------------------------------------------------------------
/Demo/SpinKitTests/SpinKitTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // SpinKitTests.m
3 | // SpinKitTests
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface SpinKitTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation SpinKitTests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Demo/SpinKitTests/SpinKitTests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | com.macropoetry.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Ramon Torres
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/Demo/SpinKit/LanchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Demo/SpinKit/SpinKit-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.example.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UILaunchStoryboardName
28 | LanchScreen
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UIStatusBarStyle
34 | UIStatusBarStyleBlackTranslucent
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitArcAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitArcAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitArcAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWaveAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWaveAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitWaveAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitArcAltAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitArcAltAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitArcAltAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitBounceAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitBounceAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitBounceAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitCircleAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitCircleAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitCircleAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitPlaneAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitPlaneAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitPlaneAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitPulseAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitPulseAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitPulseAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKit9CubeGridAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKit9CubeGridAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKit9CubeGridAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWordPressAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWordPressAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitWordPressAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/RTSpinKitAnimating.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitAnimating.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 |
27 | @protocol RTSpinKitAnimating
28 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color;
29 | @end
30 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitChasingDotsAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitChasingDotsAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitChasingDotsAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitCircleFlipAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitCircleFlipAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitCircleFlipAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitThreeBounceAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitThreeBounceAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitThreeBounceAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitFadingCircleAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitFadingCircleAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitFadingCircleAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWanderingCubesAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWanderingCubesAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitWanderingCubesAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitFadingCircleAltAnimation.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitFadingCircleAltAnimation.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitAnimating.h"
27 |
28 | @interface RTSpinKitFadingCircleAltAnimation : NSObject
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/SpinKit/RTSpinKitUtils.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitUtils.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 | #import "RTSpinKitView.h"
27 | #import "RTSpinKitAnimating.h"
28 |
29 | CATransform3D RTSpinKit3DRotationWithPerspective(CGFloat perspective, CGFloat angle, CGFloat x, CGFloat y, CGFloat z);
30 | NSObject* RTSpinKitAnimationFromStyle(RTSpinKitViewStyle style);
31 |
--------------------------------------------------------------------------------
/Demo/SpinKit/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "3x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "3x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "57x57",
31 | "scale" : "1x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "57x57",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "iphone",
45 | "size" : "60x60",
46 | "scale" : "3x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "29x29",
51 | "scale" : "1x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "2x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "40x40",
61 | "scale" : "1x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "2x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "50x50",
71 | "scale" : "1x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "50x50",
76 | "scale" : "2x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "72x72",
81 | "scale" : "1x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "72x72",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ipad",
90 | "size" : "76x76",
91 | "scale" : "1x"
92 | },
93 | {
94 | "idiom" : "ipad",
95 | "size" : "76x76",
96 | "scale" : "2x"
97 | }
98 | ],
99 | "info" : {
100 | "version" : 1,
101 | "author" : "xcode"
102 | }
103 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | SpinKit-ObjC
2 | ============
3 |
4 | UIKit port of [SpinKit](https://github.com/tobiasahlin/SpinKit).
5 |
6 | Installing
7 | ----------
8 |
9 | [CocoaPods](http://cocoapods.org/) is the recommended way for adding SpinKit to your project.
10 |
11 | pod 'SpinKit', '~> 1.1'
12 |
13 | If you are not yet using CocoaPods, I definetly recommend you to check out their [Getting Started guide](http://guides.cocoapods.org/using/getting-started.html) and the [NSHipster article](http://nshipster.com/cocoapods/).
14 |
15 | Usage
16 | -----
17 |
18 | Simply instantiate `RTSpinKitView` with the desired style and add to your view hierarchy.
19 |
20 | #import
21 | ...
22 | RTSpinKitView *spinner = [[RTSpinKitView alloc] initWithStyle:RTSpinKitViewStyleWave];
23 | [self.view addSubview:spinner];
24 |
25 | You can change the size of the spinner by manipulating the `spinnerSize` property. The default size is `37.0`.
26 |
27 | spinner.spinnerSize = 100.0;
28 | [spinner sizeToFit];
29 |
30 | Available styles:
31 |
32 | * `RTSpinKitViewStylePlane`
33 | * `RTSpinKitViewStyleCircleFlip`
34 | * `RTSpinKitViewStyleBounce`
35 | * `RTSpinKitViewStyleWave`
36 | * `RTSpinKitViewStyleWanderingCubes`
37 | * `RTSpinKitViewStylePulse`
38 | * `RTSpinKitViewStyleChasingDots`
39 | * `RTSpinKitViewStyleThreeBounce`
40 | * `RTSpinKitViewStyleCircle`
41 | * `RTSpinKitViewStyle9CubeGrid`
42 | * `RTSpinKitViewStyleWordPress`
43 | * `RTSpinKitViewStyleFadingCircle`
44 | * `RTSpinKitViewStyleFadingCircleAlt`
45 | * `RTSpinKitViewStyleArc`
46 | * `RTSpinKitViewStyleArcAlt`
47 |
48 | MBProgressHUD
49 | -------------
50 |
51 | SpinKit integrates nicely with the amazing [MBProgressHUD](https://github.com/jdg/MBProgressHUD) library:
52 |
53 | RTSpinKitView *spinner = [[RTSpinKitView alloc] initWithStyle:RTSpinKitViewStyleWave color:[UIColor whiteColor]];
54 |
55 | MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
56 | hud.square = YES;
57 | hud.mode = MBProgressHUDModeCustomView;
58 | hud.customView = spinner;
59 | hud.labelText = NSLocalizedString(@"Loading", @"Loading");
60 |
61 | [spinner startAnimating];
62 |
63 | Acknowledgements
64 | ----------------
65 |
66 | Animations based on [SpinKit](https://github.com/tobiasahlin/SpinKit) by [Tobias Ahlin](https://github.com/tobiasahlin).
67 |
68 | [SpinKit Contributors](https://github.com/raymondjavaxx/SpinKit-ObjC/graphs/contributors).
69 |
--------------------------------------------------------------------------------
/Demo/SpinKit/RTAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTAppDelegate.m
3 | // SpinKit
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import "RTAppDelegate.h"
10 | #import "RTTestViewController.h"
11 |
12 | @implementation RTAppDelegate
13 |
14 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
15 | {
16 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
17 | // Override point for customization after application launch.
18 | self.window.backgroundColor = [UIColor whiteColor];
19 | self.window.rootViewController = [[RTTestViewController alloc] init];
20 | [self.window makeKeyAndVisible];
21 | return YES;
22 | }
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application
25 | {
26 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
27 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
28 | }
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application
31 | {
32 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
33 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
34 | }
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application
37 | {
38 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
39 | }
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application
42 | {
43 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
44 | }
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application
47 | {
48 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
49 | }
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitPlaneAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitPlaneAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitPlaneAnimation.h"
26 | #import "RTSpinKitUtils.h"
27 |
28 | @implementation RTSpinKitPlaneAnimation
29 |
30 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
31 | {
32 | CALayer *plane = [CALayer layer];
33 | plane.frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
34 | plane.backgroundColor = color.CGColor;
35 | plane.anchorPoint = CGPointMake(0.5, 0.5);
36 | plane.anchorPointZ = 0.5;
37 | plane.shouldRasterize = YES;
38 | plane.rasterizationScale = [[UIScreen mainScreen] scale];
39 | [layer addSublayer:plane];
40 |
41 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
42 | anim.removedOnCompletion = NO;
43 | anim.repeatCount = HUGE_VALF;
44 | anim.duration = 1.2;
45 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
46 |
47 | anim.timingFunctions = @[
48 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
49 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
51 | ];
52 |
53 | anim.values = @[
54 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, 0, 0, 0, 0)],
55 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, M_PI, 0.0, 1.0,0.0)],
56 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, M_PI, 0.0, 0.0,1.0)]
57 | ];
58 |
59 | [plane addAnimation:anim forKey:@"spinkit-anim"];
60 | }
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitPulseAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitPulseAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitPulseAnimation.h"
26 |
27 | @implementation RTSpinKitPulseAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CALayer *circle = [CALayer layer];
34 | circle.frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
35 | circle.backgroundColor = color.CGColor;
36 | circle.anchorPoint = CGPointMake(0.5, 0.5);
37 | circle.opacity = 1.0;
38 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
39 | circle.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
40 |
41 | CAKeyframeAnimation *scaleAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
42 | scaleAnim.values = @[
43 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
44 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)]
45 | ];
46 |
47 | CAKeyframeAnimation *opacityAnim = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
48 | opacityAnim.values = @[@(1.0), @(0.0)];
49 |
50 | CAAnimationGroup *animGroup = [CAAnimationGroup animation];
51 | animGroup.removedOnCompletion = NO;
52 | animGroup.beginTime = beginTime;
53 | animGroup.repeatCount = HUGE_VALF;
54 | animGroup.duration = 1.0;
55 | animGroup.animations = @[scaleAnim, opacityAnim];
56 | animGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
57 |
58 | [layer addSublayer:circle];
59 | [circle addAnimation:animGroup forKey:@"spinkit-anim"];
60 | }
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitCircleFlipAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitCircleFlipAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitCircleFlipAnimation.h"
26 | #import "RTSpinKitUtils.h"
27 |
28 | @implementation RTSpinKitCircleFlipAnimation
29 |
30 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
31 | {
32 | CALayer *circle = [CALayer layer];
33 | circle.frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
34 | circle.backgroundColor = color.CGColor;
35 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
36 | circle.anchorPoint = CGPointMake(0.5, 0.5);
37 | circle.anchorPointZ = 0.5;
38 | circle.shouldRasterize = YES;
39 | circle.rasterizationScale = [[UIScreen mainScreen] scale];
40 | [layer addSublayer:circle];
41 |
42 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
43 | anim.removedOnCompletion = NO;
44 | anim.repeatCount = HUGE_VALF;
45 | anim.duration = 1.2;
46 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
47 |
48 | anim.timingFunctions = @[
49 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
51 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
52 | ];
53 |
54 | anim.values = @[
55 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, 0, 0, 0, 0)],
56 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, M_PI, 0.0, 1.0, 0.0)],
57 | [NSValue valueWithCATransform3D:RTSpinKit3DRotationWithPerspective(1.0/120.0, M_PI, 0.0, 0.0, 1.0)]
58 | ];
59 |
60 | [circle addAnimation:anim forKey:@"spinkit-anim"];
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitFadingCircleAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitFadingCircleAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitFadingCircleAnimation.h"
26 | #include
27 |
28 | @implementation RTSpinKitFadingCircleAnimation
29 |
30 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
31 | {
32 | NSTimeInterval beginTime = CACurrentMediaTime();
33 |
34 | CGFloat radius = size.width / 2;
35 | CGFloat squareSize = size.width / 6;
36 |
37 | for (NSInteger i=0; i < 12; i+=1) {
38 | CALayer *square = [CALayer layer];
39 |
40 | CGFloat angle = i * (M_PI_2/3.0);
41 | CGFloat x = radius + sinf(angle) * radius;
42 | CGFloat y = radius - cosf(angle) * radius;
43 | square.frame = CGRectMake(x, y, squareSize, squareSize);
44 | square.backgroundColor = color.CGColor;
45 | square.anchorPoint = CGPointMake(0.5, 0.5);
46 | square.opacity = 0.0;
47 |
48 | CATransform3D transform = CATransform3DIdentity;
49 | transform = CATransform3DRotate(transform, angle, 0, 0, 1.0);
50 | square.transform = transform;
51 |
52 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
53 | anim.removedOnCompletion = NO;
54 | anim.repeatCount = HUGE_VALF;
55 | anim.duration = 1.0;
56 | anim.beginTime = beginTime + (0.084 * i);
57 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
58 |
59 | anim.timingFunctions = @[
60 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
61 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
62 | ];
63 |
64 | anim.values = @[@(1.0), @(0.0), @(0.0)];
65 |
66 | [layer addSublayer:square];
67 | [square addAnimation:anim forKey:@"spinkit-anim"];
68 | }
69 | }
70 |
71 | @end
72 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitBounceAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitBounceAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitBounceAnimation.h"
26 |
27 | @implementation RTSpinKitBounceAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | for (NSInteger i=0; i < 2; i+=1) {
34 | CALayer *circle = [CALayer layer];
35 | circle.frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
36 | circle.backgroundColor = color.CGColor;
37 | circle.anchorPoint = CGPointMake(0.5, 0.5);
38 | circle.opacity = 0.6;
39 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
40 | circle.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
41 |
42 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
43 | anim.removedOnCompletion = NO;
44 | anim.repeatCount = HUGE_VALF;
45 | anim.duration = 2.0;
46 | anim.beginTime = beginTime - (1.0 * i);
47 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
48 |
49 | anim.timingFunctions = @[
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
51 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
52 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
53 | ];
54 |
55 | anim.values = @[
56 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
57 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
58 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
59 | ];
60 |
61 | [layer addSublayer:circle];
62 | [circle addAnimation:anim forKey:@"spinkit-anim"];
63 | }
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWaveAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWaveAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitWaveAnimation.h"
26 |
27 | @implementation RTSpinKitWaveAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime() + 1.2;
32 | CGFloat barWidth = size.width / 5.0;
33 |
34 | for (NSInteger i=0; i < 5; i+=1) {
35 | CALayer *bar = [CALayer layer];
36 | bar.backgroundColor = color.CGColor;
37 | bar.frame = CGRectMake(barWidth * i, 0.0, barWidth - 3.0, size.height);
38 | bar.transform = CATransform3DMakeScale(1.0, 0.3, 0.0);
39 |
40 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
41 | anim.removedOnCompletion = NO;
42 | anim.beginTime = beginTime - (1.2 - (0.1 * i));
43 | anim.duration = 1.2;
44 | anim.repeatCount = HUGE_VALF;
45 |
46 | anim.keyTimes = @[@(0.0), @(0.2), @(0.4), @(1.0)];
47 |
48 | anim.timingFunctions = @[
49 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
51 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
52 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
53 | ];
54 |
55 | anim.values = @[
56 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.4, 0.0)],
57 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
58 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.4, 0.0)],
59 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.4, 0.0)]
60 | ];
61 |
62 | [bar addAnimation:anim forKey:@"spinkit-anim"];
63 |
64 | [layer addSublayer:bar];
65 | }
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitThreeBounceAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitThreeBounceAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitThreeBounceAnimation.h"
26 |
27 | @implementation RTSpinKitThreeBounceAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CGFloat offset = size.width / 8;
34 | CGFloat circleSize = offset * 2;
35 |
36 | for (NSInteger i=0; i < 3; i+=1) {
37 | CALayer *circle = [CALayer layer];
38 | circle.frame = CGRectMake(i * 3 * offset, size.height / 2, circleSize, circleSize);
39 | circle.backgroundColor = color.CGColor;
40 | circle.anchorPoint = CGPointMake(0.5, 0.5);
41 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
42 | circle.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
43 |
44 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
45 | anim.removedOnCompletion = NO;
46 | anim.repeatCount = HUGE_VALF;
47 | anim.duration = 1.5;
48 | anim.beginTime = beginTime + (0.25 * i);
49 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
50 |
51 | anim.timingFunctions = @[
52 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
53 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
54 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
55 | ];
56 |
57 | anim.values = @[
58 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
59 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
60 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
61 | ];
62 |
63 | [layer addSublayer:circle];
64 | [circle addAnimation:anim forKey:@"spinkit-anim"];
65 | }
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitArcAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitArcAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitArcAnimation.h"
26 |
27 | @implementation RTSpinKitArcAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer *)layer withSize:(CGSize)size color:(UIColor *)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CGRect frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
34 | CGFloat radius = CGRectGetWidth(frame) / 2.0;
35 | CGPoint center = CGPointMake(CGRectGetMidX(frame), CGRectGetMidY(frame));
36 |
37 | CALayer *arc = [CALayer layer];
38 | arc.frame = CGRectMake(0.0, 0.0, size.width, size.height);
39 | arc.backgroundColor = color.CGColor;
40 | arc.anchorPoint = CGPointMake(0.5, 0.5);
41 | arc.cornerRadius = CGRectGetWidth(arc.frame) / 2.0;
42 |
43 | CGMutablePathRef path = CGPathCreateMutable();
44 | CGPathAddArc(path, NULL, center.x, center.y, radius, 0.0, ((M_PI * 2.0) / 360.0) * 300.0, NO);
45 |
46 | CAShapeLayer *mask = [CAShapeLayer layer];
47 | mask.frame = CGRectMake(0.0, 0.0, size.width, size.height);
48 | mask.path = path;
49 | mask.strokeColor = [[UIColor blackColor] CGColor];
50 | mask.fillColor = [[UIColor clearColor] CGColor];
51 | mask.lineWidth = 2.0;
52 | mask.cornerRadius = frame.size.width / 2.0;
53 | mask.anchorPoint = CGPointMake(0.5, 0.5);
54 |
55 | arc.mask = mask;
56 |
57 | CGPathRelease(path);
58 |
59 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
60 | anim.removedOnCompletion = NO;
61 | anim.repeatCount = HUGE_VALF;
62 | anim.duration = 0.8;
63 | anim.beginTime = beginTime;
64 | anim.timeOffset = [[NSDate date] timeIntervalSince1970];
65 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
66 |
67 | anim.values = @[
68 | [NSNumber numberWithDouble:0.0],
69 | [NSNumber numberWithDouble:M_PI],
70 | [NSNumber numberWithDouble:M_PI * 2.0]
71 | ];
72 |
73 | [layer addSublayer:arc];
74 | [arc addAnimation:anim forKey:@"spinkit-anim"];
75 | }
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitCircleAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitCircleAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitCircleAnimation.h"
26 | #include
27 |
28 | @implementation RTSpinKitCircleAnimation
29 |
30 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
31 | {
32 | NSTimeInterval beginTime = CACurrentMediaTime();
33 |
34 | CGFloat radius = size.width / 2;
35 | CGFloat circleSize = size.width / 4;
36 |
37 | for (NSInteger i=0; i < 8; i+=1) {
38 | CALayer *circle = [CALayer layer];
39 |
40 | CGFloat angle = i * M_PI_4;
41 | CGFloat x = radius + sinf(angle) * radius;
42 | CGFloat y = radius - cosf(angle) * radius;
43 | circle.frame = CGRectMake(x, y, circleSize, circleSize);
44 | circle.backgroundColor = color.CGColor;
45 | circle.anchorPoint = CGPointMake(0.5, 0.5);
46 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
47 | circle.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
48 |
49 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
50 | anim.removedOnCompletion = NO;
51 | anim.repeatCount = HUGE_VALF;
52 | anim.duration = 1.0;
53 | anim.beginTime = beginTime + (0.125 * i);
54 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
55 |
56 | anim.timingFunctions = @[
57 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
58 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
59 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
60 | ];
61 |
62 | anim.values = @[
63 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
64 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
65 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
66 | ];
67 |
68 | [layer addSublayer:circle];
69 | [circle addAnimation:anim forKey:@"spinkit-anim"];
70 | }
71 | }
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitFadingCircleAltAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitFadingCircleAltAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitFadingCircleAltAnimation.h"
26 | #include
27 |
28 | static const CGFloat kRTSpinKitDegToRad = 0.0174532925;
29 |
30 | @implementation RTSpinKitFadingCircleAltAnimation
31 |
32 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color {
33 | NSTimeInterval beginTime = CACurrentMediaTime() ;
34 |
35 | CGFloat radius = size.width / 2;
36 |
37 | for (NSInteger i=0; i < 12; i+=1) {
38 | CALayer *circle = [CALayer layer];
39 | circle.backgroundColor = color.CGColor;
40 | circle.anchorPoint = CGPointMake(0.5, 0.5);
41 | circle.frame = CGRectMake(radius + cosf(kRTSpinKitDegToRad * (30.0 * i)) * radius , radius + sinf(kRTSpinKitDegToRad * (30.0 * i)) * radius, radius / 2, radius / 2);
42 | circle.shouldRasterize = YES;
43 | circle.rasterizationScale = [[UIScreen mainScreen] scale];
44 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
45 |
46 | CAKeyframeAnimation* transformAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
47 |
48 | transformAnimation.values = @[
49 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
50 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
51 | ];
52 |
53 | CAKeyframeAnimation* opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
54 |
55 | opacityAnimation.values = @[
56 | @(1.0),
57 | @(0.0)
58 | ];
59 |
60 | CAAnimationGroup* animationGroup = [[CAAnimationGroup alloc] init];
61 | animationGroup.removedOnCompletion = NO;
62 | animationGroup.repeatCount = HUGE_VALF;
63 | animationGroup.duration = 1.2;
64 | animationGroup.beginTime = beginTime - (1.2 - (0.1 * i));
65 | animationGroup.animations = @[transformAnimation, opacityAnimation];
66 | [circle addAnimation:animationGroup forKey:@"spinkit-anim"];
67 | [layer addSublayer:circle];
68 | }
69 | }
70 |
71 | @end
72 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKit9CubeGridAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKit9CubeGridAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKit9CubeGridAnimation.h"
26 |
27 | @implementation RTSpinKit9CubeGridAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CGFloat squareSize = size.width / 3;
34 |
35 | for (NSInteger sum = 0; sum < 5; sum++)
36 | {
37 | for (NSInteger x = 0; x < 3; x++)
38 | {
39 | for (NSInteger y = 0; y < 3; y++)
40 | {
41 | if (x + y == sum)
42 | {
43 | CALayer *square = [CALayer layer];
44 | square.frame = CGRectMake(x * squareSize, y * squareSize, squareSize, squareSize);
45 | square.backgroundColor = color.CGColor;
46 | square.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
47 |
48 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
49 | anim.removedOnCompletion = NO;
50 | anim.repeatCount = HUGE_VALF;
51 | anim.duration = 1.5;
52 | anim.beginTime = beginTime + (0.1 * sum);
53 | anim.keyTimes = @[@(0.0), @(0.4), @(0.6), @(1.0)];
54 |
55 | anim.timingFunctions = @[
56 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
57 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
58 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
59 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
60 | ];
61 |
62 | anim.values = @[
63 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
64 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
65 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
66 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
67 | ];
68 |
69 | [layer addSublayer:square];
70 | [square addAnimation:anim forKey:@"spinkit-anim"];
71 | }
72 | }
73 | }
74 | }
75 | }
76 |
77 | @end
78 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWordPressAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWordPressAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitWordPressAnimation.h"
26 |
27 | @implementation RTSpinKitWordPressAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CALayer *spinner = [CALayer layer];
34 | spinner.frame = CGRectMake(0.0, 0.0, size.width, size.height);
35 | spinner.anchorPoint = CGPointMake(0.5, 0.5);
36 | spinner.transform = CATransform3DIdentity;
37 | spinner.backgroundColor = color.CGColor;
38 | spinner.shouldRasterize = YES;
39 | spinner.rasterizationScale = [[UIScreen mainScreen] scale];
40 | [layer addSublayer:spinner];
41 |
42 | CAKeyframeAnimation *spinnerAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
43 | spinnerAnim.removedOnCompletion = NO;
44 | spinnerAnim.repeatCount = HUGE_VALF;
45 | spinnerAnim.duration = 1.0;
46 | spinnerAnim.beginTime = beginTime;
47 | spinnerAnim.keyTimes = @[@(0.0), @(0.25), @(0.5), @(0.75), @(1.0)];
48 |
49 | spinnerAnim.timingFunctions = @[
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
51 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
52 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
53 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
54 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
55 | ];
56 |
57 | spinnerAnim.values = @[
58 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 1.0)],
59 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0)],
60 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 0, 1.0)],
61 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3 * M_PI_2, 0, 0, 1.0)],
62 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(2 * M_PI, 0, 0, 1.0)]
63 | ];
64 |
65 | [spinner addAnimation:spinnerAnim forKey:@"spinkit-anim"];
66 |
67 | CAShapeLayer *circleMask = [CAShapeLayer layer];
68 | circleMask.frame = spinner.bounds;
69 | circleMask.fillColor = [UIColor blackColor].CGColor;
70 | circleMask.anchorPoint = CGPointMake(0.5, 0.5);
71 |
72 | CGMutablePathRef path = CGPathCreateMutable();
73 | CGPathAddEllipseInRect(path, nil, spinner.frame);
74 |
75 | CGFloat circleSize = size.width * 0.25;
76 | CGPathAddEllipseInRect(path, nil, CGRectMake(CGRectGetMidX(spinner.frame) - circleSize/2, 3.0, circleSize, circleSize));
77 | CGPathCloseSubpath(path);
78 | circleMask.path = path;
79 | circleMask.fillRule = kCAFillRuleEvenOdd;
80 | CGPathRelease(path);
81 |
82 | spinner.mask = circleMask;
83 | }
84 |
85 | @end
86 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitArcAltAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitArcAltAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitArcAltAnimation.h"
26 |
27 | @implementation RTSpinKitArcAltAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer *)layer withSize:(CGSize)size color:(UIColor *)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CGRect frame = CGRectInset(CGRectMake(0.0, 0.0, size.width, size.height), 2.0, 2.0);
34 | CGFloat radius = CGRectGetWidth(frame) / 2.0;
35 | CGPoint center = CGPointMake(CGRectGetMidX(frame), CGRectGetMidY(frame));
36 |
37 | CALayer *arc = [CALayer layer];
38 | arc.frame = CGRectMake(0.0, 0.0, size.width, size.height);
39 | arc.backgroundColor = color.CGColor;
40 | arc.anchorPoint = CGPointMake(0.5, 0.5);
41 | arc.cornerRadius = CGRectGetWidth(arc.frame) / 2.0;
42 |
43 | CGMutablePathRef path = CGPathCreateMutable();
44 | CGPathAddArc(path, NULL, center.x, center.y, radius, 0.0, M_PI * 2.0, NO);
45 |
46 | CAShapeLayer *mask = [CAShapeLayer layer];
47 | mask.frame = CGRectMake(0.0, 0.0, size.width, size.height);
48 | mask.path = path;
49 | mask.strokeColor = [[UIColor blackColor] CGColor];
50 | mask.fillColor = [[UIColor clearColor] CGColor];
51 | mask.lineWidth = 2.0;
52 | mask.cornerRadius = frame.size.width / 2.0;
53 | mask.anchorPoint = CGPointMake(0.5, 0.5);
54 |
55 | arc.mask = mask;
56 |
57 | CGPathRelease(path);
58 |
59 | CGFloat duration = 1.2;
60 |
61 | CAKeyframeAnimation *strokeEndAnim = [CAKeyframeAnimation animationWithKeyPath:@"strokeEnd"];
62 | strokeEndAnim.removedOnCompletion = NO;
63 | strokeEndAnim.repeatCount = HUGE_VALF;
64 | strokeEndAnim.duration = duration;
65 | strokeEndAnim.beginTime = beginTime;
66 | strokeEndAnim.keyTimes = @[@(0.0), @(0.4), @(1.0)];
67 | strokeEndAnim.values = @[@(0.0), @(1.0), @(1.0)];
68 | strokeEndAnim.timingFunctions = @[
69 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
70 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
71 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
72 | ];
73 |
74 | CAKeyframeAnimation *strokeStartAnim = [CAKeyframeAnimation animationWithKeyPath:@"strokeStart"];
75 | strokeStartAnim.removedOnCompletion = NO;
76 | strokeStartAnim.repeatCount = HUGE_VALF;
77 | strokeStartAnim.duration = duration;
78 | strokeStartAnim.beginTime = beginTime;
79 | strokeStartAnim.keyTimes = @[@(0.0), @(0.6), @(1.0)];
80 | strokeStartAnim.values = @[@(0.0), @(0.0), @(1.0)];
81 | strokeStartAnim.timingFunctions = @[
82 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
83 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
84 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
85 | ];
86 |
87 | [layer addSublayer:arc];
88 | [mask addAnimation:strokeStartAnim forKey:@"spinkit-anim.start"];
89 | [mask addAnimation:strokeEndAnim forKey:@"spinkit-anim.end"];
90 | }
91 |
92 | @end
93 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitWanderingCubesAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitWanderingCubesAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitWanderingCubesAnimation.h"
26 | #include
27 |
28 | static const CGFloat kRTSpinKitDegToRad = 0.0174532925;
29 |
30 | @implementation RTSpinKitWanderingCubesAnimation
31 |
32 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
33 | {
34 | NSTimeInterval beginTime = CACurrentMediaTime();
35 | CGFloat cubeSize = floor(size.width / 3.0);
36 | CGFloat widthMinusCubeSize = size.width - cubeSize;
37 |
38 | for (NSInteger i=0; i<2; i+=1) {
39 | CALayer *cube = [CALayer layer];
40 | cube.backgroundColor = color.CGColor;
41 | cube.frame = CGRectMake(0.0, 0.0, cubeSize, cubeSize);
42 | cube.anchorPoint = CGPointMake(0.5, 0.5);
43 | cube.shouldRasterize = YES;
44 | cube.rasterizationScale = [[UIScreen mainScreen] scale];
45 |
46 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
47 | anim.removedOnCompletion = NO;
48 | anim.beginTime = beginTime - (i * 0.9);
49 | anim.duration = 1.8;
50 | anim.repeatCount = HUGE_VALF;
51 |
52 | anim.keyTimes = @[@(0.0), @(0.25), @(0.50), @(0.75), @(1.0)];
53 |
54 | anim.timingFunctions = @[
55 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
56 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
57 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
58 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
59 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
60 | ];
61 |
62 | CATransform3D t0 = CATransform3DIdentity;
63 |
64 | CATransform3D t1 = CATransform3DMakeTranslation(widthMinusCubeSize, 0.0, 0.0);
65 | t1 = CATransform3DRotate(t1, -90.0 * kRTSpinKitDegToRad, 0.0, 0.0, 1.0);
66 | t1 = CATransform3DScale(t1, 0.5, 0.5, 1.0);
67 |
68 | CATransform3D t2 = CATransform3DMakeTranslation(widthMinusCubeSize, widthMinusCubeSize, 0.0);
69 | t2 = CATransform3DRotate(t2, -180.0 * kRTSpinKitDegToRad, 0.0, 0.0, 1.0);
70 | t2 = CATransform3DScale(t2, 1.0, 1.0, 1.0);
71 |
72 | CATransform3D t3 = CATransform3DMakeTranslation(0.0, widthMinusCubeSize, 0.0);
73 | t3 = CATransform3DRotate(t3, -270.0 * kRTSpinKitDegToRad, 0.0, 0.0, 1.0);
74 | t3 = CATransform3DScale(t3, 0.5, 0.5, 1.0);
75 |
76 | CATransform3D t4 = CATransform3DMakeTranslation(0.0, 0.0, 0.0);
77 | t4 = CATransform3DRotate(t4, -360.0 * kRTSpinKitDegToRad, 0.0, 0.0, 1.0);
78 | t4 = CATransform3DScale(t4, 1.0, 1.0, 1.0);
79 |
80 | anim.values = @[[NSValue valueWithCATransform3D:t0],
81 | [NSValue valueWithCATransform3D:t1],
82 | [NSValue valueWithCATransform3D:t2],
83 | [NSValue valueWithCATransform3D:t3],
84 | [NSValue valueWithCATransform3D:t4]];
85 |
86 | [layer addSublayer:cube];
87 | [cube addAnimation:anim forKey:@"spinkit-anim"];
88 | }
89 | }
90 |
91 | @end
92 |
--------------------------------------------------------------------------------
/SpinKit/RTSpinKitUtils.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitUtils.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitUtils.h"
26 |
27 | // Animations
28 | #import "RTSpinKit9CubeGridAnimation.h"
29 | #import "RTSpinKitBounceAnimation.h"
30 | #import "RTSpinKitChasingDotsAnimation.h"
31 | #import "RTSpinKitCircleAnimation.h"
32 | #import "RTSpinKitCircleFlipAnimation.h"
33 | #import "RTSpinKitFadingCircleAltAnimation.h"
34 | #import "RTSpinKitFadingCircleAnimation.h"
35 | #import "RTSpinKitPlaneAnimation.h"
36 | #import "RTSpinKitPulseAnimation.h"
37 | #import "RTSpinKitThreeBounceAnimation.h"
38 | #import "RTSpinKitWanderingCubesAnimation.h"
39 | #import "RTSpinKitWaveAnimation.h"
40 | #import "RTSpinKitWordPressAnimation.h"
41 | #import "RTSpinKitArcAnimation.h"
42 | #import "RTSpinKitArcAltAnimation.h"
43 |
44 | CATransform3D RTSpinKit3DRotationWithPerspective(CGFloat perspective,
45 | CGFloat angle,
46 | CGFloat x,
47 | CGFloat y,
48 | CGFloat z)
49 | {
50 | CATransform3D transform = CATransform3DIdentity;
51 | transform.m34 = perspective;
52 | return CATransform3DRotate(transform, angle, x, y, z);
53 | }
54 |
55 | NSObject* RTSpinKitAnimationFromStyle(RTSpinKitViewStyle style)
56 | {
57 | switch (style) {
58 | case RTSpinKitViewStyleCustom:
59 | return nil;
60 |
61 | case RTSpinKitViewStylePlane:
62 | return [[RTSpinKitPlaneAnimation alloc] init];
63 |
64 | case RTSpinKitViewStyleCircleFlip:
65 | return [[RTSpinKitCircleFlipAnimation alloc] init];
66 |
67 | case RTSpinKitViewStyleBounce:
68 | return [[RTSpinKitBounceAnimation alloc] init];
69 |
70 | case RTSpinKitViewStyleWave:
71 | return [[RTSpinKitWaveAnimation alloc] init];
72 |
73 | case RTSpinKitViewStyleWanderingCubes:
74 | return [[RTSpinKitWanderingCubesAnimation alloc] init];
75 |
76 | case RTSpinKitViewStylePulse:
77 | return [[RTSpinKitPulseAnimation alloc] init];
78 |
79 | case RTSpinKitViewStyleChasingDots:
80 | return [[RTSpinKitChasingDotsAnimation alloc] init];
81 |
82 | case RTSpinKitViewStyleThreeBounce:
83 | return [[RTSpinKitThreeBounceAnimation alloc] init];
84 |
85 | case RTSpinKitViewStyleCircle:
86 | return [[RTSpinKitCircleAnimation alloc] init];
87 |
88 | case RTSpinKitViewStyle9CubeGrid:
89 | return [[RTSpinKit9CubeGridAnimation alloc] init];
90 |
91 | case RTSpinKitViewStyleWordPress:
92 | return [[RTSpinKitWordPressAnimation alloc] init];
93 |
94 | case RTSpinKitViewStyleFadingCircle:
95 | return [[RTSpinKitFadingCircleAnimation alloc] init];
96 |
97 | case RTSpinKitViewStyleFadingCircleAlt:
98 | return [[RTSpinKitFadingCircleAltAnimation alloc] init];
99 |
100 | case RTSpinKitViewStyleArc:
101 | return [[RTSpinKitArcAnimation alloc] init];
102 |
103 | case RTSpinKitViewStyleArcAlt:
104 | return [[RTSpinKitArcAltAnimation alloc] init];
105 |
106 | default:
107 | NSCAssert(NO, @"Unicorns exist");
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/SpinKit/Animations/RTSpinKitChasingDotsAnimation.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitChasingDotsAnimation.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitChasingDotsAnimation.h"
26 |
27 | @implementation RTSpinKitChasingDotsAnimation
28 |
29 | -(void)setupSpinKitAnimationInLayer:(CALayer*)layer withSize:(CGSize)size color:(UIColor*)color
30 | {
31 | NSTimeInterval beginTime = CACurrentMediaTime();
32 |
33 | CALayer *spinner = [CALayer layer];
34 | spinner.frame = CGRectMake(0.0, 0.0, size.width, size.height);
35 | spinner.anchorPoint = CGPointMake(0.5, 0.5);
36 | spinner.transform = CATransform3DIdentity;
37 | spinner.shouldRasterize = YES;
38 | spinner.rasterizationScale = [[UIScreen mainScreen] scale];
39 | [layer addSublayer:spinner];
40 |
41 | CAKeyframeAnimation *spinnerAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
42 | spinnerAnim.removedOnCompletion = NO;
43 | spinnerAnim.repeatCount = HUGE_VALF;
44 | spinnerAnim.duration = 2.0;
45 | spinnerAnim.beginTime = beginTime;
46 | spinnerAnim.keyTimes = @[@(0.0), @(0.25), @(0.5), @(0.75), @(1.0)];
47 |
48 | spinnerAnim.timingFunctions = @[
49 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
50 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
51 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
52 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
53 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]
54 | ];
55 |
56 | spinnerAnim.values = @[
57 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0, 0, 1.0)],
58 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0)],
59 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 0, 1.0)],
60 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(3 * M_PI_2, 0, 0, 1.0)],
61 | [NSValue valueWithCATransform3D:CATransform3DMakeRotation(2 * M_PI, 0, 0, 1.0)]
62 | ];
63 |
64 | [spinner addAnimation:spinnerAnim forKey:@"spinner-anim"];
65 |
66 | for (NSInteger i=0; i < 2; i+=1) {
67 | CALayer *circle = [CALayer layer];
68 | CGFloat offset = size.width * 0.3 * i;
69 | circle.frame = CGRectOffset(CGRectApplyAffineTransform(CGRectMake(0.0, 0.0, size.width, size.height), CGAffineTransformMakeScale(0.6, 0.6)), offset, offset);
70 | circle.backgroundColor = color.CGColor;
71 | circle.anchorPoint = CGPointMake(0.5, 0.5);
72 | circle.cornerRadius = CGRectGetHeight(circle.bounds) * 0.5;
73 | circle.transform = CATransform3DMakeScale(0.0, 0.0, 0.0);
74 |
75 | CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
76 | anim.removedOnCompletion = NO;
77 | anim.repeatCount = HUGE_VALF;
78 | anim.duration = 2.0;
79 | anim.beginTime = beginTime - (1.0 * i);
80 | anim.keyTimes = @[@(0.0), @(0.5), @(1.0)];
81 |
82 | anim.timingFunctions = @[
83 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
84 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
85 | [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
86 | ];
87 |
88 | anim.values = @[
89 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)],
90 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 0.0)],
91 | [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0.0)]
92 | ];
93 |
94 | [spinner addSublayer:circle];
95 | [circle addAnimation:anim forKey:@"spinkit-anim"];
96 | }
97 | }
98 |
99 | @end
100 |
--------------------------------------------------------------------------------
/SpinKit/RTSpinKitView.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitView.h
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import
26 |
27 | typedef NS_ENUM(NSInteger, RTSpinKitViewStyle) {
28 | RTSpinKitViewStyleCustom,
29 | RTSpinKitViewStylePlane,
30 | RTSpinKitViewStyleCircleFlip,
31 | RTSpinKitViewStyleBounce,
32 | RTSpinKitViewStyleWave,
33 | RTSpinKitViewStyleWanderingCubes,
34 | RTSpinKitViewStylePulse,
35 | RTSpinKitViewStyleChasingDots,
36 | RTSpinKitViewStyleThreeBounce,
37 | RTSpinKitViewStyleCircle,
38 | RTSpinKitViewStyle9CubeGrid,
39 | RTSpinKitViewStyleWordPress,
40 | RTSpinKitViewStyleFadingCircle,
41 | RTSpinKitViewStyleFadingCircleAlt,
42 | RTSpinKitViewStyleArc,
43 | RTSpinKitViewStyleArcAlt
44 | };
45 |
46 | @protocol RTSpinKitAnimating;
47 |
48 | /**
49 | The `RTSpinKitView` defines an activity indicator view. It's interface is very similar
50 | to `UIActivityIndicatorView`.
51 | */
52 | @interface RTSpinKitView : UIView
53 |
54 | /**
55 | The color of the activity indicator.
56 | */
57 | @property (nonatomic, strong) UIColor *color;
58 |
59 | /**
60 | Whether or not the receiver should be hidden when not animating.
61 | */
62 | @property (nonatomic, assign) BOOL hidesWhenStopped;
63 |
64 | /**
65 | The style for the activity indicator.
66 |
67 | @see RTSpinKitViewStyle
68 | */
69 | @property (nonatomic, assign) RTSpinKitViewStyle style;
70 |
71 | /**
72 | The size of the spinner. The view will be automatically resized to fit the activity indicator.
73 | */
74 | @property (nonatomic, assign) CGFloat spinnerSize;
75 |
76 | @property (nonatomic, assign, getter = isStopped) BOOL stopped;
77 |
78 | /**
79 | Returns an object initialized from data in a given unarchiver.
80 |
81 | @return The initialized SpinKit view using the data in aDecoder;
82 | */
83 | - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
84 |
85 | /**
86 | Initializes and returns an activity indicator object.
87 |
88 | @param style The style of the activity indicator.
89 |
90 | @return The newly-initialized SpinKit view.
91 | */
92 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style;
93 |
94 | /**
95 | Initializes and returns an activity indicator object.
96 |
97 | @param style The style of the activity indicator.
98 | @param color The color of the activity indicator.
99 |
100 | @return The newly-initialized SpinKit view.
101 | */
102 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style
103 | color:(UIColor*)color;
104 |
105 | /**
106 | Initializes and returns an activity indicator object.
107 |
108 | @param animator The RTSpinKitAnimating conforming animator object that will perform the animation.
109 | @param color The color of the activity indicator.
110 | @param spinnerSize The size of the spinner.
111 |
112 | @return The newly-initialized SpinKit view.
113 | */
114 | -(instancetype)initWithAnimator:(id)animator
115 | color:(UIColor*)color
116 | spinnerSize:(CGFloat)spinnerSize;
117 |
118 | /**
119 | Initializes and returns an activity indicator object.
120 |
121 | Designated initializer.
122 |
123 | @param style The style of the activity indicator.
124 | @param color The color of the activity indicator.
125 | @param spinnerSize The size of the spinner.
126 |
127 | @return The newly-initialized SpinKit view.
128 | */
129 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style
130 | color:(UIColor*)color
131 | spinnerSize:(CGFloat)spinnerSize NS_DESIGNATED_INITIALIZER;
132 |
133 | /**
134 | Starts the animation of the activity indicator.
135 | */
136 | -(void)startAnimating;
137 |
138 | /**
139 | Stops the animation of the activity indicator.
140 | */
141 | -(void)stopAnimating;
142 |
143 | /**
144 | Returns whether the receiver is animating.
145 |
146 | @return `YES` if the receiver is animating, otherwise `NO`.
147 | */
148 | -(BOOL)isAnimating;
149 |
150 | /**
151 | Sets the color of the spinner.
152 |
153 | @param color The desired color for the spinner.
154 | @param animated Whether or not to animate.
155 | */
156 | -(void)setColor:(UIColor *)color animated:(BOOL)animated;
157 |
158 | @end
159 |
--------------------------------------------------------------------------------
/Demo/SpinKit/RTTestViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTTestViewController.m
3 | // SpinKit
4 | //
5 | // Created by Ramon Torres on 1/1/14.
6 | // Copyright (c) 2014 Ramon Torres. All rights reserved.
7 | //
8 |
9 | #import "RTTestViewController.h"
10 | #import "RTSpinKitView.h"
11 |
12 | @interface RTTestViewController ()
13 | @property (nonatomic, assign) NSInteger numberOfSpinners;
14 | @end
15 |
16 | @implementation RTTestViewController
17 |
18 | -(void)loadView {
19 | self.numberOfSpinners = 0;
20 |
21 | UIScrollView *scrollView = [[UIScrollView alloc] init];
22 | scrollView.pagingEnabled = YES;
23 | scrollView.alwaysBounceVertical = NO;
24 | scrollView.alwaysBounceHorizontal = YES;
25 | scrollView.directionalLockEnabled = YES;
26 | scrollView.backgroundColor = [UIColor darkGrayColor];
27 | self.view = scrollView;
28 |
29 | [self insertSpinnerOfStyle: RTSpinKitViewStylePlane
30 | backgroundColor:[UIColor colorWithRed:0.827 green:0.329 blue:0 alpha:1.0]
31 | label:@"Plane"];
32 |
33 | [self insertSpinnerOfStyle: RTSpinKitViewStyleBounce
34 | backgroundColor:[UIColor colorWithRed:0.173 green:0.243 blue:0.314 alpha:1.0]
35 | label:@"Bounce"];
36 |
37 | [self insertSpinnerOfStyle: RTSpinKitViewStyleWave
38 | backgroundColor:[UIColor colorWithRed:0.102 green:0.737 blue:0.612 alpha:1.0]
39 | label:@"Wave"];
40 |
41 | [self insertSpinnerOfStyle: RTSpinKitViewStyleWanderingCubes
42 | backgroundColor:[UIColor colorWithRed:0.161 green:0.502 blue:0.725 alpha:1.0]
43 | label:@"WanderingCubes"];
44 |
45 | [self insertSpinnerOfStyle: RTSpinKitViewStylePulse
46 | backgroundColor:[UIColor colorWithRed:0.498 green:0.549 blue:0.553 alpha:1.0]
47 | label:@"Pulse"];
48 |
49 | [self insertSpinnerOfStyle: RTSpinKitViewStyleCircleFlip
50 | backgroundColor:[UIColor colorWithWhite:0.200 alpha:1.000]
51 | label:@"CircleFlip"];
52 |
53 | [self insertSpinnerOfStyle: RTSpinKitViewStyleChasingDots
54 | backgroundColor:[UIColor colorWithRed:0.95 green:0.77 blue:0.06 alpha:1.0]
55 | label:@"ChasingDots"];
56 |
57 | [self insertSpinnerOfStyle: RTSpinKitViewStyleThreeBounce
58 | backgroundColor:[UIColor colorWithRed:0.83 green:0.33 blue:0.0 alpha:1.0]
59 | label:@"ThreeBounce"];
60 |
61 | [self insertSpinnerOfStyle: RTSpinKitViewStyleCircle
62 | backgroundColor:[UIColor colorWithRed:0.15 green:0.68 blue:0.38 alpha:1.0]
63 | label:@"Circle"];
64 |
65 | [self insertSpinnerOfStyle: RTSpinKitViewStyle9CubeGrid
66 | backgroundColor:[UIColor colorWithRed:0.68 green:0.15 blue:0.47 alpha:1.0]
67 | label:@"9CubeGrid"];
68 |
69 | [self insertSpinnerOfStyle: RTSpinKitViewStyleWordPress
70 | backgroundColor:[UIColor colorWithRed:0.08 green:0.57 blue:0.86 alpha:1.0]
71 | label:@"WordPress"];
72 |
73 | [self insertSpinnerOfStyle: RTSpinKitViewStyleFadingCircle
74 | backgroundColor:[UIColor colorWithRed:0.0 green:0.60 blue:0.24 alpha:1.0]
75 | label:@"FadingCircle"];
76 |
77 | [self insertSpinnerOfStyle: RTSpinKitViewStyleFadingCircleAlt
78 | backgroundColor:[UIColor colorWithRed:0.60 green:0.0 blue:0.0 alpha:1.0]
79 | label:@"FadingCircleAlt"];
80 |
81 | [self insertSpinnerOfStyle: RTSpinKitViewStyleArc
82 | backgroundColor:[UIColor colorWithRed:0.56 green:0.27 blue:0.68 alpha:1.0]
83 | label:@"Arc"];
84 |
85 | [self insertSpinnerOfStyle: RTSpinKitViewStyleArcAlt
86 | backgroundColor:[UIColor colorWithRed:0.91 green:0.3 blue:0.24 alpha:1.0]
87 | label:@"ArcAlt"];
88 |
89 | CGRect screenBounds = [[UIScreen mainScreen] bounds];
90 | scrollView.contentSize = CGSizeMake(self.numberOfSpinners * CGRectGetWidth(screenBounds), CGRectGetHeight(screenBounds));
91 | }
92 |
93 | -(UIStatusBarStyle)preferredStatusBarStyle {
94 | return UIStatusBarStyleLightContent;
95 | }
96 |
97 | -(void)viewDidLoad {
98 | [super viewDidLoad];
99 | // Do any additional setup after loading the view.
100 | }
101 |
102 | -(void)didReceiveMemoryWarning {
103 | [super didReceiveMemoryWarning];
104 | // Dispose of any resources that can be recreated.
105 | }
106 |
107 | -(void)insertSpinnerOfStyle:(RTSpinKitViewStyle)style
108 | backgroundColor:(UIColor*)backgroundColor
109 | label:(NSString *)labelString
110 | {
111 | CGRect screenBounds = [[UIScreen mainScreen] bounds];
112 | CGFloat screenWidth = CGRectGetWidth(screenBounds);
113 |
114 | RTSpinKitView *spinner = [[RTSpinKitView alloc] initWithStyle:style color:[UIColor whiteColor]];
115 |
116 | spinner.center = CGPointMake(CGRectGetMidX(screenBounds), CGRectGetMidY(screenBounds));
117 | [spinner startAnimating];
118 |
119 | UIView *panel = [[UIView alloc] initWithFrame:CGRectOffset(screenBounds, screenWidth * self.numberOfSpinners, 0.0)];
120 | panel.backgroundColor = backgroundColor;
121 | [panel addSubview:spinner];
122 |
123 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 50.0, screenWidth, 30.0)];
124 | label.text = labelString;
125 | label.font = [UIFont systemFontOfSize:25.0];
126 | label.textColor = [UIColor whiteColor];
127 |
128 | if ([label respondsToSelector:@selector(tintColor)]) {
129 | label.textAlignment = NSTextAlignmentCenter;
130 | } else {
131 | #pragma GCC diagnostic push
132 | #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
133 | label.textAlignment = UITextAlignmentCenter;
134 | #pragma GCC diagnostic pop
135 | label.backgroundColor = [UIColor clearColor];
136 | }
137 |
138 | [panel addSubview:label];
139 |
140 | UIScrollView *scrollView = (UIScrollView*)self.view;
141 | [scrollView addSubview:panel];
142 |
143 | self.numberOfSpinners += 1;
144 | }
145 |
146 | @end
147 |
--------------------------------------------------------------------------------
/SpinKit/RTSpinKitView.m:
--------------------------------------------------------------------------------
1 | //
2 | // RTSpinKitView.m
3 | // SpinKit
4 | //
5 | // Copyright (c) 2014 Ramon Torres
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of
8 | // this software and associated documentation files (the "Software"), to deal in
9 | // the Software without restriction, including without limitation the rights to
10 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 | // the Software, and to permit persons to whom the Software is furnished to do so,
12 | // subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in all
15 | // copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 | //
24 |
25 | #import "RTSpinKitView.h"
26 | #import "RTSpinKitUtils.h"
27 |
28 | #include
29 |
30 | static const CGFloat kRTSpinKitViewDefaultSpinnerSize = 37.0;
31 |
32 | @interface RTSpinKitView ()
33 | @property (nonatomic, strong) id animator;
34 | @end
35 |
36 | @implementation RTSpinKitView
37 |
38 | -(id)initWithCoder:(NSCoder *)aDecoder {
39 | self = [super initWithCoder:aDecoder];
40 | if (self) {
41 | [self applyAnimation];
42 | }
43 |
44 | return self;
45 | }
46 |
47 | -(id)initWithFrame:(CGRect)frame {
48 | self = [self initWithStyle:RTSpinKitViewStylePlane];
49 | if (self) {
50 | self.frame = frame;
51 | }
52 | return self;
53 | }
54 |
55 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style {
56 | return [self initWithStyle:style color:[UIColor grayColor]];
57 | }
58 |
59 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style color:(UIColor *)color {
60 | return [self initWithStyle:style color:color spinnerSize:kRTSpinKitViewDefaultSpinnerSize];
61 | }
62 |
63 | -(instancetype)initWithStyle:(RTSpinKitViewStyle)style color:(UIColor*)color spinnerSize:(CGFloat)spinnerSize {
64 | self = [super initWithFrame:CGRectMake(0.0, 0.0, spinnerSize, spinnerSize)];
65 | if (self) {
66 | _style = style;
67 | _color = color;
68 | _spinnerSize = spinnerSize;
69 | _hidesWhenStopped = YES;
70 | [self applyAnimation];
71 | [self sizeToFit];
72 | }
73 | return self;
74 | }
75 |
76 | -(instancetype)initWithAnimator:(id)animator
77 | color:(UIColor*)color
78 | spinnerSize:(CGFloat)spinnerSize {
79 | self = [self initWithFrame:CGRectMake(0.0, 0.0, spinnerSize, spinnerSize)];
80 | if (self) {
81 | _style = RTSpinKitViewStyleCustom;
82 | _animator = animator;
83 | _color = color;
84 | _spinnerSize = spinnerSize;
85 | _hidesWhenStopped = YES;
86 | [self applyAnimation];
87 | [self sizeToFit];
88 | }
89 | return self;
90 | }
91 |
92 | -(void)setStyle:(RTSpinKitViewStyle)style {
93 | _style = style;
94 | [self applyAnimation];
95 | }
96 |
97 | -(void)setSpinnerSize:(CGFloat)spinnerSize {
98 | _spinnerSize = spinnerSize;
99 | [self applyAnimation];
100 | [self invalidateIntrinsicContentSize];
101 | }
102 |
103 | #pragma mark - Animation
104 |
105 | -(void)applyAnimation {
106 | // Remove any sublayer.
107 | self.layer.sublayers = nil;
108 |
109 | CGSize size = CGSizeMake(self.spinnerSize, self.spinnerSize);
110 | NSObject *animation = self.animator;
111 | if (animation == nil) {
112 | animation = RTSpinKitAnimationFromStyle(self.style);
113 | }
114 | [animation setupSpinKitAnimationInLayer:self.layer withSize:size color:self.color];
115 | }
116 |
117 | #pragma mark - Hooks
118 |
119 | -(void)applicationWillEnterForeground {
120 | if (self.stopped) {
121 | [self pauseLayers];
122 | } else {
123 | [self resumeLayers];
124 | }
125 | }
126 |
127 | -(void)applicationDidEnterBackground {
128 | [self pauseLayers];
129 | }
130 |
131 | -(BOOL)isAnimating {
132 | return !self.isStopped;
133 | }
134 |
135 | -(void)startAnimating {
136 | if (self.isStopped) {
137 | self.hidden = NO;
138 | self.stopped = NO;
139 | [self resumeLayers];
140 | }
141 | }
142 |
143 | -(void)stopAnimating {
144 | if ([self isAnimating]) {
145 | if (self.hidesWhenStopped) {
146 | self.hidden = YES;
147 | }
148 |
149 | self.stopped = YES;
150 | [self pauseLayers];
151 | }
152 | }
153 |
154 | -(void)pauseLayers {
155 | CFTimeInterval pausedTime = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil];
156 | self.layer.speed = 0.0;
157 | self.layer.timeOffset = pausedTime;
158 | }
159 |
160 | -(void)resumeLayers {
161 | CFTimeInterval pausedTime = [self.layer timeOffset];
162 | self.layer.speed = 1.0;
163 | self.layer.timeOffset = 0.0;
164 | self.layer.beginTime = 0.0;
165 | CFTimeInterval timeSincePause = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
166 | self.layer.beginTime = timeSincePause;
167 | }
168 |
169 | -(CGSize)sizeThatFits:(CGSize)size {
170 | return CGSizeMake(self.spinnerSize, self.spinnerSize);
171 | }
172 |
173 | -(CGSize)intrinsicContentSize {
174 | return CGSizeMake(self.spinnerSize, self.spinnerSize);
175 | }
176 |
177 | -(void)setColor:(UIColor *)color {
178 | [self setColor:color animated:NO];
179 | }
180 |
181 | -(void)setColor:(UIColor *)color animated:(BOOL)animated {
182 | UIColor *previousColor = _color;
183 |
184 | _color = color;
185 |
186 | if (animated) {
187 | CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
188 | animation.fromValue = (id)previousColor.CGColor;
189 | animation.toValue = (id)color.CGColor;
190 | animation.duration = 0.5;
191 | animation.removedOnCompletion = YES;
192 |
193 | for (CALayer *l in self.layer.sublayers) {
194 | l.backgroundColor = color.CGColor;
195 | [l addAnimation:animation forKey:@"change-color"];
196 | }
197 | } else {
198 | for (CALayer *l in self.layer.sublayers) {
199 | l.backgroundColor = color.CGColor;
200 | }
201 | }
202 | }
203 |
204 | -(void)dealloc {
205 | [[NSNotificationCenter defaultCenter] removeObserver:self];
206 | }
207 |
208 | @end
209 |
--------------------------------------------------------------------------------
/Demo/SpinKit.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 028F586B19C75CBE0070546A /* RTSpinKitArcAltAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 028F586A19C75CBD0070546A /* RTSpinKitArcAltAnimation.m */; };
11 | 02EE552619C22DA600D58D49 /* RTSpinKitArcAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 02EE552519C22DA600D58D49 /* RTSpinKitArcAnimation.m */; };
12 | F646194B1874E9FB00ED6B1B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F646194A1874E9FB00ED6B1B /* Foundation.framework */; };
13 | F646194D1874E9FB00ED6B1B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F646194C1874E9FB00ED6B1B /* CoreGraphics.framework */; };
14 | F646194F1874E9FB00ED6B1B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F646194E1874E9FB00ED6B1B /* UIKit.framework */; };
15 | F64619571874E9FB00ED6B1B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F64619561874E9FB00ED6B1B /* main.m */; };
16 | F646195B1874E9FB00ED6B1B /* RTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F646195A1874E9FB00ED6B1B /* RTAppDelegate.m */; };
17 | F64619641874E9FC00ED6B1B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F64619631874E9FC00ED6B1B /* XCTest.framework */; };
18 | F64619651874E9FC00ED6B1B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F646194A1874E9FB00ED6B1B /* Foundation.framework */; };
19 | F64619661874E9FC00ED6B1B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F646194E1874E9FB00ED6B1B /* UIKit.framework */; };
20 | F646196E1874E9FC00ED6B1B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F646196C1874E9FC00ED6B1B /* InfoPlist.strings */; };
21 | F64619701874E9FC00ED6B1B /* SpinKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F646196F1874E9FC00ED6B1B /* SpinKitTests.m */; };
22 | F646197E1874EC8D00ED6B1B /* RTTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F646197D1874EC8D00ED6B1B /* RTTestViewController.m */; };
23 | F646198218753E5200ED6B1B /* RTSpinKitView.m in Sources */ = {isa = PBXBuildFile; fileRef = F646198118753E5200ED6B1B /* RTSpinKitView.m */; };
24 | F646198418753F2400ED6B1B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F646198318753F2400ED6B1B /* Images.xcassets */; };
25 | F66970181BD2285000450708 /* LanchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = F66970171BD2285000450708 /* LanchScreen.xib */; settings = {ASSET_TAGS = (); }; };
26 | F6BC23C219B972340055D239 /* RTSpinKit9CubeGridAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23A919B972340055D239 /* RTSpinKit9CubeGridAnimation.m */; };
27 | F6BC23C319B972340055D239 /* RTSpinKitBounceAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23AB19B972340055D239 /* RTSpinKitBounceAnimation.m */; };
28 | F6BC23C419B972340055D239 /* RTSpinKitChasingDotsAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23AD19B972340055D239 /* RTSpinKitChasingDotsAnimation.m */; };
29 | F6BC23C519B972340055D239 /* RTSpinKitCircleAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23AF19B972340055D239 /* RTSpinKitCircleAnimation.m */; };
30 | F6BC23C619B972340055D239 /* RTSpinKitCircleFlipAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23B119B972340055D239 /* RTSpinKitCircleFlipAnimation.m */; };
31 | F6BC23C719B972340055D239 /* RTSpinKitFadingCircleAltAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23B319B972340055D239 /* RTSpinKitFadingCircleAltAnimation.m */; };
32 | F6BC23C819B972340055D239 /* RTSpinKitFadingCircleAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23B519B972340055D239 /* RTSpinKitFadingCircleAnimation.m */; };
33 | F6BC23C919B972340055D239 /* RTSpinKitPlaneAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23B719B972340055D239 /* RTSpinKitPlaneAnimation.m */; };
34 | F6BC23CA19B972340055D239 /* RTSpinKitPulseAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23B919B972340055D239 /* RTSpinKitPulseAnimation.m */; };
35 | F6BC23CB19B972340055D239 /* RTSpinKitThreeBounceAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23BB19B972340055D239 /* RTSpinKitThreeBounceAnimation.m */; };
36 | F6BC23CC19B972340055D239 /* RTSpinKitWanderingCubesAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23BD19B972340055D239 /* RTSpinKitWanderingCubesAnimation.m */; };
37 | F6BC23CD19B972340055D239 /* RTSpinKitWaveAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23BF19B972340055D239 /* RTSpinKitWaveAnimation.m */; };
38 | F6BC23CE19B972340055D239 /* RTSpinKitWordPressAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23C119B972340055D239 /* RTSpinKitWordPressAnimation.m */; };
39 | F6BC23D219B97E820055D239 /* RTSpinKitUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BC23D119B97E820055D239 /* RTSpinKitUtils.m */; };
40 | /* End PBXBuildFile section */
41 |
42 | /* Begin PBXContainerItemProxy section */
43 | F64619671874E9FC00ED6B1B /* PBXContainerItemProxy */ = {
44 | isa = PBXContainerItemProxy;
45 | containerPortal = F646193F1874E9FB00ED6B1B /* Project object */;
46 | proxyType = 1;
47 | remoteGlobalIDString = F64619461874E9FB00ED6B1B;
48 | remoteInfo = SpinKit;
49 | };
50 | /* End PBXContainerItemProxy section */
51 |
52 | /* Begin PBXFileReference section */
53 | 028F586919C75CBD0070546A /* RTSpinKitArcAltAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitArcAltAnimation.h; sourceTree = ""; };
54 | 028F586A19C75CBD0070546A /* RTSpinKitArcAltAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitArcAltAnimation.m; sourceTree = ""; usesTabs = 0; };
55 | 02EE552419C22DA600D58D49 /* RTSpinKitArcAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitArcAnimation.h; sourceTree = ""; };
56 | 02EE552519C22DA600D58D49 /* RTSpinKitArcAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitArcAnimation.m; sourceTree = ""; };
57 | F64619471874E9FB00ED6B1B /* SpinKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpinKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
58 | F646194A1874E9FB00ED6B1B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
59 | F646194C1874E9FB00ED6B1B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
60 | F646194E1874E9FB00ED6B1B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
61 | F64619521874E9FB00ED6B1B /* SpinKit-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SpinKit-Info.plist"; sourceTree = ""; };
62 | F64619561874E9FB00ED6B1B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
63 | F64619581874E9FB00ED6B1B /* SpinKit-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SpinKit-Prefix.pch"; sourceTree = ""; };
64 | F64619591874E9FB00ED6B1B /* RTAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RTAppDelegate.h; sourceTree = ""; };
65 | F646195A1874E9FB00ED6B1B /* RTAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RTAppDelegate.m; sourceTree = ""; };
66 | F64619621874E9FC00ED6B1B /* SpinKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SpinKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
67 | F64619631874E9FC00ED6B1B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
68 | F646196B1874E9FC00ED6B1B /* SpinKitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SpinKitTests-Info.plist"; sourceTree = ""; };
69 | F646196D1874E9FC00ED6B1B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
70 | F646196F1874E9FC00ED6B1B /* SpinKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SpinKitTests.m; sourceTree = ""; };
71 | F646197C1874EC8D00ED6B1B /* RTTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTTestViewController.h; sourceTree = ""; };
72 | F646197D1874EC8D00ED6B1B /* RTTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTTestViewController.m; sourceTree = ""; usesTabs = 0; };
73 | F646198018753E5200ED6B1B /* RTSpinKitView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTSpinKitView.h; path = ../../SpinKit/RTSpinKitView.h; sourceTree = ""; usesTabs = 0; };
74 | F646198118753E5200ED6B1B /* RTSpinKitView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RTSpinKitView.m; path = ../../SpinKit/RTSpinKitView.m; sourceTree = ""; usesTabs = 0; };
75 | F646198318753F2400ED6B1B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
76 | F66970171BD2285000450708 /* LanchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LanchScreen.xib; sourceTree = ""; };
77 | F6BC23A819B972340055D239 /* RTSpinKit9CubeGridAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKit9CubeGridAnimation.h; sourceTree = ""; };
78 | F6BC23A919B972340055D239 /* RTSpinKit9CubeGridAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKit9CubeGridAnimation.m; sourceTree = ""; };
79 | F6BC23AA19B972340055D239 /* RTSpinKitBounceAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitBounceAnimation.h; sourceTree = ""; };
80 | F6BC23AB19B972340055D239 /* RTSpinKitBounceAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitBounceAnimation.m; sourceTree = ""; };
81 | F6BC23AC19B972340055D239 /* RTSpinKitChasingDotsAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitChasingDotsAnimation.h; sourceTree = ""; };
82 | F6BC23AD19B972340055D239 /* RTSpinKitChasingDotsAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitChasingDotsAnimation.m; sourceTree = ""; };
83 | F6BC23AE19B972340055D239 /* RTSpinKitCircleAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitCircleAnimation.h; sourceTree = ""; };
84 | F6BC23AF19B972340055D239 /* RTSpinKitCircleAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitCircleAnimation.m; sourceTree = ""; };
85 | F6BC23B019B972340055D239 /* RTSpinKitCircleFlipAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitCircleFlipAnimation.h; sourceTree = ""; };
86 | F6BC23B119B972340055D239 /* RTSpinKitCircleFlipAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitCircleFlipAnimation.m; sourceTree = ""; };
87 | F6BC23B219B972340055D239 /* RTSpinKitFadingCircleAltAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitFadingCircleAltAnimation.h; sourceTree = ""; };
88 | F6BC23B319B972340055D239 /* RTSpinKitFadingCircleAltAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitFadingCircleAltAnimation.m; sourceTree = ""; };
89 | F6BC23B419B972340055D239 /* RTSpinKitFadingCircleAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitFadingCircleAnimation.h; sourceTree = ""; };
90 | F6BC23B519B972340055D239 /* RTSpinKitFadingCircleAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitFadingCircleAnimation.m; sourceTree = ""; };
91 | F6BC23B619B972340055D239 /* RTSpinKitPlaneAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitPlaneAnimation.h; sourceTree = ""; };
92 | F6BC23B719B972340055D239 /* RTSpinKitPlaneAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitPlaneAnimation.m; sourceTree = ""; };
93 | F6BC23B819B972340055D239 /* RTSpinKitPulseAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitPulseAnimation.h; sourceTree = ""; };
94 | F6BC23B919B972340055D239 /* RTSpinKitPulseAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitPulseAnimation.m; sourceTree = ""; };
95 | F6BC23BA19B972340055D239 /* RTSpinKitThreeBounceAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitThreeBounceAnimation.h; sourceTree = ""; };
96 | F6BC23BB19B972340055D239 /* RTSpinKitThreeBounceAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitThreeBounceAnimation.m; sourceTree = ""; };
97 | F6BC23BC19B972340055D239 /* RTSpinKitWanderingCubesAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitWanderingCubesAnimation.h; sourceTree = ""; };
98 | F6BC23BD19B972340055D239 /* RTSpinKitWanderingCubesAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitWanderingCubesAnimation.m; sourceTree = ""; };
99 | F6BC23BE19B972340055D239 /* RTSpinKitWaveAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitWaveAnimation.h; sourceTree = ""; };
100 | F6BC23BF19B972340055D239 /* RTSpinKitWaveAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitWaveAnimation.m; sourceTree = ""; };
101 | F6BC23C019B972340055D239 /* RTSpinKitWordPressAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTSpinKitWordPressAnimation.h; sourceTree = ""; };
102 | F6BC23C119B972340055D239 /* RTSpinKitWordPressAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RTSpinKitWordPressAnimation.m; sourceTree = ""; };
103 | F6BC23CF19B9724E0055D239 /* RTSpinKitAnimating.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RTSpinKitAnimating.h; path = ../../SpinKit/RTSpinKitAnimating.h; sourceTree = ""; };
104 | F6BC23D019B97E820055D239 /* RTSpinKitUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RTSpinKitUtils.h; path = ../../SpinKit/RTSpinKitUtils.h; sourceTree = ""; };
105 | F6BC23D119B97E820055D239 /* RTSpinKitUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RTSpinKitUtils.m; path = ../../SpinKit/RTSpinKitUtils.m; sourceTree = ""; };
106 | /* End PBXFileReference section */
107 |
108 | /* Begin PBXFrameworksBuildPhase section */
109 | F64619441874E9FB00ED6B1B /* Frameworks */ = {
110 | isa = PBXFrameworksBuildPhase;
111 | buildActionMask = 2147483647;
112 | files = (
113 | F646194D1874E9FB00ED6B1B /* CoreGraphics.framework in Frameworks */,
114 | F646194F1874E9FB00ED6B1B /* UIKit.framework in Frameworks */,
115 | F646194B1874E9FB00ED6B1B /* Foundation.framework in Frameworks */,
116 | );
117 | runOnlyForDeploymentPostprocessing = 0;
118 | };
119 | F646195F1874E9FC00ED6B1B /* Frameworks */ = {
120 | isa = PBXFrameworksBuildPhase;
121 | buildActionMask = 2147483647;
122 | files = (
123 | F64619641874E9FC00ED6B1B /* XCTest.framework in Frameworks */,
124 | F64619661874E9FC00ED6B1B /* UIKit.framework in Frameworks */,
125 | F64619651874E9FC00ED6B1B /* Foundation.framework in Frameworks */,
126 | );
127 | runOnlyForDeploymentPostprocessing = 0;
128 | };
129 | /* End PBXFrameworksBuildPhase section */
130 |
131 | /* Begin PBXGroup section */
132 | F646193E1874E9FB00ED6B1B = {
133 | isa = PBXGroup;
134 | children = (
135 | F64619501874E9FB00ED6B1B /* SpinKit */,
136 | F64619691874E9FC00ED6B1B /* SpinKitTests */,
137 | F64619491874E9FB00ED6B1B /* Frameworks */,
138 | F64619481874E9FB00ED6B1B /* Products */,
139 | );
140 | sourceTree = "";
141 | };
142 | F64619481874E9FB00ED6B1B /* Products */ = {
143 | isa = PBXGroup;
144 | children = (
145 | F64619471874E9FB00ED6B1B /* SpinKit.app */,
146 | F64619621874E9FC00ED6B1B /* SpinKitTests.xctest */,
147 | );
148 | name = Products;
149 | sourceTree = "";
150 | };
151 | F64619491874E9FB00ED6B1B /* Frameworks */ = {
152 | isa = PBXGroup;
153 | children = (
154 | F646194A1874E9FB00ED6B1B /* Foundation.framework */,
155 | F646194C1874E9FB00ED6B1B /* CoreGraphics.framework */,
156 | F646194E1874E9FB00ED6B1B /* UIKit.framework */,
157 | F64619631874E9FC00ED6B1B /* XCTest.framework */,
158 | );
159 | name = Frameworks;
160 | sourceTree = "";
161 | };
162 | F64619501874E9FB00ED6B1B /* SpinKit */ = {
163 | isa = PBXGroup;
164 | children = (
165 | F646197F18753E3800ED6B1B /* Src */,
166 | F64619511874E9FB00ED6B1B /* Supporting Files */,
167 | F64619591874E9FB00ED6B1B /* RTAppDelegate.h */,
168 | F646195A1874E9FB00ED6B1B /* RTAppDelegate.m */,
169 | F646197C1874EC8D00ED6B1B /* RTTestViewController.h */,
170 | F646197D1874EC8D00ED6B1B /* RTTestViewController.m */,
171 | F646198318753F2400ED6B1B /* Images.xcassets */,
172 | );
173 | path = SpinKit;
174 | sourceTree = "";
175 | };
176 | F64619511874E9FB00ED6B1B /* Supporting Files */ = {
177 | isa = PBXGroup;
178 | children = (
179 | F64619521874E9FB00ED6B1B /* SpinKit-Info.plist */,
180 | F64619561874E9FB00ED6B1B /* main.m */,
181 | F64619581874E9FB00ED6B1B /* SpinKit-Prefix.pch */,
182 | F66970171BD2285000450708 /* LanchScreen.xib */,
183 | );
184 | name = "Supporting Files";
185 | sourceTree = "";
186 | };
187 | F64619691874E9FC00ED6B1B /* SpinKitTests */ = {
188 | isa = PBXGroup;
189 | children = (
190 | F646196F1874E9FC00ED6B1B /* SpinKitTests.m */,
191 | F646196A1874E9FC00ED6B1B /* Supporting Files */,
192 | );
193 | path = SpinKitTests;
194 | sourceTree = "";
195 | };
196 | F646196A1874E9FC00ED6B1B /* Supporting Files */ = {
197 | isa = PBXGroup;
198 | children = (
199 | F646196B1874E9FC00ED6B1B /* SpinKitTests-Info.plist */,
200 | F646196C1874E9FC00ED6B1B /* InfoPlist.strings */,
201 | );
202 | name = "Supporting Files";
203 | sourceTree = "";
204 | };
205 | F646197F18753E3800ED6B1B /* Src */ = {
206 | isa = PBXGroup;
207 | children = (
208 | F6BC23A719B972340055D239 /* Animations */,
209 | F6BC23CF19B9724E0055D239 /* RTSpinKitAnimating.h */,
210 | F646198018753E5200ED6B1B /* RTSpinKitView.h */,
211 | F646198118753E5200ED6B1B /* RTSpinKitView.m */,
212 | F6BC23D019B97E820055D239 /* RTSpinKitUtils.h */,
213 | F6BC23D119B97E820055D239 /* RTSpinKitUtils.m */,
214 | );
215 | name = Src;
216 | sourceTree = "";
217 | };
218 | F6BC23A719B972340055D239 /* Animations */ = {
219 | isa = PBXGroup;
220 | children = (
221 | F6BC23A819B972340055D239 /* RTSpinKit9CubeGridAnimation.h */,
222 | F6BC23A919B972340055D239 /* RTSpinKit9CubeGridAnimation.m */,
223 | F6BC23AA19B972340055D239 /* RTSpinKitBounceAnimation.h */,
224 | F6BC23AB19B972340055D239 /* RTSpinKitBounceAnimation.m */,
225 | F6BC23AC19B972340055D239 /* RTSpinKitChasingDotsAnimation.h */,
226 | F6BC23AD19B972340055D239 /* RTSpinKitChasingDotsAnimation.m */,
227 | F6BC23AE19B972340055D239 /* RTSpinKitCircleAnimation.h */,
228 | F6BC23AF19B972340055D239 /* RTSpinKitCircleAnimation.m */,
229 | F6BC23B019B972340055D239 /* RTSpinKitCircleFlipAnimation.h */,
230 | F6BC23B119B972340055D239 /* RTSpinKitCircleFlipAnimation.m */,
231 | F6BC23B219B972340055D239 /* RTSpinKitFadingCircleAltAnimation.h */,
232 | F6BC23B319B972340055D239 /* RTSpinKitFadingCircleAltAnimation.m */,
233 | F6BC23B419B972340055D239 /* RTSpinKitFadingCircleAnimation.h */,
234 | F6BC23B519B972340055D239 /* RTSpinKitFadingCircleAnimation.m */,
235 | F6BC23B619B972340055D239 /* RTSpinKitPlaneAnimation.h */,
236 | F6BC23B719B972340055D239 /* RTSpinKitPlaneAnimation.m */,
237 | F6BC23B819B972340055D239 /* RTSpinKitPulseAnimation.h */,
238 | F6BC23B919B972340055D239 /* RTSpinKitPulseAnimation.m */,
239 | F6BC23BA19B972340055D239 /* RTSpinKitThreeBounceAnimation.h */,
240 | F6BC23BB19B972340055D239 /* RTSpinKitThreeBounceAnimation.m */,
241 | F6BC23BC19B972340055D239 /* RTSpinKitWanderingCubesAnimation.h */,
242 | F6BC23BD19B972340055D239 /* RTSpinKitWanderingCubesAnimation.m */,
243 | F6BC23BE19B972340055D239 /* RTSpinKitWaveAnimation.h */,
244 | F6BC23BF19B972340055D239 /* RTSpinKitWaveAnimation.m */,
245 | F6BC23C019B972340055D239 /* RTSpinKitWordPressAnimation.h */,
246 | F6BC23C119B972340055D239 /* RTSpinKitWordPressAnimation.m */,
247 | 02EE552419C22DA600D58D49 /* RTSpinKitArcAnimation.h */,
248 | 02EE552519C22DA600D58D49 /* RTSpinKitArcAnimation.m */,
249 | 028F586919C75CBD0070546A /* RTSpinKitArcAltAnimation.h */,
250 | 028F586A19C75CBD0070546A /* RTSpinKitArcAltAnimation.m */,
251 | );
252 | name = Animations;
253 | path = ../../SpinKit/Animations;
254 | sourceTree = "";
255 | };
256 | /* End PBXGroup section */
257 |
258 | /* Begin PBXNativeTarget section */
259 | F64619461874E9FB00ED6B1B /* SpinKit */ = {
260 | isa = PBXNativeTarget;
261 | buildConfigurationList = F64619731874E9FC00ED6B1B /* Build configuration list for PBXNativeTarget "SpinKit" */;
262 | buildPhases = (
263 | F64619431874E9FB00ED6B1B /* Sources */,
264 | F64619441874E9FB00ED6B1B /* Frameworks */,
265 | F64619451874E9FB00ED6B1B /* Resources */,
266 | );
267 | buildRules = (
268 | );
269 | dependencies = (
270 | );
271 | name = SpinKit;
272 | productName = SpinKit;
273 | productReference = F64619471874E9FB00ED6B1B /* SpinKit.app */;
274 | productType = "com.apple.product-type.application";
275 | };
276 | F64619611874E9FC00ED6B1B /* SpinKitTests */ = {
277 | isa = PBXNativeTarget;
278 | buildConfigurationList = F64619761874E9FC00ED6B1B /* Build configuration list for PBXNativeTarget "SpinKitTests" */;
279 | buildPhases = (
280 | F646195E1874E9FC00ED6B1B /* Sources */,
281 | F646195F1874E9FC00ED6B1B /* Frameworks */,
282 | F64619601874E9FC00ED6B1B /* Resources */,
283 | );
284 | buildRules = (
285 | );
286 | dependencies = (
287 | F64619681874E9FC00ED6B1B /* PBXTargetDependency */,
288 | );
289 | name = SpinKitTests;
290 | productName = SpinKitTests;
291 | productReference = F64619621874E9FC00ED6B1B /* SpinKitTests.xctest */;
292 | productType = "com.apple.product-type.bundle.unit-test";
293 | };
294 | /* End PBXNativeTarget section */
295 |
296 | /* Begin PBXProject section */
297 | F646193F1874E9FB00ED6B1B /* Project object */ = {
298 | isa = PBXProject;
299 | attributes = {
300 | CLASSPREFIX = RT;
301 | LastUpgradeCheck = 0600;
302 | ORGANIZATIONNAME = "Ramon Torres";
303 | TargetAttributes = {
304 | F64619461874E9FB00ED6B1B = {
305 | DevelopmentTeam = S47GJ5WB9Z;
306 | };
307 | F64619611874E9FC00ED6B1B = {
308 | TestTargetID = F64619461874E9FB00ED6B1B;
309 | };
310 | };
311 | };
312 | buildConfigurationList = F64619421874E9FB00ED6B1B /* Build configuration list for PBXProject "SpinKit" */;
313 | compatibilityVersion = "Xcode 3.2";
314 | developmentRegion = English;
315 | hasScannedForEncodings = 0;
316 | knownRegions = (
317 | en,
318 | );
319 | mainGroup = F646193E1874E9FB00ED6B1B;
320 | productRefGroup = F64619481874E9FB00ED6B1B /* Products */;
321 | projectDirPath = "";
322 | projectRoot = "";
323 | targets = (
324 | F64619461874E9FB00ED6B1B /* SpinKit */,
325 | F64619611874E9FC00ED6B1B /* SpinKitTests */,
326 | );
327 | };
328 | /* End PBXProject section */
329 |
330 | /* Begin PBXResourcesBuildPhase section */
331 | F64619451874E9FB00ED6B1B /* Resources */ = {
332 | isa = PBXResourcesBuildPhase;
333 | buildActionMask = 2147483647;
334 | files = (
335 | F66970181BD2285000450708 /* LanchScreen.xib in Resources */,
336 | F646198418753F2400ED6B1B /* Images.xcassets in Resources */,
337 | );
338 | runOnlyForDeploymentPostprocessing = 0;
339 | };
340 | F64619601874E9FC00ED6B1B /* Resources */ = {
341 | isa = PBXResourcesBuildPhase;
342 | buildActionMask = 2147483647;
343 | files = (
344 | F646196E1874E9FC00ED6B1B /* InfoPlist.strings in Resources */,
345 | );
346 | runOnlyForDeploymentPostprocessing = 0;
347 | };
348 | /* End PBXResourcesBuildPhase section */
349 |
350 | /* Begin PBXSourcesBuildPhase section */
351 | F64619431874E9FB00ED6B1B /* Sources */ = {
352 | isa = PBXSourcesBuildPhase;
353 | buildActionMask = 2147483647;
354 | files = (
355 | 028F586B19C75CBE0070546A /* RTSpinKitArcAltAnimation.m in Sources */,
356 | F6BC23CB19B972340055D239 /* RTSpinKitThreeBounceAnimation.m in Sources */,
357 | F6BC23CA19B972340055D239 /* RTSpinKitPulseAnimation.m in Sources */,
358 | F646195B1874E9FB00ED6B1B /* RTAppDelegate.m in Sources */,
359 | F646198218753E5200ED6B1B /* RTSpinKitView.m in Sources */,
360 | F6BC23C619B972340055D239 /* RTSpinKitCircleFlipAnimation.m in Sources */,
361 | F6BC23C419B972340055D239 /* RTSpinKitChasingDotsAnimation.m in Sources */,
362 | F646197E1874EC8D00ED6B1B /* RTTestViewController.m in Sources */,
363 | F6BC23C319B972340055D239 /* RTSpinKitBounceAnimation.m in Sources */,
364 | F6BC23C719B972340055D239 /* RTSpinKitFadingCircleAltAnimation.m in Sources */,
365 | F6BC23CE19B972340055D239 /* RTSpinKitWordPressAnimation.m in Sources */,
366 | F64619571874E9FB00ED6B1B /* main.m in Sources */,
367 | F6BC23C919B972340055D239 /* RTSpinKitPlaneAnimation.m in Sources */,
368 | F6BC23D219B97E820055D239 /* RTSpinKitUtils.m in Sources */,
369 | F6BC23CC19B972340055D239 /* RTSpinKitWanderingCubesAnimation.m in Sources */,
370 | F6BC23C219B972340055D239 /* RTSpinKit9CubeGridAnimation.m in Sources */,
371 | F6BC23C519B972340055D239 /* RTSpinKitCircleAnimation.m in Sources */,
372 | 02EE552619C22DA600D58D49 /* RTSpinKitArcAnimation.m in Sources */,
373 | F6BC23CD19B972340055D239 /* RTSpinKitWaveAnimation.m in Sources */,
374 | F6BC23C819B972340055D239 /* RTSpinKitFadingCircleAnimation.m in Sources */,
375 | );
376 | runOnlyForDeploymentPostprocessing = 0;
377 | };
378 | F646195E1874E9FC00ED6B1B /* Sources */ = {
379 | isa = PBXSourcesBuildPhase;
380 | buildActionMask = 2147483647;
381 | files = (
382 | F64619701874E9FC00ED6B1B /* SpinKitTests.m in Sources */,
383 | );
384 | runOnlyForDeploymentPostprocessing = 0;
385 | };
386 | /* End PBXSourcesBuildPhase section */
387 |
388 | /* Begin PBXTargetDependency section */
389 | F64619681874E9FC00ED6B1B /* PBXTargetDependency */ = {
390 | isa = PBXTargetDependency;
391 | target = F64619461874E9FB00ED6B1B /* SpinKit */;
392 | targetProxy = F64619671874E9FC00ED6B1B /* PBXContainerItemProxy */;
393 | };
394 | /* End PBXTargetDependency section */
395 |
396 | /* Begin PBXVariantGroup section */
397 | F646196C1874E9FC00ED6B1B /* InfoPlist.strings */ = {
398 | isa = PBXVariantGroup;
399 | children = (
400 | F646196D1874E9FC00ED6B1B /* en */,
401 | );
402 | name = InfoPlist.strings;
403 | sourceTree = "";
404 | };
405 | /* End PBXVariantGroup section */
406 |
407 | /* Begin XCBuildConfiguration section */
408 | F64619711874E9FC00ED6B1B /* Debug */ = {
409 | isa = XCBuildConfiguration;
410 | buildSettings = {
411 | ALWAYS_SEARCH_USER_PATHS = NO;
412 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
413 | CLANG_CXX_LIBRARY = "libc++";
414 | CLANG_ENABLE_MODULES = YES;
415 | CLANG_ENABLE_OBJC_ARC = YES;
416 | CLANG_WARN_BOOL_CONVERSION = YES;
417 | CLANG_WARN_CONSTANT_CONVERSION = YES;
418 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
419 | CLANG_WARN_EMPTY_BODY = YES;
420 | CLANG_WARN_ENUM_CONVERSION = YES;
421 | CLANG_WARN_INT_CONVERSION = YES;
422 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
423 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
424 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
425 | COPY_PHASE_STRIP = NO;
426 | GCC_C_LANGUAGE_STANDARD = gnu99;
427 | GCC_DYNAMIC_NO_PIC = NO;
428 | GCC_OPTIMIZATION_LEVEL = 0;
429 | GCC_PREPROCESSOR_DEFINITIONS = (
430 | "DEBUG=1",
431 | "$(inherited)",
432 | );
433 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
434 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
435 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
436 | GCC_WARN_UNDECLARED_SELECTOR = YES;
437 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
438 | GCC_WARN_UNUSED_FUNCTION = YES;
439 | GCC_WARN_UNUSED_VARIABLE = YES;
440 | IPHONEOS_DEPLOYMENT_TARGET = 7.1;
441 | ONLY_ACTIVE_ARCH = YES;
442 | SDKROOT = iphoneos;
443 | };
444 | name = Debug;
445 | };
446 | F64619721874E9FC00ED6B1B /* Release */ = {
447 | isa = XCBuildConfiguration;
448 | buildSettings = {
449 | ALWAYS_SEARCH_USER_PATHS = NO;
450 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
451 | CLANG_CXX_LIBRARY = "libc++";
452 | CLANG_ENABLE_MODULES = YES;
453 | CLANG_ENABLE_OBJC_ARC = YES;
454 | CLANG_WARN_BOOL_CONVERSION = YES;
455 | CLANG_WARN_CONSTANT_CONVERSION = YES;
456 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
457 | CLANG_WARN_EMPTY_BODY = YES;
458 | CLANG_WARN_ENUM_CONVERSION = YES;
459 | CLANG_WARN_INT_CONVERSION = YES;
460 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
461 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
462 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
463 | COPY_PHASE_STRIP = YES;
464 | ENABLE_NS_ASSERTIONS = NO;
465 | GCC_C_LANGUAGE_STANDARD = gnu99;
466 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
467 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
468 | GCC_WARN_UNDECLARED_SELECTOR = YES;
469 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
470 | GCC_WARN_UNUSED_FUNCTION = YES;
471 | GCC_WARN_UNUSED_VARIABLE = YES;
472 | IPHONEOS_DEPLOYMENT_TARGET = 7.1;
473 | SDKROOT = iphoneos;
474 | VALIDATE_PRODUCT = YES;
475 | };
476 | name = Release;
477 | };
478 | F64619741874E9FC00ED6B1B /* Debug */ = {
479 | isa = XCBuildConfiguration;
480 | buildSettings = {
481 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
482 | CODE_SIGN_IDENTITY = "iPhone Developer";
483 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
484 | GCC_PREFIX_HEADER = "SpinKit/SpinKit-Prefix.pch";
485 | INFOPLIST_FILE = "SpinKit/SpinKit-Info.plist";
486 | IPHONEOS_DEPLOYMENT_TARGET = 6.0;
487 | PRODUCT_NAME = "$(TARGET_NAME)";
488 | TARGETED_DEVICE_FAMILY = "1,2";
489 | WRAPPER_EXTENSION = app;
490 | };
491 | name = Debug;
492 | };
493 | F64619751874E9FC00ED6B1B /* Release */ = {
494 | isa = XCBuildConfiguration;
495 | buildSettings = {
496 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
497 | CODE_SIGN_IDENTITY = "iPhone Developer";
498 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
499 | GCC_PREFIX_HEADER = "SpinKit/SpinKit-Prefix.pch";
500 | INFOPLIST_FILE = "SpinKit/SpinKit-Info.plist";
501 | IPHONEOS_DEPLOYMENT_TARGET = 6.0;
502 | PRODUCT_NAME = "$(TARGET_NAME)";
503 | TARGETED_DEVICE_FAMILY = "1,2";
504 | WRAPPER_EXTENSION = app;
505 | };
506 | name = Release;
507 | };
508 | F64619771874E9FC00ED6B1B /* Debug */ = {
509 | isa = XCBuildConfiguration;
510 | buildSettings = {
511 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SpinKit.app/SpinKit";
512 | FRAMEWORK_SEARCH_PATHS = (
513 | "$(SDKROOT)/Developer/Library/Frameworks",
514 | "$(inherited)",
515 | "$(DEVELOPER_FRAMEWORKS_DIR)",
516 | );
517 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
518 | GCC_PREFIX_HEADER = "SpinKit/SpinKit-Prefix.pch";
519 | GCC_PREPROCESSOR_DEFINITIONS = (
520 | "DEBUG=1",
521 | "$(inherited)",
522 | );
523 | INFOPLIST_FILE = "SpinKitTests/SpinKitTests-Info.plist";
524 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
525 | PRODUCT_NAME = "$(TARGET_NAME)";
526 | TEST_HOST = "$(BUNDLE_LOADER)";
527 | WRAPPER_EXTENSION = xctest;
528 | };
529 | name = Debug;
530 | };
531 | F64619781874E9FC00ED6B1B /* Release */ = {
532 | isa = XCBuildConfiguration;
533 | buildSettings = {
534 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SpinKit.app/SpinKit";
535 | FRAMEWORK_SEARCH_PATHS = (
536 | "$(SDKROOT)/Developer/Library/Frameworks",
537 | "$(inherited)",
538 | "$(DEVELOPER_FRAMEWORKS_DIR)",
539 | );
540 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
541 | GCC_PREFIX_HEADER = "SpinKit/SpinKit-Prefix.pch";
542 | INFOPLIST_FILE = "SpinKitTests/SpinKitTests-Info.plist";
543 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
544 | PRODUCT_NAME = "$(TARGET_NAME)";
545 | TEST_HOST = "$(BUNDLE_LOADER)";
546 | WRAPPER_EXTENSION = xctest;
547 | };
548 | name = Release;
549 | };
550 | /* End XCBuildConfiguration section */
551 |
552 | /* Begin XCConfigurationList section */
553 | F64619421874E9FB00ED6B1B /* Build configuration list for PBXProject "SpinKit" */ = {
554 | isa = XCConfigurationList;
555 | buildConfigurations = (
556 | F64619711874E9FC00ED6B1B /* Debug */,
557 | F64619721874E9FC00ED6B1B /* Release */,
558 | );
559 | defaultConfigurationIsVisible = 0;
560 | defaultConfigurationName = Release;
561 | };
562 | F64619731874E9FC00ED6B1B /* Build configuration list for PBXNativeTarget "SpinKit" */ = {
563 | isa = XCConfigurationList;
564 | buildConfigurations = (
565 | F64619741874E9FC00ED6B1B /* Debug */,
566 | F64619751874E9FC00ED6B1B /* Release */,
567 | );
568 | defaultConfigurationIsVisible = 0;
569 | defaultConfigurationName = Release;
570 | };
571 | F64619761874E9FC00ED6B1B /* Build configuration list for PBXNativeTarget "SpinKitTests" */ = {
572 | isa = XCConfigurationList;
573 | buildConfigurations = (
574 | F64619771874E9FC00ED6B1B /* Debug */,
575 | F64619781874E9FC00ED6B1B /* Release */,
576 | );
577 | defaultConfigurationIsVisible = 0;
578 | defaultConfigurationName = Release;
579 | };
580 | /* End XCConfigurationList section */
581 | };
582 | rootObject = F646193F1874E9FB00ED6B1B /* Project object */;
583 | }
584 |
--------------------------------------------------------------------------------