├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── UAProgressView-Example ├── Podfile ├── Podfile.lock ├── Pods │ ├── BuildHeaders │ │ └── UAProgressView │ │ │ └── UAProgressView.h │ ├── Headers │ │ └── UAProgressView │ │ │ └── UAProgressView.h │ ├── Local Podspecs │ │ └── UAProgressView.podspec │ ├── Manifest.lock │ ├── Pods-UAProgressView-Private.xcconfig │ ├── Pods-UAProgressView-dummy.m │ ├── Pods-UAProgressView-prefix.pch │ ├── Pods-UAProgressView.xcconfig │ ├── Pods-acknowledgements.markdown │ ├── Pods-acknowledgements.plist │ ├── Pods-dummy.m │ ├── Pods-environment.h │ ├── Pods-resources.sh │ ├── Pods.xcconfig │ └── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcuserdata │ │ └── coneybeare.xcuserdatad │ │ └── xcschemes │ │ ├── Pods-UAProgressView.xcscheme │ │ ├── Pods.xcscheme │ │ └── xcschememanagement.plist ├── UAProgressView-Example.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcshareddata │ │ │ ├── UACircularProgressView-Example.xccheckout │ │ │ └── UAProgressView-Example.xccheckout │ │ └── xcuserdata │ │ │ └── coneybeare.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── WorkspaceSettings.xcsettings │ └── xcuserdata │ │ └── coneybeare.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── UAProgressView-Example.xcscheme │ │ └── xcschememanagement.plist ├── UAProgressView-Example.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── UAProgressView-Example.xccheckout │ └── xcuserdata │ │ └── coneybeare.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── WorkspaceSettings.xcsettings └── UAProgressView-Example │ ├── Base.lproj │ └── Main.storyboard │ ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── LaunchImage.launchimage │ │ └── Contents.json │ └── background.imageset │ │ ├── Contents.json │ │ └── background@2x.png │ ├── UAAdvancedExampleViewController.h │ ├── UAAdvancedExampleViewController.m │ ├── UAAppDelegate.h │ ├── UAAppDelegate.m │ ├── UABasicExampleViewController.h │ ├── UABasicExampleViewController.m │ ├── UAProgressView-Example-Info.plist │ ├── UAProgressView-Example-Prefix.pch │ ├── en.lproj │ └── InfoPlist.strings │ ├── horn.caf │ └── main.m ├── UAProgressView.h ├── UAProgressView.m └── UAProgressView.podspec /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcworkspace 22 | # *.pbxproj 23 | 24 | # Bundler 25 | .bundle 26 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # UAProgressView Changelog 2 | 3 | ### 0.1.1 4 | - Prevent quick flash of 100% progress upon init 5 | 6 | ### 0.1.0 7 | - Initial Commit 8 | 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Urban Apps 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, 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, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | UAProgressView is a simple and lightweight, yet powerful animated circular progress view. 2 | 3 | ![UAProgressView](https://raw.githubusercontent.com/UrbanApps/UAProgressView/assets/UAProgressView.gif "Example 1") 4 | 5 | ## Installation 6 | 7 | Installation is made simple with [CocoaPods](http://cocoapods.org/). If you want to do it the old fashioned way, just add `UAProgressView.h` and `UAProgressView.m` into your project. 8 | 9 | ```ruby 10 | pod 'UAProgressView' 11 | ``` 12 | 13 | Then, simply place this line in any file that uses UAProgressView. 14 | 15 | ```objc 16 | #import 17 | ``` 18 | 19 | UAProgressView works on iOS 6.0 and up. 20 | 21 | ## Usage 22 | 23 | ### Simple Setup 24 | 25 | UAProgressView has sensible defaults to make setup a breeze. 26 | 27 | 1. Add a custom view to your storyboard, xib or create a UAProgressView in code. 28 | 2. Set the progress on your UAProgressView by calling `setProgress:` 29 | 30 | The progress should be a `CGFloat` between 0 and 1, but we will round to the closest if over/under. 31 | 32 | The default color used for UAProgressView is the view's `tintColor`, and it will travel up the superview tree as expected to set it. 33 | 34 | -- 35 | 36 | ### Custom Setup 37 | 38 | There are many different configuration options to setup UAProgressView the way you want it. 39 | 40 | 41 | ##### Center View 42 | 43 | Rather than force a stop button, label or some other canned central view, you can set the center view to be anything you want. In the example below, the `centralView` is set to a custom `UILabel`. 44 | 45 | The `centralView` will be centered in the view but not resized, so plan accordingly when setting it up. It sits above the progress view in the layer hierarchy so it receives first tap. 46 | 47 | There is no central view setup by default. 48 | 49 | ```objc 50 | @property (nonatomic, strong) UIView *centralView; 51 | ``` 52 | 53 | Example usage: 54 | 55 | ```objc 56 | UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60.0, 32.0)]; 57 | textLabel.font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:32]; 58 | textLabel.textAlignment = NSTextAlignmentCenter; 59 | textLabel.textColor = self.progressView.tintColor; 60 | textLabel.backgroundColor = [UIColor clearColor]; 61 | self.progressView.centralView = textLabel; 62 | ``` 63 | 64 | ##### Border Width 65 | 66 | Border width is the thickness of the outer circle. It is set to 1.0 by default. 67 | 68 | ```objc 69 | @property (nonatomic, assign) CGFloat borderWidth; 70 | ``` 71 | 72 | Example usage: 73 | 74 | ```objc 75 | self.progressView.borderWidth = 2.0; 76 | ``` 77 | 78 | ##### Line Width 79 | 80 | Line width is the thickness of the inner circle. It is set to 1.0 by default. 81 | 82 | ```objc 83 | @property (nonatomic, assign) CGFloat lineWidth; 84 | ``` 85 | 86 | Example usage: 87 | 88 | ```objc 89 | self.progressView.lineWidth = 2.0; 90 | ``` 91 | 92 | 93 | ##### Selection Indication 94 | 95 | When `fillOnTouch` is enabled (default is `YES`), UAProgressView will immediately fill the view with the `tintColor`. If the touch is then removed (ie: selected) the fill will fade out, similar to the iOS 7 phone app. 96 | 97 | ```objc 98 | @property (nonatomic, assign) BOOL fillOnTouch; 99 | ``` 100 | 101 | Example usage: 102 | 103 | ```objc 104 | self.progressView.fillOnTouch = YES; 105 | ``` 106 | 107 | 108 | #### Animation Duration 109 | 110 | The duration over which to animate the progress set. Default is 0.3 seconds. animationDuration < 0 is ignored. 111 | 112 | ```objc 113 | @property (nonatomic, assign) CFTimeInterval animationDuration; 114 | ``` 115 | 116 | The `animationDuration` variable is only used when calling `setProgress:animated:` with `YES`. 117 | 118 | 119 | #### Long Press Gesture 120 | 121 | This is the gesture that is created on the progress view to handle selection and (optionally) the long press. You can use this to customize the minimum duration required to invoke the selection gesture. 122 | 123 | ```objc 124 | @property (nonatomic, strong) UILongPressGestureRecognizer *gestureRecognizer; 125 | ``` 126 | 127 | 128 | #### Long Press Duration 129 | 130 | Specify an optional long press duration that will fire the `didLongPressBlock` when reached. Must be > 0.0. Default is 0.0 (disabled). 131 | 132 | ```objc 133 | @property (nonatomic, assign) CGFloat longPressDuration; 134 | ``` 135 | 136 | 137 | #### Long Press Cancelling Selection 138 | 139 | By default, the long press action will also trigger the selection action. You can disable this functionality with this property. Default is NO. 140 | 141 | ```objc 142 | @property (nonatomic, assign) BOOL longPressCancelsSelect; 143 | ``` 144 | 145 | 146 | ### Event Blocks 147 | 148 | 149 | ##### On Select 150 | 151 | You can set a block to be called when there was a `touchUpInside` on the progress view. 152 | 153 | ```objc 154 | @property (nonatomic, copy) void (^didSelectBlock)(UAProgressView *progressView); 155 | ``` 156 | 157 | Example usage: 158 | 159 | ```objc 160 | self.progressView.didSelectBlock = ^(UAProgressView *progressView){ 161 | AudioServicesPlaySystemSound(_horn); 162 | }; 163 | ``` 164 | 165 | ##### On Long Press 166 | 167 | You can set a block to be called when there was an optional long press on the progress view. The long press is triggered when the `longPressDuration` is reached. 168 | 169 | ```objc 170 | @property (nonatomic, copy) void (^didLongPressBlock)(UAProgressView *progressView); 171 | ``` 172 | 173 | Example usage: 174 | 175 | ```objc 176 | self.progressView. didLongPressBlock = ^(UAProgressView *progressView){ 177 | // Do something after long pressing the progress view 178 | }; 179 | ``` 180 | 181 | ##### On Progress Change 182 | 183 | You can set a block to be called whenever the progress is changed. This can be useful if the object updating the progress does not know about the central view. 184 | 185 | ```objc 186 | @property (nonatomic, copy) void (^progressChangedBlock)(UAProgressView *progressView, CGFloat progress); 187 | ``` 188 | 189 | Example usage: 190 | 191 | ```objc 192 | self.progressView.progressChangedBlock = ^(UAProgressView *progressView, CGFloat progress){ 193 | [(UILabel *)progressView.centralView setText:[NSString stringWithFormat:@"%2.0f%%", progress * 100]]; 194 | }; 195 | ``` 196 | 197 | 198 | ##### On Fill Change 199 | 200 | You can set a block to be called whenever the fill color is changed in your progress view. This is useful to invert colors on the central view, or do other visual updates when the progress view is filled. 201 | 202 | ```objc 203 | @property (nonatomic, copy) void (^fillChangedBlock)(UAProgressView *progressView, BOOL filled, BOOL animated); 204 | ``` 205 | 206 | Example usage: 207 | 208 | ```objc 209 | self.progressView.fillChangedBlock = ^(UAProgressView *progressView, BOOL filled, BOOL animated){ 210 | UIColor *color = (filled ? [UIColor whiteColor] : progressView.tintColor); 211 | if (animated) { 212 | [UIView animateWithDuration:0.3 animations:^{ 213 | [(UILabel *)progressView.centralView setTextColor:color]; 214 | }]; 215 | } else { 216 | [(UILabel *)progressView.centralView setTextColor:color]; 217 | } 218 | }; 219 | ``` 220 | 221 | ### Configuration/Usage Examples 222 | 223 | ![UAProgressView](https://raw.githubusercontent.com/UrbanApps/UAProgressView/assets/UAProgressView2.gif "Example 2") 224 | 225 | For more information on how to use and setup UAProgressView, please see the example project. 226 | 227 | ## UAProgressView vs. MRCircularProgressView 228 | 229 | [MRCircularProgressView](https://github.com/mrackwitz/MRProgress) is great and was the inspiration for UAProgressView, but it lacked much of the customization that UAProgressView now offers. UAProgressView is probably a better fit for you instead of MRProgress if you want: 230 | 231 | 1. More customization 232 | 2. More control 233 | 3. No additional unused classes 234 | 4. Block based interface 235 | 236 | ## Bugs / Pull Requests 237 | Let us know if you see ways to improve UAProgressView or see something wrong with it. We are happy to pull in pull requests that have clean code, and have features that are useful for most people. 238 | 239 | ## What Does UA stand for? 240 | [Urban Apps](http://urbanapps.com). We make neat stuff. Check us out. 241 | 242 | ## Open-Source Urban Apps Projects 243 | 244 | - [Armchair](https://github.com/UrbanApps/Armchair) - A simple yet powerful App Review Manager for iOS and OSX (Swift) 245 | - [UAModalPanel](https://github.com/UrbanApps/UAModalPanel) - An animated modal panel alternative for iOS 246 | - [UAAppReviewManager](https://github.com/UrbanApps/UAAppReviewManager) - An app review prompting tool for iOS and Mac App Store apps. 247 | - [UALogger](https://github.com/UrbanApps/UALogger) - A logging utility for Mac/iOS apps 248 | - [UAObfuscatedString](https://github.com/UrbanApps/UAObfuscatedString) - A simple NSString category to hide sensitive strings 249 | - [Urban](https://github.com/UrbanApps/Urban) - An Xcode color scheme that uses a soft dark background, with subtle blue, orange and yellow colors 250 | 251 | ## Feeling Generous? 252 | 253 | If you want to thank us for open-sourcing UAProgressView, you can [buy one of our apps](http://itunes.com/apps/urbanapps?at=11l7j9&ct=github) or even donate something small. 254 | 255 | Click here to lend your support to: Support UAProgressView Development and make a donation at www.pledgie.com ! 256 | 257 | -------------------------------------------------------------------------------- /UAProgressView-Example/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '6.0' 2 | pod 'UAProgressView', :path => '..' -------------------------------------------------------------------------------- /UAProgressView-Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - UAProgressView (0.1.1) 3 | 4 | DEPENDENCIES: 5 | - UAProgressView (from `..`) 6 | 7 | EXTERNAL SOURCES: 8 | UAProgressView: 9 | :path: .. 10 | 11 | SPEC CHECKSUMS: 12 | UAProgressView: 1e1c5e7b6c4327b3e44aef996f4010adb0743d98 13 | 14 | COCOAPODS: 0.33.1 15 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/BuildHeaders/UAProgressView/UAProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAProgressView.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UAProgressView : UIView 12 | 13 | /** 14 | * Called when the progress view is filled with tintColor, or removed 15 | * 16 | * Example usage would be to invert the colors on your centralView 17 | */ 18 | @property (nonatomic, copy) void (^fillChangedBlock)(UAProgressView *progressView, BOOL filled, BOOL animated); 19 | 20 | /** 21 | * Called on touchUpInside 22 | * 23 | * Example usage would be to invert the colors on your centralView 24 | */ 25 | @property (nonatomic, copy) void (^didSelectBlock)(UAProgressView *progressView); 26 | 27 | /** 28 | * Called on setProgress 29 | * 30 | * Example usage would be to update any central view labels 31 | */ 32 | @property (nonatomic, copy) void (^progressChangedBlock)(UAProgressView *progressView, CGFloat progress); 33 | 34 | /** 35 | * The view in the center of the progress view. 36 | * 37 | * It will be centered in the view but not resized, so plan accordingly 38 | * 39 | * Can be set to anything you want though, a label with the progress %, a stop button etc... 40 | * Sits above the progressView in the layer heirarchy so it receives first tap. 41 | * 42 | * Defaults to nil. 43 | */ 44 | @property (nonatomic, strong) UIView *centralView; 45 | 46 | /** 47 | * Fills in the circle with the tintColor on touch. 48 | * 49 | * Fills immediately, but fades when touch removed. 50 | * 51 | * Default is YES. 52 | */ 53 | @property (nonatomic, assign) BOOL fillOnTouch UI_APPEARANCE_SELECTOR; 54 | 55 | /** 56 | * The line width of the outer circle 57 | * 58 | * Default is 1.0. 59 | */ 60 | @property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR; 61 | 62 | /** 63 | * The line width of the inner circle 64 | * 65 | * Default is 2.0. 66 | */ 67 | @property (nonatomic, assign) CGFloat lineWidth UI_APPEARANCE_SELECTOR; 68 | 69 | /** 70 | * The color of the stroke and border 71 | * 72 | * Defaults to #007aff 73 | */ 74 | @property (nonatomic, strong) UIColor *tintColor; 75 | 76 | /** 77 | * Gets/sets the progress, from 0.0 to 1.0. Progress < 0 is set to 0.0, progress > 1 is set to 1.0 78 | */ 79 | @property (nonatomic, assign) CGFloat progress; 80 | 81 | /** 82 | * The duration over which to animate the progress set. Default is 0.3 seconds. animationDuration < 0 is ignored 83 | */ 84 | @property (nonatomic, assign) CFTimeInterval animationDuration UI_APPEARANCE_SELECTOR; 85 | 86 | /** 87 | * Changes progress animated. 88 | * 89 | * Progress < 0 is set to 0.0, progress > 1 is set to 1.0 90 | * The animation will be always linear. 91 | * 92 | * @param progress The new progress value. 93 | * @param animated Specify YES to animate the change or NO if you do not want the change to be animated. 94 | */ 95 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 96 | 97 | @end 98 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Headers/UAProgressView/UAProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAProgressView.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UAProgressView : UIView 12 | 13 | /** 14 | * Called when the progress view is filled with tintColor, or removed 15 | * 16 | * Example usage would be to invert the colors on your centralView 17 | */ 18 | @property (nonatomic, copy) void (^fillChangedBlock)(UAProgressView *progressView, BOOL filled, BOOL animated); 19 | 20 | /** 21 | * Called on touchUpInside 22 | * 23 | * Example usage would be to invert the colors on your centralView 24 | */ 25 | @property (nonatomic, copy) void (^didSelectBlock)(UAProgressView *progressView); 26 | 27 | /** 28 | * Called on setProgress 29 | * 30 | * Example usage would be to update any central view labels 31 | */ 32 | @property (nonatomic, copy) void (^progressChangedBlock)(UAProgressView *progressView, CGFloat progress); 33 | 34 | /** 35 | * The view in the center of the progress view. 36 | * 37 | * It will be centered in the view but not resized, so plan accordingly 38 | * 39 | * Can be set to anything you want though, a label with the progress %, a stop button etc... 40 | * Sits above the progressView in the layer heirarchy so it receives first tap. 41 | * 42 | * Defaults to nil. 43 | */ 44 | @property (nonatomic, strong) UIView *centralView; 45 | 46 | /** 47 | * Fills in the circle with the tintColor on touch. 48 | * 49 | * Fills immediately, but fades when touch removed. 50 | * 51 | * Default is YES. 52 | */ 53 | @property (nonatomic, assign) BOOL fillOnTouch UI_APPEARANCE_SELECTOR; 54 | 55 | /** 56 | * The line width of the outer circle 57 | * 58 | * Default is 1.0. 59 | */ 60 | @property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR; 61 | 62 | /** 63 | * The line width of the inner circle 64 | * 65 | * Default is 2.0. 66 | */ 67 | @property (nonatomic, assign) CGFloat lineWidth UI_APPEARANCE_SELECTOR; 68 | 69 | /** 70 | * The color of the stroke and border 71 | * 72 | * Defaults to #007aff 73 | */ 74 | @property (nonatomic, strong) UIColor *tintColor; 75 | 76 | /** 77 | * Gets/sets the progress, from 0.0 to 1.0. Progress < 0 is set to 0.0, progress > 1 is set to 1.0 78 | */ 79 | @property (nonatomic, assign) CGFloat progress; 80 | 81 | /** 82 | * The duration over which to animate the progress set. Default is 0.3 seconds. animationDuration < 0 is ignored 83 | */ 84 | @property (nonatomic, assign) CFTimeInterval animationDuration UI_APPEARANCE_SELECTOR; 85 | 86 | /** 87 | * Changes progress animated. 88 | * 89 | * Progress < 0 is set to 0.0, progress > 1 is set to 1.0 90 | * The animation will be always linear. 91 | * 92 | * @param progress The new progress value. 93 | * @param animated Specify YES to animate the change or NO if you do not want the change to be animated. 94 | */ 95 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 96 | 97 | @end 98 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Local Podspecs/UAProgressView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "UAProgressView" 3 | s.version = "0.1.1" 4 | s.summary = "UAProgressView is a simple and lightweight, yet powerful animated circular progress view." 5 | s.homepage = "https://github.com/UrbanApps/UAProgressView" 6 | s.author = { "Matt Coneybeare" => "coneybeare@urbanapps.com" } 7 | s.license = 'MIT' 8 | s.ios.deployment_target = '6.0' 9 | s.requires_arc = true 10 | s.source = { :git => "https://github.com/UrbanApps/UAProgressView.git", :tag => s.version.to_s } 11 | s.source_files = "UAProgressView.{h,m}" 12 | end -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - UAProgressView (0.1.1) 3 | 4 | DEPENDENCIES: 5 | - UAProgressView (from `..`) 6 | 7 | EXTERNAL SOURCES: 8 | UAProgressView: 9 | :path: .. 10 | 11 | SPEC CHECKSUMS: 12 | UAProgressView: 1e1c5e7b6c4327b3e44aef996f4010adb0743d98 13 | 14 | COCOAPODS: 0.33.1 15 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-UAProgressView-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-UAProgressView.xcconfig" 2 | GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/UAProgressView" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/UAProgressView" 4 | OTHER_LDFLAGS = -ObjC 5 | PODS_ROOT = ${SRCROOT} -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-UAProgressView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_UAProgressView : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_UAProgressView 5 | @end 6 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-UAProgressView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-environment.h" 6 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-UAProgressView.xcconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UrbanApps/UAProgressView/2455af67bb3d8776ace7c6a782fd9646c9ae5e3e/UAProgressView-Example/Pods/Pods-UAProgressView.xcconfig -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## UAProgressView 5 | 6 | The MIT License (MIT) 7 | 8 | Copyright (c) 2014 Urban Apps 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | Generated by CocoaPods - http://cocoapods.org 28 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | The MIT License (MIT) 18 | 19 | Copyright (c) 2014 Urban Apps 20 | 21 | Permission is hereby granted, free of charge, to any person obtaining a copy 22 | of this software and associated documentation files (the "Software"), to deal 23 | in the Software without restriction, including without limitation the rights 24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 25 | copies of the Software, and to permit persons to whom the Software is 26 | furnished to do so, subject to the following conditions: 27 | 28 | The above copyright notice and this permission notice shall be included in all 29 | copies or substantial portions of the Software. 30 | 31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 37 | SOFTWARE. 38 | Title 39 | UAProgressView 40 | Type 41 | PSGroupSpecifier 42 | 43 | 44 | FooterText 45 | Generated by CocoaPods - http://cocoapods.org 46 | Title 47 | 48 | Type 49 | PSGroupSpecifier 50 | 51 | 52 | StringsTable 53 | Acknowledgements 54 | Title 55 | Acknowledgements 56 | 57 | 58 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods : NSObject 3 | @end 4 | @implementation PodsDummy_Pods 5 | @end 6 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-environment.h: -------------------------------------------------------------------------------- 1 | 2 | // To check if a library is compiled with CocoaPods you 3 | // can use the `COCOAPODS` macro definition which is 4 | // defined in the xcconfigs so it is available in 5 | // headers also when they are imported in the client 6 | // project. 7 | 8 | 9 | // UAProgressView 10 | #define COCOAPODS_POD_AVAILABLE_UAProgressView 11 | #define COCOAPODS_VERSION_MAJOR_UAProgressView 0 12 | #define COCOAPODS_VERSION_MINOR_UAProgressView 1 13 | #define COCOAPODS_VERSION_PATCH_UAProgressView 1 14 | 15 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 5 | > "$RESOURCES_TO_COPY" 6 | 7 | install_resource() 8 | { 9 | case $1 in 10 | *.storyboard) 11 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 12 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 13 | ;; 14 | *.xib) 15 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 16 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 17 | ;; 18 | *.framework) 19 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 21 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 22 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 23 | ;; 24 | *.xcdatamodel) 25 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 26 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 27 | ;; 28 | *.xcdatamodeld) 29 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 30 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 31 | ;; 32 | *.xcassets) 33 | ;; 34 | /*) 35 | echo "$1" 36 | echo "$1" >> "$RESOURCES_TO_COPY" 37 | ;; 38 | *) 39 | echo "${PODS_ROOT}/$1" 40 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 41 | ;; 42 | esac 43 | } 44 | 45 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 46 | if [[ "${ACTION}" == "install" ]]; then 47 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 48 | fi 49 | rm -f "$RESOURCES_TO_COPY" 50 | 51 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ `xcrun --find actool` ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ] 52 | then 53 | case "${TARGETED_DEVICE_FAMILY}" in 54 | 1,2) 55 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 56 | ;; 57 | 1) 58 | TARGET_DEVICE_ARGS="--target-device iphone" 59 | ;; 60 | 2) 61 | TARGET_DEVICE_ARGS="--target-device ipad" 62 | ;; 63 | *) 64 | TARGET_DEVICE_ARGS="--target-device mac" 65 | ;; 66 | esac 67 | find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 68 | fi 69 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/UAProgressView" 3 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/UAProgressView" 4 | OTHER_LDFLAGS = -ObjC 5 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | archiveVersion 6 | 1 7 | classes 8 | 9 | objectVersion 10 | 46 11 | objects 12 | 13 | 0047FFA493FB4650B1EAC8C5 14 | 15 | buildConfigurationList 16 | 0FE2D3679D0741B4B3AAACB4 17 | buildPhases 18 | 19 | 6AED4C82A03349EA957FB726 20 | 4419216EBB2143E1B895F68D 21 | EFF293B2F8A14DD8945F2B2B 22 | 23 | buildRules 24 | 25 | dependencies 26 | 27 | isa 28 | PBXNativeTarget 29 | name 30 | Pods-UAProgressView 31 | productName 32 | Pods-UAProgressView 33 | productReference 34 | 7CF1A6DBAE4E4D3291B5257B 35 | productType 36 | com.apple.product-type.library.static 37 | 38 | 0120E3440523457798116604 39 | 40 | isa 41 | PBXFileReference 42 | lastKnownFileType 43 | wrapper.framework 44 | name 45 | Foundation.framework 46 | path 47 | Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework 48 | sourceTree 49 | DEVELOPER_DIR 50 | 51 | 0E9CA79E3827439B9CC65296 52 | 53 | includeInIndex 54 | 1 55 | isa 56 | PBXFileReference 57 | lastKnownFileType 58 | sourcecode.c.h 59 | path 60 | Pods-environment.h 61 | sourceTree 62 | <group> 63 | 64 | 0FE2D3679D0741B4B3AAACB4 65 | 66 | buildConfigurations 67 | 68 | 783447FBFC504AF387846FFC 69 | 821C1A9304004CC69D9750F2 70 | 71 | defaultConfigurationIsVisible 72 | 0 73 | defaultConfigurationName 74 | Release 75 | isa 76 | XCConfigurationList 77 | 78 | 13330CF1A3404F0C8AA5A368 79 | 80 | buildSettings 81 | 82 | ALWAYS_SEARCH_USER_PATHS 83 | NO 84 | CLANG_CXX_LANGUAGE_STANDARD 85 | gnu++0x 86 | CLANG_CXX_LIBRARY 87 | libc++ 88 | CLANG_ENABLE_MODULES 89 | YES 90 | CLANG_ENABLE_OBJC_ARC 91 | NO 92 | CLANG_WARN_BOOL_CONVERSION 93 | YES 94 | CLANG_WARN_CONSTANT_CONVERSION 95 | YES 96 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 97 | YES 98 | CLANG_WARN_EMPTY_BODY 99 | YES 100 | CLANG_WARN_ENUM_CONVERSION 101 | YES 102 | CLANG_WARN_INT_CONVERSION 103 | YES 104 | CLANG_WARN_OBJC_ROOT_CLASS 105 | YES 106 | COPY_PHASE_STRIP 107 | YES 108 | GCC_C_LANGUAGE_STANDARD 109 | gnu99 110 | GCC_DYNAMIC_NO_PIC 111 | NO 112 | GCC_OPTIMIZATION_LEVEL 113 | 0 114 | GCC_PREPROCESSOR_DEFINITIONS 115 | 116 | DEBUG=1 117 | $(inherited) 118 | 119 | GCC_SYMBOLS_PRIVATE_EXTERN 120 | NO 121 | GCC_WARN_64_TO_32_BIT_CONVERSION 122 | YES 123 | GCC_WARN_ABOUT_RETURN_TYPE 124 | YES 125 | GCC_WARN_UNDECLARED_SELECTOR 126 | YES 127 | GCC_WARN_UNINITIALIZED_AUTOS 128 | YES 129 | GCC_WARN_UNUSED_FUNCTION 130 | YES 131 | GCC_WARN_UNUSED_VARIABLE 132 | YES 133 | IPHONEOS_DEPLOYMENT_TARGET 134 | 6.0 135 | ONLY_ACTIVE_ARCH 136 | YES 137 | STRIP_INSTALLED_PRODUCT 138 | NO 139 | 140 | isa 141 | XCBuildConfiguration 142 | name 143 | Debug 144 | 145 | 15D81055AFA8416181780C14 146 | 147 | fileRef 148 | C4DBC88BB3054F2492CC05D4 149 | isa 150 | PBXBuildFile 151 | 152 | 1E56FAB0E06942E4BBC3FF32 153 | 154 | buildActionMask 155 | 2147483647 156 | files 157 | 158 | 632E3D0413A14B38A8FDF53F 159 | C31BB4543F1C4E06A978B6FB 160 | 161 | isa 162 | PBXFrameworksBuildPhase 163 | runOnlyForDeploymentPostprocessing 164 | 0 165 | 166 | 2627E7B6C09C40648016A5C1 167 | 168 | fileRef 169 | E375FC65E33341FC9E6ADB8C 170 | isa 171 | PBXBuildFile 172 | 173 | 288DDF8E89C640D98A425EA5 174 | 175 | children 176 | 177 | BCE3E9EB432F43D0912B4672 178 | DA057D533F574D69848A4800 179 | E375FC65E33341FC9E6ADB8C 180 | E0E1AD65931E4204AFA452A1 181 | 182 | isa 183 | PBXGroup 184 | name 185 | Support Files 186 | sourceTree 187 | SOURCE_ROOT 188 | 189 | 2D1D49623574407998EE6B7A 190 | 191 | buildSettings 192 | 193 | ALWAYS_SEARCH_USER_PATHS 194 | NO 195 | CLANG_CXX_LANGUAGE_STANDARD 196 | gnu++0x 197 | CLANG_CXX_LIBRARY 198 | libc++ 199 | CLANG_ENABLE_MODULES 200 | YES 201 | CLANG_ENABLE_OBJC_ARC 202 | NO 203 | CLANG_WARN_BOOL_CONVERSION 204 | YES 205 | CLANG_WARN_CONSTANT_CONVERSION 206 | YES 207 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 208 | YES 209 | CLANG_WARN_EMPTY_BODY 210 | YES 211 | CLANG_WARN_ENUM_CONVERSION 212 | YES 213 | CLANG_WARN_INT_CONVERSION 214 | YES 215 | CLANG_WARN_OBJC_ROOT_CLASS 216 | YES 217 | COPY_PHASE_STRIP 218 | NO 219 | ENABLE_NS_ASSERTIONS 220 | NO 221 | GCC_C_LANGUAGE_STANDARD 222 | gnu99 223 | GCC_WARN_64_TO_32_BIT_CONVERSION 224 | YES 225 | GCC_WARN_ABOUT_RETURN_TYPE 226 | YES 227 | GCC_WARN_UNDECLARED_SELECTOR 228 | YES 229 | GCC_WARN_UNINITIALIZED_AUTOS 230 | YES 231 | GCC_WARN_UNUSED_FUNCTION 232 | YES 233 | GCC_WARN_UNUSED_VARIABLE 234 | YES 235 | IPHONEOS_DEPLOYMENT_TARGET 236 | 6.0 237 | STRIP_INSTALLED_PRODUCT 238 | NO 239 | VALIDATE_PRODUCT 240 | YES 241 | 242 | isa 243 | XCBuildConfiguration 244 | name 245 | Release 246 | 247 | 32BE7E79441547E5ABAD56B8 248 | 249 | includeInIndex 250 | 1 251 | isa 252 | PBXFileReference 253 | lastKnownFileType 254 | text 255 | name 256 | Podfile 257 | path 258 | ../Podfile 259 | sourceTree 260 | SOURCE_ROOT 261 | xcLanguageSpecificationIdentifier 262 | xcode.lang.ruby 263 | 264 | 376908304F9940839C05D606 265 | 266 | includeInIndex 267 | 1 268 | isa 269 | PBXFileReference 270 | lastKnownFileType 271 | text.plist.xml 272 | path 273 | Pods-acknowledgements.plist 274 | sourceTree 275 | <group> 276 | 277 | 37A76F4CC7FD43318DCE313C 278 | 279 | buildConfigurations 280 | 281 | 51598A9EBC4445078F988F1E 282 | 862244CC29CA413BAB595080 283 | 284 | defaultConfigurationIsVisible 285 | 0 286 | defaultConfigurationName 287 | Release 288 | isa 289 | XCConfigurationList 290 | 291 | 3B1109BD12E24C6E9BA846A0 292 | 293 | children 294 | 295 | C1E3DC3308054652B990FFB7 296 | 297 | isa 298 | PBXGroup 299 | name 300 | Development Pods 301 | sourceTree 302 | <group> 303 | 304 | 3DD647E735794F27BFF14764 305 | 306 | includeInIndex 307 | 1 308 | isa 309 | PBXFileReference 310 | lastKnownFileType 311 | text 312 | path 313 | Pods-acknowledgements.markdown 314 | sourceTree 315 | <group> 316 | 317 | 4419216EBB2143E1B895F68D 318 | 319 | buildActionMask 320 | 2147483647 321 | files 322 | 323 | E7577BDEC5A44446A3B8038B 324 | 325 | isa 326 | PBXFrameworksBuildPhase 327 | runOnlyForDeploymentPostprocessing 328 | 0 329 | 330 | 49D5BC3F854C484E98A247A0 331 | 332 | children 333 | 334 | 7CE4B0477DBA467BBF0F6472 335 | 336 | isa 337 | PBXGroup 338 | name 339 | Frameworks 340 | sourceTree 341 | <group> 342 | 343 | 51598A9EBC4445078F988F1E 344 | 345 | baseConfigurationReference 346 | 713BA887390B4776BCF664CE 347 | buildSettings 348 | 349 | ALWAYS_SEARCH_USER_PATHS 350 | NO 351 | COPY_PHASE_STRIP 352 | NO 353 | DSTROOT 354 | /tmp/xcodeproj.dst 355 | GCC_C_LANGUAGE_STANDARD 356 | gnu99 357 | GCC_DYNAMIC_NO_PIC 358 | NO 359 | GCC_OPTIMIZATION_LEVEL 360 | 0 361 | GCC_PRECOMPILE_PREFIX_HEADER 362 | YES 363 | GCC_PREPROCESSOR_DEFINITIONS 364 | 365 | DEBUG=1 366 | $(inherited) 367 | 368 | GCC_SYMBOLS_PRIVATE_EXTERN 369 | NO 370 | GCC_VERSION 371 | com.apple.compilers.llvm.clang.1_0 372 | INSTALL_PATH 373 | $(BUILT_PRODUCTS_DIR) 374 | IPHONEOS_DEPLOYMENT_TARGET 375 | 6.0 376 | OTHER_LDFLAGS 377 | 378 | PRODUCT_NAME 379 | $(TARGET_NAME) 380 | PUBLIC_HEADERS_FOLDER_PATH 381 | $(TARGET_NAME) 382 | SDKROOT 383 | iphoneos 384 | SKIP_INSTALL 385 | YES 386 | 387 | isa 388 | XCBuildConfiguration 389 | name 390 | Debug 391 | 392 | 5BAE7D13B6B54253BDC44841 393 | 394 | children 395 | 396 | E936172E7C5848B88F307E0D 397 | 398 | isa 399 | PBXGroup 400 | name 401 | Targets Support Files 402 | sourceTree 403 | <group> 404 | 405 | 5E9E490D3A414A18B1D0B031 406 | 407 | fileRef 408 | C66838B5167D4E1195A254DD 409 | isa 410 | PBXBuildFile 411 | settings 412 | 413 | COMPILER_FLAGS 414 | -fobjc-arc 415 | 416 | 417 | 632E3D0413A14B38A8FDF53F 418 | 419 | fileRef 420 | 0120E3440523457798116604 421 | isa 422 | PBXBuildFile 423 | 424 | 6AED4C82A03349EA957FB726 425 | 426 | buildActionMask 427 | 2147483647 428 | files 429 | 430 | 2627E7B6C09C40648016A5C1 431 | 5E9E490D3A414A18B1D0B031 432 | 433 | isa 434 | PBXSourcesBuildPhase 435 | runOnlyForDeploymentPostprocessing 436 | 0 437 | 438 | 713BA887390B4776BCF664CE 439 | 440 | includeInIndex 441 | 1 442 | isa 443 | PBXFileReference 444 | lastKnownFileType 445 | text.xcconfig 446 | path 447 | Pods.xcconfig 448 | sourceTree 449 | <group> 450 | 451 | 783447FBFC504AF387846FFC 452 | 453 | baseConfigurationReference 454 | DA057D533F574D69848A4800 455 | buildSettings 456 | 457 | ALWAYS_SEARCH_USER_PATHS 458 | NO 459 | COPY_PHASE_STRIP 460 | NO 461 | DSTROOT 462 | /tmp/xcodeproj.dst 463 | GCC_C_LANGUAGE_STANDARD 464 | gnu99 465 | GCC_DYNAMIC_NO_PIC 466 | NO 467 | GCC_OPTIMIZATION_LEVEL 468 | 0 469 | GCC_PRECOMPILE_PREFIX_HEADER 470 | YES 471 | GCC_PREFIX_HEADER 472 | Pods-UAProgressView-prefix.pch 473 | GCC_PREPROCESSOR_DEFINITIONS 474 | 475 | DEBUG=1 476 | $(inherited) 477 | 478 | GCC_SYMBOLS_PRIVATE_EXTERN 479 | NO 480 | GCC_VERSION 481 | com.apple.compilers.llvm.clang.1_0 482 | INSTALL_PATH 483 | $(BUILT_PRODUCTS_DIR) 484 | IPHONEOS_DEPLOYMENT_TARGET 485 | 6.0 486 | OTHER_LDFLAGS 487 | 488 | PRODUCT_NAME 489 | $(TARGET_NAME) 490 | PUBLIC_HEADERS_FOLDER_PATH 491 | $(TARGET_NAME) 492 | SDKROOT 493 | iphoneos 494 | SKIP_INSTALL 495 | YES 496 | 497 | isa 498 | XCBuildConfiguration 499 | name 500 | Debug 501 | 502 | 7CE4B0477DBA467BBF0F6472 503 | 504 | children 505 | 506 | 0120E3440523457798116604 507 | 508 | isa 509 | PBXGroup 510 | name 511 | iOS 512 | sourceTree 513 | <group> 514 | 515 | 7CF1A6DBAE4E4D3291B5257B 516 | 517 | explicitFileType 518 | archive.ar 519 | includeInIndex 520 | 0 521 | isa 522 | PBXFileReference 523 | path 524 | libPods-UAProgressView.a 525 | sourceTree 526 | BUILT_PRODUCTS_DIR 527 | 528 | 821C1A9304004CC69D9750F2 529 | 530 | baseConfigurationReference 531 | DA057D533F574D69848A4800 532 | buildSettings 533 | 534 | ALWAYS_SEARCH_USER_PATHS 535 | NO 536 | COPY_PHASE_STRIP 537 | YES 538 | DSTROOT 539 | /tmp/xcodeproj.dst 540 | GCC_C_LANGUAGE_STANDARD 541 | gnu99 542 | GCC_PRECOMPILE_PREFIX_HEADER 543 | YES 544 | GCC_PREFIX_HEADER 545 | Pods-UAProgressView-prefix.pch 546 | GCC_VERSION 547 | com.apple.compilers.llvm.clang.1_0 548 | INSTALL_PATH 549 | $(BUILT_PRODUCTS_DIR) 550 | IPHONEOS_DEPLOYMENT_TARGET 551 | 6.0 552 | OTHER_CFLAGS 553 | 554 | -DNS_BLOCK_ASSERTIONS=1 555 | $(inherited) 556 | 557 | OTHER_CPLUSPLUSFLAGS 558 | 559 | -DNS_BLOCK_ASSERTIONS=1 560 | $(inherited) 561 | 562 | OTHER_LDFLAGS 563 | 564 | PRODUCT_NAME 565 | $(TARGET_NAME) 566 | PUBLIC_HEADERS_FOLDER_PATH 567 | $(TARGET_NAME) 568 | SDKROOT 569 | iphoneos 570 | SKIP_INSTALL 571 | YES 572 | VALIDATE_PRODUCT 573 | YES 574 | 575 | isa 576 | XCBuildConfiguration 577 | name 578 | Release 579 | 580 | 862244CC29CA413BAB595080 581 | 582 | baseConfigurationReference 583 | 713BA887390B4776BCF664CE 584 | buildSettings 585 | 586 | ALWAYS_SEARCH_USER_PATHS 587 | NO 588 | COPY_PHASE_STRIP 589 | YES 590 | DSTROOT 591 | /tmp/xcodeproj.dst 592 | GCC_C_LANGUAGE_STANDARD 593 | gnu99 594 | GCC_PRECOMPILE_PREFIX_HEADER 595 | YES 596 | GCC_VERSION 597 | com.apple.compilers.llvm.clang.1_0 598 | INSTALL_PATH 599 | $(BUILT_PRODUCTS_DIR) 600 | IPHONEOS_DEPLOYMENT_TARGET 601 | 6.0 602 | OTHER_CFLAGS 603 | 604 | -DNS_BLOCK_ASSERTIONS=1 605 | $(inherited) 606 | 607 | OTHER_CPLUSPLUSFLAGS 608 | 609 | -DNS_BLOCK_ASSERTIONS=1 610 | $(inherited) 611 | 612 | OTHER_LDFLAGS 613 | 614 | PRODUCT_NAME 615 | $(TARGET_NAME) 616 | PUBLIC_HEADERS_FOLDER_PATH 617 | $(TARGET_NAME) 618 | SDKROOT 619 | iphoneos 620 | SKIP_INSTALL 621 | YES 622 | VALIDATE_PRODUCT 623 | YES 624 | 625 | isa 626 | XCBuildConfiguration 627 | name 628 | Release 629 | 630 | 86A7AEEF98BC46D0BF7CED3F 631 | 632 | isa 633 | PBXTargetDependency 634 | target 635 | 0047FFA493FB4650B1EAC8C5 636 | targetProxy 637 | C6A78F7FED6344D388DA91DE 638 | 639 | 8E6CA21F48A14AF3B496F8CF 640 | 641 | children 642 | 643 | B6EFDAF2C91D4A2CBCC0D930 644 | 7CF1A6DBAE4E4D3291B5257B 645 | 646 | isa 647 | PBXGroup 648 | name 649 | Products 650 | sourceTree 651 | <group> 652 | 653 | B600E12C15AD41EEA0670A59 654 | 655 | includeInIndex 656 | 1 657 | isa 658 | PBXFileReference 659 | lastKnownFileType 660 | text.script.sh 661 | path 662 | Pods-resources.sh 663 | sourceTree 664 | <group> 665 | 666 | B6EFDAF2C91D4A2CBCC0D930 667 | 668 | explicitFileType 669 | archive.ar 670 | includeInIndex 671 | 0 672 | isa 673 | PBXFileReference 674 | path 675 | libPods.a 676 | sourceTree 677 | BUILT_PRODUCTS_DIR 678 | 679 | BCE3E9EB432F43D0912B4672 680 | 681 | includeInIndex 682 | 1 683 | isa 684 | PBXFileReference 685 | lastKnownFileType 686 | text.xcconfig 687 | path 688 | Pods-UAProgressView.xcconfig 689 | sourceTree 690 | <group> 691 | 692 | BD6A7804C12741FE9E7C6D35 693 | 694 | buildConfigurations 695 | 696 | 13330CF1A3404F0C8AA5A368 697 | 2D1D49623574407998EE6B7A 698 | 699 | defaultConfigurationIsVisible 700 | 0 701 | defaultConfigurationName 702 | Release 703 | isa 704 | XCConfigurationList 705 | 706 | C0038D10E4ED4171B4BAF477 707 | 708 | attributes 709 | 710 | LastUpgradeCheck 711 | 0510 712 | 713 | buildConfigurationList 714 | BD6A7804C12741FE9E7C6D35 715 | compatibilityVersion 716 | Xcode 3.2 717 | developmentRegion 718 | English 719 | hasScannedForEncodings 720 | 0 721 | isa 722 | PBXProject 723 | knownRegions 724 | 725 | en 726 | 727 | mainGroup 728 | EE72DE45EB9347B1ACB3F7D2 729 | productRefGroup 730 | 8E6CA21F48A14AF3B496F8CF 731 | projectDirPath 732 | 733 | projectReferences 734 | 735 | projectRoot 736 | 737 | targets 738 | 739 | E7EE444E5BD348FA81EA20F8 740 | 0047FFA493FB4650B1EAC8C5 741 | 742 | 743 | C1E3DC3308054652B990FFB7 744 | 745 | children 746 | 747 | CEBD41DE3040448EBC64B780 748 | C66838B5167D4E1195A254DD 749 | 288DDF8E89C640D98A425EA5 750 | 751 | isa 752 | PBXGroup 753 | name 754 | UAProgressView 755 | path 756 | ../.. 757 | sourceTree 758 | <group> 759 | 760 | C31BB4543F1C4E06A978B6FB 761 | 762 | fileRef 763 | 7CF1A6DBAE4E4D3291B5257B 764 | isa 765 | PBXBuildFile 766 | 767 | C4DBC88BB3054F2492CC05D4 768 | 769 | includeInIndex 770 | 1 771 | isa 772 | PBXFileReference 773 | lastKnownFileType 774 | sourcecode.c.objc 775 | path 776 | Pods-dummy.m 777 | sourceTree 778 | <group> 779 | 780 | C66838B5167D4E1195A254DD 781 | 782 | includeInIndex 783 | 1 784 | isa 785 | PBXFileReference 786 | lastKnownFileType 787 | sourcecode.c.objc 788 | path 789 | UAProgressView.m 790 | sourceTree 791 | <group> 792 | 793 | C6A78F7FED6344D388DA91DE 794 | 795 | containerPortal 796 | C0038D10E4ED4171B4BAF477 797 | isa 798 | PBXContainerItemProxy 799 | proxyType 800 | 1 801 | remoteGlobalIDString 802 | 0047FFA493FB4650B1EAC8C5 803 | remoteInfo 804 | Pods-UAProgressView 805 | 806 | CEBD41DE3040448EBC64B780 807 | 808 | includeInIndex 809 | 1 810 | isa 811 | PBXFileReference 812 | lastKnownFileType 813 | sourcecode.c.h 814 | path 815 | UAProgressView.h 816 | sourceTree 817 | <group> 818 | 819 | D739950A3E7F436CAAF88DEB 820 | 821 | fileRef 822 | CEBD41DE3040448EBC64B780 823 | isa 824 | PBXBuildFile 825 | 826 | DA057D533F574D69848A4800 827 | 828 | includeInIndex 829 | 1 830 | isa 831 | PBXFileReference 832 | lastKnownFileType 833 | text.xcconfig 834 | path 835 | Pods-UAProgressView-Private.xcconfig 836 | sourceTree 837 | <group> 838 | 839 | E0E1AD65931E4204AFA452A1 840 | 841 | includeInIndex 842 | 1 843 | isa 844 | PBXFileReference 845 | lastKnownFileType 846 | sourcecode.c.h 847 | path 848 | Pods-UAProgressView-prefix.pch 849 | sourceTree 850 | <group> 851 | 852 | E375FC65E33341FC9E6ADB8C 853 | 854 | includeInIndex 855 | 1 856 | isa 857 | PBXFileReference 858 | lastKnownFileType 859 | sourcecode.c.objc 860 | path 861 | Pods-UAProgressView-dummy.m 862 | sourceTree 863 | <group> 864 | 865 | E7577BDEC5A44446A3B8038B 866 | 867 | fileRef 868 | 0120E3440523457798116604 869 | isa 870 | PBXBuildFile 871 | 872 | E7EE444E5BD348FA81EA20F8 873 | 874 | buildConfigurationList 875 | 37A76F4CC7FD43318DCE313C 876 | buildPhases 877 | 878 | FB1316035E8D4FFDB3DB42CC 879 | 1E56FAB0E06942E4BBC3FF32 880 | 881 | buildRules 882 | 883 | dependencies 884 | 885 | 86A7AEEF98BC46D0BF7CED3F 886 | 887 | isa 888 | PBXNativeTarget 889 | name 890 | Pods 891 | productName 892 | Pods 893 | productReference 894 | B6EFDAF2C91D4A2CBCC0D930 895 | productType 896 | com.apple.product-type.library.static 897 | 898 | E936172E7C5848B88F307E0D 899 | 900 | children 901 | 902 | 713BA887390B4776BCF664CE 903 | 3DD647E735794F27BFF14764 904 | 376908304F9940839C05D606 905 | C4DBC88BB3054F2492CC05D4 906 | 0E9CA79E3827439B9CC65296 907 | B600E12C15AD41EEA0670A59 908 | 909 | isa 910 | PBXGroup 911 | name 912 | Pods 913 | sourceTree 914 | <group> 915 | 916 | EE72DE45EB9347B1ACB3F7D2 917 | 918 | children 919 | 920 | 32BE7E79441547E5ABAD56B8 921 | 3B1109BD12E24C6E9BA846A0 922 | 49D5BC3F854C484E98A247A0 923 | 8E6CA21F48A14AF3B496F8CF 924 | 5BAE7D13B6B54253BDC44841 925 | 926 | isa 927 | PBXGroup 928 | sourceTree 929 | <group> 930 | 931 | EFF293B2F8A14DD8945F2B2B 932 | 933 | buildActionMask 934 | 2147483647 935 | files 936 | 937 | D739950A3E7F436CAAF88DEB 938 | 939 | isa 940 | PBXHeadersBuildPhase 941 | runOnlyForDeploymentPostprocessing 942 | 0 943 | 944 | FB1316035E8D4FFDB3DB42CC 945 | 946 | buildActionMask 947 | 2147483647 948 | files 949 | 950 | 15D81055AFA8416181780C14 951 | 952 | isa 953 | PBXSourcesBuildPhase 954 | runOnlyForDeploymentPostprocessing 955 | 0 956 | 957 | 958 | rootObject 959 | C0038D10E4ED4171B4BAF477 960 | 961 | 962 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcschemes/Pods-UAProgressView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcschemes/Pods.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /UAProgressView-Example/Pods/Pods.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Pods-UAProgressView.xcscheme 8 | 9 | isShown 10 | 11 | 12 | Pods.xcscheme 13 | 14 | isShown 15 | 16 | 17 | 18 | SuppressBuildableAutocreation 19 | 20 | 2102D6DA0329429FB843161E 21 | 22 | primary 23 | 24 | 25 | 4BD46B8888064D43AFD7D099 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 97F6DD5ACE3C4CD9B8D29675 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A04A471157B4134A4EFE3DD /* libPods.a */; }; 11 | E6230C49193296D400669726 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6230C48193296D400669726 /* Foundation.framework */; }; 12 | E6230C4B193296D400669726 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6230C4A193296D400669726 /* CoreGraphics.framework */; }; 13 | E6230C4D193296D400669726 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6230C4C193296D400669726 /* UIKit.framework */; }; 14 | E6230C821933681600669726 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E6230C811933681600669726 /* Images.xcassets */; }; 15 | E6230C871933682400669726 /* UAAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E6230C841933682400669726 /* UAAppDelegate.m */; }; 16 | E6230C881933682400669726 /* UABasicExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E6230C861933682400669726 /* UABasicExampleViewController.m */; }; 17 | E6230C8B1933683D00669726 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E6230C891933683D00669726 /* InfoPlist.strings */; }; 18 | E6230C901933685200669726 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E6230C8F1933685200669726 /* main.m */; }; 19 | E6230C931933692500669726 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E6230C911933692500669726 /* Main.storyboard */; }; 20 | E6E248A719338352008ECC2B /* UAAdvancedExampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E6E248A619338352008ECC2B /* UAAdvancedExampleViewController.m */; }; 21 | E6E248A9193388A9008ECC2B /* horn.caf in Resources */ = {isa = PBXBuildFile; fileRef = E6E248A8193388A9008ECC2B /* horn.caf */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXFileReference section */ 25 | 12C2C2C73D17407185AA8523 /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = Pods/Pods.xcconfig; sourceTree = ""; }; 26 | 7A04A471157B4134A4EFE3DD /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 27 | E6230C45193296D400669726 /* UAProgressView-Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "UAProgressView-Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | E6230C48193296D400669726 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 29 | E6230C4A193296D400669726 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 30 | E6230C4C193296D400669726 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 31 | E6230C67193296D500669726 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 32 | E6230C811933681600669726 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "UAProgressView-Example/Images.xcassets"; sourceTree = SOURCE_ROOT; }; 33 | E6230C831933682400669726 /* UAAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UAAppDelegate.h; path = "UAProgressView-Example/UAAppDelegate.h"; sourceTree = SOURCE_ROOT; }; 34 | E6230C841933682400669726 /* UAAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UAAppDelegate.m; path = "UAProgressView-Example/UAAppDelegate.m"; sourceTree = SOURCE_ROOT; }; 35 | E6230C851933682400669726 /* UABasicExampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UABasicExampleViewController.h; path = "UAProgressView-Example/UABasicExampleViewController.h"; sourceTree = SOURCE_ROOT; }; 36 | E6230C861933682400669726 /* UABasicExampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UABasicExampleViewController.m; path = "UAProgressView-Example/UABasicExampleViewController.m"; sourceTree = SOURCE_ROOT; }; 37 | E6230C8A1933683D00669726 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = "UAProgressView-Example/en.lproj/InfoPlist.strings"; sourceTree = SOURCE_ROOT; }; 38 | E6230C8C1933684700669726 /* UAProgressView-Example-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "UAProgressView-Example-Info.plist"; path = "UAProgressView-Example/UAProgressView-Example-Info.plist"; sourceTree = SOURCE_ROOT; }; 39 | E6230C8D1933684700669726 /* UAProgressView-Example-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UAProgressView-Example-Prefix.pch"; path = "UAProgressView-Example/UAProgressView-Example-Prefix.pch"; sourceTree = SOURCE_ROOT; }; 40 | E6230C8F1933685200669726 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "UAProgressView-Example/main.m"; sourceTree = SOURCE_ROOT; }; 41 | E6230C921933692500669726 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "UAProgressView-Example/Base.lproj/Main.storyboard"; sourceTree = SOURCE_ROOT; }; 42 | E6E248A519338352008ECC2B /* UAAdvancedExampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UAAdvancedExampleViewController.h; path = "UAProgressView-Example/UAAdvancedExampleViewController.h"; sourceTree = SOURCE_ROOT; }; 43 | E6E248A619338352008ECC2B /* UAAdvancedExampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UAAdvancedExampleViewController.m; path = "UAProgressView-Example/UAAdvancedExampleViewController.m"; sourceTree = SOURCE_ROOT; }; 44 | E6E248A8193388A9008ECC2B /* horn.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = horn.caf; path = "UAProgressView-Example/horn.caf"; sourceTree = SOURCE_ROOT; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | E6230C42193296D400669726 /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | E6230C4B193296D400669726 /* CoreGraphics.framework in Frameworks */, 53 | E6230C4D193296D400669726 /* UIKit.framework in Frameworks */, 54 | E6230C49193296D400669726 /* Foundation.framework in Frameworks */, 55 | 97F6DD5ACE3C4CD9B8D29675 /* libPods.a in Frameworks */, 56 | ); 57 | runOnlyForDeploymentPostprocessing = 0; 58 | }; 59 | /* End PBXFrameworksBuildPhase section */ 60 | 61 | /* Begin PBXGroup section */ 62 | E6230C3C193296D400669726 = { 63 | isa = PBXGroup; 64 | children = ( 65 | E6230C4E193296D400669726 /* UAProgressView-Example */, 66 | E6230C47193296D400669726 /* Frameworks */, 67 | E6230C46193296D400669726 /* Products */, 68 | 12C2C2C73D17407185AA8523 /* Pods.xcconfig */, 69 | ); 70 | sourceTree = ""; 71 | }; 72 | E6230C46193296D400669726 /* Products */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | E6230C45193296D400669726 /* UAProgressView-Example.app */, 76 | ); 77 | name = Products; 78 | sourceTree = ""; 79 | }; 80 | E6230C47193296D400669726 /* Frameworks */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | E6230C48193296D400669726 /* Foundation.framework */, 84 | E6230C4A193296D400669726 /* CoreGraphics.framework */, 85 | E6230C4C193296D400669726 /* UIKit.framework */, 86 | E6230C67193296D500669726 /* XCTest.framework */, 87 | 7A04A471157B4134A4EFE3DD /* libPods.a */, 88 | ); 89 | name = Frameworks; 90 | sourceTree = ""; 91 | }; 92 | E6230C4E193296D400669726 /* UAProgressView-Example */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | E6230C831933682400669726 /* UAAppDelegate.h */, 96 | E6230C841933682400669726 /* UAAppDelegate.m */, 97 | E6230C851933682400669726 /* UABasicExampleViewController.h */, 98 | E6230C861933682400669726 /* UABasicExampleViewController.m */, 99 | E6E248A519338352008ECC2B /* UAAdvancedExampleViewController.h */, 100 | E6E248A619338352008ECC2B /* UAAdvancedExampleViewController.m */, 101 | E6230C811933681600669726 /* Images.xcassets */, 102 | E6230C911933692500669726 /* Main.storyboard */, 103 | E6E248A8193388A9008ECC2B /* horn.caf */, 104 | E6230C4F193296D400669726 /* Supporting Files */, 105 | ); 106 | name = "UAProgressView-Example"; 107 | path = "UACircularProgressView-Example"; 108 | sourceTree = ""; 109 | }; 110 | E6230C4F193296D400669726 /* Supporting Files */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | E6230C891933683D00669726 /* InfoPlist.strings */, 114 | E6230C8C1933684700669726 /* UAProgressView-Example-Info.plist */, 115 | E6230C8D1933684700669726 /* UAProgressView-Example-Prefix.pch */, 116 | E6230C8F1933685200669726 /* main.m */, 117 | ); 118 | name = "Supporting Files"; 119 | sourceTree = ""; 120 | }; 121 | /* End PBXGroup section */ 122 | 123 | /* Begin PBXNativeTarget section */ 124 | E6230C44193296D400669726 /* UAProgressView-Example */ = { 125 | isa = PBXNativeTarget; 126 | buildConfigurationList = E6230C77193296D500669726 /* Build configuration list for PBXNativeTarget "UAProgressView-Example" */; 127 | buildPhases = ( 128 | C243989CDACE45349F86910B /* Check Pods Manifest.lock */, 129 | E6230C41193296D400669726 /* Sources */, 130 | E6230C42193296D400669726 /* Frameworks */, 131 | E6230C43193296D400669726 /* Resources */, 132 | A6468924BA8549A1B9F009AD /* Copy Pods Resources */, 133 | ); 134 | buildRules = ( 135 | ); 136 | dependencies = ( 137 | ); 138 | name = "UAProgressView-Example"; 139 | productName = "UACircularProgressView-Example"; 140 | productReference = E6230C45193296D400669726 /* UAProgressView-Example.app */; 141 | productType = "com.apple.product-type.application"; 142 | }; 143 | /* End PBXNativeTarget section */ 144 | 145 | /* Begin PBXProject section */ 146 | E6230C3D193296D400669726 /* Project object */ = { 147 | isa = PBXProject; 148 | attributes = { 149 | CLASSPREFIX = UA; 150 | LastUpgradeCheck = 0510; 151 | ORGANIZATIONNAME = "Urban Apps"; 152 | }; 153 | buildConfigurationList = E6230C40193296D400669726 /* Build configuration list for PBXProject "UAProgressView-Example" */; 154 | compatibilityVersion = "Xcode 3.2"; 155 | developmentRegion = English; 156 | hasScannedForEncodings = 0; 157 | knownRegions = ( 158 | en, 159 | Base, 160 | ); 161 | mainGroup = E6230C3C193296D400669726; 162 | productRefGroup = E6230C46193296D400669726 /* Products */; 163 | projectDirPath = ""; 164 | projectRoot = ""; 165 | targets = ( 166 | E6230C44193296D400669726 /* UAProgressView-Example */, 167 | ); 168 | }; 169 | /* End PBXProject section */ 170 | 171 | /* Begin PBXResourcesBuildPhase section */ 172 | E6230C43193296D400669726 /* Resources */ = { 173 | isa = PBXResourcesBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | E6230C821933681600669726 /* Images.xcassets in Resources */, 177 | E6230C8B1933683D00669726 /* InfoPlist.strings in Resources */, 178 | E6230C931933692500669726 /* Main.storyboard in Resources */, 179 | E6E248A9193388A9008ECC2B /* horn.caf in Resources */, 180 | ); 181 | runOnlyForDeploymentPostprocessing = 0; 182 | }; 183 | /* End PBXResourcesBuildPhase section */ 184 | 185 | /* Begin PBXShellScriptBuildPhase section */ 186 | A6468924BA8549A1B9F009AD /* Copy Pods Resources */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "Copy Pods Resources"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "\"${SRCROOT}/Pods/Pods-resources.sh\"\n"; 199 | showEnvVarsInLog = 0; 200 | }; 201 | C243989CDACE45349F86910B /* Check Pods Manifest.lock */ = { 202 | isa = PBXShellScriptBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | ); 206 | inputPaths = ( 207 | ); 208 | name = "Check Pods Manifest.lock"; 209 | outputPaths = ( 210 | ); 211 | runOnlyForDeploymentPostprocessing = 0; 212 | shellPath = /bin/sh; 213 | shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; 214 | showEnvVarsInLog = 0; 215 | }; 216 | /* End PBXShellScriptBuildPhase section */ 217 | 218 | /* Begin PBXSourcesBuildPhase section */ 219 | E6230C41193296D400669726 /* Sources */ = { 220 | isa = PBXSourcesBuildPhase; 221 | buildActionMask = 2147483647; 222 | files = ( 223 | E6230C901933685200669726 /* main.m in Sources */, 224 | E6E248A719338352008ECC2B /* UAAdvancedExampleViewController.m in Sources */, 225 | E6230C881933682400669726 /* UABasicExampleViewController.m in Sources */, 226 | E6230C871933682400669726 /* UAAppDelegate.m in Sources */, 227 | ); 228 | runOnlyForDeploymentPostprocessing = 0; 229 | }; 230 | /* End PBXSourcesBuildPhase section */ 231 | 232 | /* Begin PBXVariantGroup section */ 233 | E6230C891933683D00669726 /* InfoPlist.strings */ = { 234 | isa = PBXVariantGroup; 235 | children = ( 236 | E6230C8A1933683D00669726 /* en */, 237 | ); 238 | name = InfoPlist.strings; 239 | sourceTree = ""; 240 | }; 241 | E6230C911933692500669726 /* Main.storyboard */ = { 242 | isa = PBXVariantGroup; 243 | children = ( 244 | E6230C921933692500669726 /* Base */, 245 | ); 246 | name = Main.storyboard; 247 | sourceTree = ""; 248 | }; 249 | /* End PBXVariantGroup section */ 250 | 251 | /* Begin XCBuildConfiguration section */ 252 | E6230C75193296D500669726 /* Debug */ = { 253 | isa = XCBuildConfiguration; 254 | buildSettings = { 255 | ALWAYS_SEARCH_USER_PATHS = NO; 256 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 257 | CLANG_CXX_LIBRARY = "libc++"; 258 | CLANG_ENABLE_MODULES = YES; 259 | CLANG_ENABLE_OBJC_ARC = YES; 260 | CLANG_WARN_BOOL_CONVERSION = YES; 261 | CLANG_WARN_CONSTANT_CONVERSION = YES; 262 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 263 | CLANG_WARN_EMPTY_BODY = YES; 264 | CLANG_WARN_ENUM_CONVERSION = YES; 265 | CLANG_WARN_INT_CONVERSION = YES; 266 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 267 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 268 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 269 | COPY_PHASE_STRIP = NO; 270 | GCC_C_LANGUAGE_STANDARD = gnu99; 271 | GCC_DYNAMIC_NO_PIC = NO; 272 | GCC_OPTIMIZATION_LEVEL = 0; 273 | GCC_PREPROCESSOR_DEFINITIONS = ( 274 | "DEBUG=1", 275 | "$(inherited)", 276 | ); 277 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 278 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 279 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 280 | GCC_WARN_UNDECLARED_SELECTOR = YES; 281 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 282 | GCC_WARN_UNUSED_FUNCTION = YES; 283 | GCC_WARN_UNUSED_VARIABLE = YES; 284 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 285 | ONLY_ACTIVE_ARCH = YES; 286 | SDKROOT = iphoneos; 287 | }; 288 | name = Debug; 289 | }; 290 | E6230C76193296D500669726 /* Release */ = { 291 | isa = XCBuildConfiguration; 292 | buildSettings = { 293 | ALWAYS_SEARCH_USER_PATHS = NO; 294 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 295 | CLANG_CXX_LIBRARY = "libc++"; 296 | CLANG_ENABLE_MODULES = YES; 297 | CLANG_ENABLE_OBJC_ARC = YES; 298 | CLANG_WARN_BOOL_CONVERSION = YES; 299 | CLANG_WARN_CONSTANT_CONVERSION = YES; 300 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 301 | CLANG_WARN_EMPTY_BODY = YES; 302 | CLANG_WARN_ENUM_CONVERSION = YES; 303 | CLANG_WARN_INT_CONVERSION = YES; 304 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 305 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 306 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 307 | COPY_PHASE_STRIP = YES; 308 | ENABLE_NS_ASSERTIONS = NO; 309 | GCC_C_LANGUAGE_STANDARD = gnu99; 310 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 311 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 312 | GCC_WARN_UNDECLARED_SELECTOR = YES; 313 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 314 | GCC_WARN_UNUSED_FUNCTION = YES; 315 | GCC_WARN_UNUSED_VARIABLE = YES; 316 | IPHONEOS_DEPLOYMENT_TARGET = 7.1; 317 | SDKROOT = iphoneos; 318 | VALIDATE_PRODUCT = YES; 319 | }; 320 | name = Release; 321 | }; 322 | E6230C78193296D500669726 /* Debug */ = { 323 | isa = XCBuildConfiguration; 324 | baseConfigurationReference = 12C2C2C73D17407185AA8523 /* Pods.xcconfig */; 325 | buildSettings = { 326 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 327 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 328 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 329 | GCC_PREFIX_HEADER = "UAProgressView-Example/UAProgressView-Example-Prefix.pch"; 330 | INFOPLIST_FILE = "UAProgressView-Example/UAProgressView-Example-Info.plist"; 331 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 332 | PRODUCT_NAME = "$(TARGET_NAME)"; 333 | WRAPPER_EXTENSION = app; 334 | }; 335 | name = Debug; 336 | }; 337 | E6230C79193296D500669726 /* Release */ = { 338 | isa = XCBuildConfiguration; 339 | baseConfigurationReference = 12C2C2C73D17407185AA8523 /* Pods.xcconfig */; 340 | buildSettings = { 341 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 342 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 343 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 344 | GCC_PREFIX_HEADER = "UAProgressView-Example/UAProgressView-Example-Prefix.pch"; 345 | INFOPLIST_FILE = "UAProgressView-Example/UAProgressView-Example-Info.plist"; 346 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 347 | PRODUCT_NAME = "$(TARGET_NAME)"; 348 | WRAPPER_EXTENSION = app; 349 | }; 350 | name = Release; 351 | }; 352 | /* End XCBuildConfiguration section */ 353 | 354 | /* Begin XCConfigurationList section */ 355 | E6230C40193296D400669726 /* Build configuration list for PBXProject "UAProgressView-Example" */ = { 356 | isa = XCConfigurationList; 357 | buildConfigurations = ( 358 | E6230C75193296D500669726 /* Debug */, 359 | E6230C76193296D500669726 /* Release */, 360 | ); 361 | defaultConfigurationIsVisible = 0; 362 | defaultConfigurationName = Release; 363 | }; 364 | E6230C77193296D500669726 /* Build configuration list for PBXNativeTarget "UAProgressView-Example" */ = { 365 | isa = XCConfigurationList; 366 | buildConfigurations = ( 367 | E6230C78193296D500669726 /* Debug */, 368 | E6230C79193296D500669726 /* Release */, 369 | ); 370 | defaultConfigurationIsVisible = 0; 371 | defaultConfigurationName = Release; 372 | }; 373 | /* End XCConfigurationList section */ 374 | }; 375 | rootObject = E6230C3D193296D400669726 /* Project object */; 376 | } 377 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/xcshareddata/UACircularProgressView-Example.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | E0627F70-9680-41F0-A96F-FC96C9D755DF 9 | IDESourceControlProjectName 10 | UACircularProgressView-Example 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 111A3596-F44A-4A91-B717-41FD2C454338 14 | ssh://github.com/UrbanApps/UACircularProgressView.git 15 | 16 | IDESourceControlProjectPath 17 | UACircularProgressView-Example/UACircularProgressView-Example.xcodeproj/project.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 111A3596-F44A-4A91-B717-41FD2C454338 21 | ../../.. 22 | 23 | IDESourceControlProjectURL 24 | ssh://github.com/UrbanApps/UACircularProgressView.git 25 | IDESourceControlProjectVersion 26 | 110 27 | IDESourceControlProjectWCCIdentifier 28 | 111A3596-F44A-4A91-B717-41FD2C454338 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 111A3596-F44A-4A91-B717-41FD2C454338 36 | IDESourceControlWCCName 37 | UACircularProgressView 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/xcshareddata/UAProgressView-Example.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 4449D7F9-7E72-4BA7-A748-EE909C16E1C3 9 | IDESourceControlProjectName 10 | UAProgressView-Example 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 74D442D5-6C39-43E8-9DBD-4EC95AF21215 14 | ssh://github.com/UrbanApps/UAProgressView.git 15 | 16 | IDESourceControlProjectPath 17 | UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 74D442D5-6C39-43E8-9DBD-4EC95AF21215 21 | ../../.. 22 | 23 | IDESourceControlProjectURL 24 | ssh://github.com/UrbanApps/UAProgressView.git 25 | IDESourceControlProjectVersion 26 | 110 27 | IDESourceControlProjectWCCIdentifier 28 | 74D442D5-6C39-43E8-9DBD-4EC95AF21215 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 74D442D5-6C39-43E8-9DBD-4EC95AF21215 36 | IDESourceControlWCCName 37 | UAProgressView 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/xcuserdata/coneybeare.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UrbanApps/UAProgressView/2455af67bb3d8776ace7c6a782fd9646c9ae5e3e/UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/xcuserdata/coneybeare.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/project.xcworkspace/xcuserdata/coneybeare.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcschemes/UAProgressView-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcodeproj/xcuserdata/coneybeare.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | UAProgressView-Example.xcscheme 8 | 9 | orderHint 10 | 1 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | E6230C44193296D400669726 16 | 17 | primary 18 | 19 | 20 | E6230C65193296D500669726 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcworkspace/xcshareddata/UAProgressView-Example.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | C0FF49A1-1336-463B-A1F3-FCCC16EB173B 9 | IDESourceControlProjectName 10 | UAProgressView-Example 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 1CF6EFA5F461A2179A3FB822C435E4903BF99AFE 14 | ssh://github.com/UrbanApps/UAProgressView.git 15 | 16 | IDESourceControlProjectPath 17 | UAProgressView-Example/UAProgressView-Example.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 1CF6EFA5F461A2179A3FB822C435E4903BF99AFE 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | ssh://github.com/UrbanApps/UAProgressView.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 1CF6EFA5F461A2179A3FB822C435E4903BF99AFE 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 1CF6EFA5F461A2179A3FB822C435E4903BF99AFE 36 | IDESourceControlWCCName 37 | UAProgressView 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcworkspace/xcuserdata/coneybeare.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UrbanApps/UAProgressView/2455af67bb3d8776ace7c6a782fd9646c9ae5e3e/UAProgressView-Example/UAProgressView-Example.xcworkspace/xcuserdata/coneybeare.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example.xcworkspace/xcuserdata/coneybeare.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/Images.xcassets/background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "background@2x.png" 11 | } 12 | ], 13 | "info" : { 14 | "version" : 1, 15 | "author" : "xcode" 16 | } 17 | } -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/Images.xcassets/background.imageset/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UrbanApps/UAProgressView/2455af67bb3d8776ace7c6a782fd9646c9ae5e3e/UAProgressView-Example/UAProgressView-Example/Images.xcassets/background.imageset/background@2x.png -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAAdvancedExampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAAdvancedExampleViewController.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/26/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UAAdvancedExampleViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAAdvancedExampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAAdvancedExampleViewController.m 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/26/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import "UAAdvancedExampleViewController.h" 10 | 11 | #import 12 | 13 | #import 14 | 15 | @interface UAAdvancedExampleViewController () 16 | 17 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView; 18 | 19 | @property (nonatomic, assign) SystemSoundID horn; 20 | @property (nonatomic, assign) BOOL paused; 21 | @property (nonatomic, assign) CGFloat localProgress; 22 | 23 | @end 24 | 25 | @implementation UAAdvancedExampleViewController 26 | 27 | 28 | - (void)viewDidLoad { 29 | [super viewDidLoad]; 30 | 31 | self.paused = YES; 32 | 33 | self.progressView.tintColor = [UIColor colorWithRed:5/255.0 green:204/255.0 blue:197/255.0 alpha:1.0]; 34 | self.progressView.borderWidth = 2.0; 35 | self.progressView.lineWidth = 2.0; 36 | self.progressView.fillOnTouch = YES; 37 | self.progressView.longPressDuration = 1.0; 38 | self.progressView.longPressCancelsSelect = YES; 39 | 40 | UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60.0, 32.0)]; 41 | textLabel.font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:32]; 42 | textLabel.textAlignment = NSTextAlignmentCenter; 43 | textLabel.textColor = self.progressView.tintColor; 44 | textLabel.backgroundColor = [UIColor clearColor]; 45 | self.progressView.centralView = textLabel; 46 | 47 | self.progressView.fillChangedBlock = ^(UAProgressView *progressView, BOOL filled, BOOL animated){ 48 | UIColor *color = (filled ? [UIColor whiteColor] : progressView.tintColor); 49 | if (animated) { 50 | [UIView animateWithDuration:0.3 animations:^{ 51 | [(UILabel *)progressView.centralView setTextColor:color]; 52 | }]; 53 | } else { 54 | [(UILabel *)progressView.centralView setTextColor:color]; 55 | } 56 | }; 57 | 58 | self.progressView.progressChangedBlock = ^(UAProgressView *progressView, CGFloat progress){ 59 | [(UILabel *)progressView.centralView setText:[NSString stringWithFormat:@"%2.0f%%", progress * 100]]; 60 | }; 61 | 62 | NSString *path = [[NSBundle mainBundle] pathForResource:@"horn" ofType:@"caf"]; 63 | NSURL *pathURL = [NSURL fileURLWithPath : path]; 64 | AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &_horn); 65 | 66 | self.progressView.didSelectBlock = ^(UAProgressView *progressView){ 67 | AudioServicesPlaySystemSound(_horn); 68 | _paused = !_paused; 69 | }; 70 | 71 | self.progressView.didLongPressBlock = ^(UAProgressView *progressView) { 72 | _paused = YES; 73 | _localProgress = progressView.progress = 0.0; 74 | }; 75 | 76 | self.progressView.progress = 0; 77 | 78 | [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; 79 | } 80 | 81 | - (void)updateProgress:(NSTimer *)timer { 82 | if (!_paused) { 83 | _localProgress = ((int)((_localProgress * 100.0f) + 1.01) % 100) / 100.0f; 84 | [self.progressView setProgress:_localProgress]; 85 | } 86 | } 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAAppDelegate.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UAAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAAppDelegate.m 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import "UAAppDelegate.h" 10 | 11 | @implementation UAAppDelegate 12 | 13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 14 | { 15 | // Override point for customization after application launch. 16 | return YES; 17 | } 18 | 19 | - (void)applicationWillResignActive:(UIApplication *)application 20 | { 21 | // 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. 22 | // 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. 23 | } 24 | 25 | - (void)applicationDidEnterBackground:(UIApplication *)application 26 | { 27 | // 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. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | - (void)applicationWillEnterForeground:(UIApplication *)application 32 | { 33 | // 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. 34 | } 35 | 36 | - (void)applicationDidBecomeActive:(UIApplication *)application 37 | { 38 | // 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. 39 | } 40 | 41 | - (void)applicationWillTerminate:(UIApplication *)application 42 | { 43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UABasicExampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAViewController.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UABasicExampleViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UABasicExampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAViewController.m 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import "UABasicExampleViewController.h" 10 | 11 | #import 12 | 13 | @interface UABasicExampleViewController () 14 | 15 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView1; 16 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView2; 17 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView3; 18 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView4; 19 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView5; 20 | @property (nonatomic, weak) IBOutlet UAProgressView *progressView6; 21 | 22 | @property (nonatomic, assign) CGFloat localProgress; 23 | 24 | @end 25 | 26 | @implementation UABasicExampleViewController 27 | 28 | - (void)viewDidLoad { 29 | [super viewDidLoad]; 30 | 31 | [self setupProgressView1]; 32 | [self setupProgressView2]; 33 | [self setupProgressView3]; 34 | [self setupProgressView4]; 35 | [self setupProgressView5]; 36 | [self setupProgressView6]; 37 | 38 | [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; 39 | } 40 | 41 | - (void)setupProgressView1 { 42 | // no-op. Default 43 | } 44 | 45 | - (void)setupProgressView2 { 46 | self.progressView2.tintColor = [UIColor purpleColor]; 47 | self.progressView2.borderWidth = 10.0; 48 | self.progressView2.lineWidth = 10.0; 49 | } 50 | 51 | - (void)setupProgressView3 { 52 | self.progressView3.tintColor = [UIColor purpleColor]; 53 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60.0, 20.0)]; 54 | [label setTextAlignment:NSTextAlignmentCenter]; 55 | label.userInteractionEnabled = NO; // Allows tap to pass through to the progress view. 56 | self.progressView3.centralView = label; 57 | 58 | self.progressView3.progressChangedBlock = ^(UAProgressView *progressView, CGFloat progress) { 59 | [(UILabel *)progressView.centralView setText:[NSString stringWithFormat:@"%2.0f%%", progress * 100]]; 60 | }; 61 | } 62 | 63 | - (void)setupProgressView4 { 64 | UIView *view = [[UIView alloc] initWithFrame:CGRectInset(self.progressView4.bounds, self.progressView4.bounds.size.width / 3.0, self.progressView4.bounds.size.height / 3.0)]; 65 | view.backgroundColor = [UIColor redColor]; 66 | view.userInteractionEnabled = NO; // Allows tap to pass through to the progress view. 67 | self.progressView4.centralView = view; 68 | 69 | self.progressView4.fillChangedBlock = ^(UAProgressView *progressView, BOOL filled, BOOL animated){ 70 | UIColor *color = (filled ? [UIColor whiteColor] : [UIColor redColor]); 71 | if (animated) { 72 | [UIView animateWithDuration:0.3 animations:^{ 73 | progressView.centralView.backgroundColor = color; 74 | }]; 75 | } else { 76 | progressView.centralView.backgroundColor = color; 77 | } 78 | }; 79 | } 80 | 81 | - (void)setupProgressView5 { 82 | UIButton *button = [UIButton buttonWithType:UIButtonTypeInfoDark]; 83 | [button setFrame:CGRectMake(0, 0, 32, 32)]; 84 | [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 85 | self.progressView5.fillOnTouch = NO; 86 | self.progressView5.centralView = button; 87 | } 88 | 89 | - (void)setupProgressView6 { 90 | UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60.0, 60.0)]; 91 | [label setTextAlignment:NSTextAlignmentCenter]; 92 | label.userInteractionEnabled = NO; // Allows tap to pass through to the progress view. 93 | label.text = @"Tap me\nto update"; 94 | label.numberOfLines = 0; 95 | label.font = [UIFont systemFontOfSize:10]; 96 | self.progressView6.centralView = label; 97 | 98 | self.progressView6.fillOnTouch = NO; 99 | self.progressView6.didSelectBlock = ^(UAProgressView *progressView){ 100 | [progressView setProgress:_localProgress animated:YES]; 101 | }; 102 | } 103 | 104 | - (void)updateProgress:(NSTimer *)timer { 105 | _localProgress = ((int)((_localProgress * 100.0f) + 1.01) % 100) / 100.0f; 106 | 107 | [self.progressView1 setProgress:_localProgress]; 108 | [self.progressView2 setProgress:_localProgress]; 109 | [self.progressView3 setProgress:_localProgress]; 110 | [self.progressView4 setProgress:_localProgress]; 111 | [self.progressView5 setProgress:_localProgress animated:YES]; 112 | // [self.progressView6 setProgress:_localProgress]; // 6 is done on tap 113 | } 114 | 115 | - (void)buttonTapped:(id)sender { 116 | NSLog(@"Button tapped"); 117 | } 118 | 119 | @end 120 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAProgressView-Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | com.urbanapps.${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 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/UAProgressView-Example-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_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #import 16 | #endif 17 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/horn.caf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UrbanApps/UAProgressView/2455af67bb3d8776ace7c6a782fd9646c9ae5e3e/UAProgressView-Example/UAProgressView-Example/horn.caf -------------------------------------------------------------------------------- /UAProgressView-Example/UAProgressView-Example/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "UAAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([UAAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /UAProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // UAProgressView.h 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface UAProgressView : UIView 12 | 13 | /** 14 | * Called when the progress view is filled with tintColor, or removed 15 | * 16 | * Example usage would be to invert the colors on your centralView 17 | */ 18 | @property (nonatomic, copy) void (^fillChangedBlock)(UAProgressView *progressView, BOOL filled, BOOL animated); 19 | 20 | /** 21 | * Called on touchUpInside 22 | * 23 | * Example usage would be to invert the colors on your centralView 24 | */ 25 | @property (nonatomic, copy) void (^didSelectBlock)(UAProgressView *progressView); 26 | 27 | /** 28 | * Called on setProgress 29 | * 30 | * Example usage would be to update any central view labels 31 | */ 32 | @property (nonatomic, copy) void (^progressChangedBlock)(UAProgressView *progressView, CGFloat progress); 33 | 34 | /** 35 | * The view in the center of the progress view. 36 | * 37 | * It will be centered in the view but not resized, so plan accordingly 38 | * 39 | * Can be set to anything you want though, a label with the progress %, a stop button etc... 40 | * Sits above the progressView in the layer heirarchy so it receives first tap. 41 | * 42 | * Defaults to nil. 43 | */ 44 | @property (nonatomic, strong) UIView *centralView; 45 | 46 | /** 47 | * Fills in the circle with the tintColor on touch. 48 | * 49 | * Fills immediately, but fades when touch removed. 50 | * 51 | * Default is YES. 52 | */ 53 | @property (nonatomic, assign) BOOL fillOnTouch UI_APPEARANCE_SELECTOR; 54 | 55 | /** 56 | * The line width of the outer circle 57 | * 58 | * Default is 1.0. 59 | */ 60 | @property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR; 61 | 62 | /** 63 | * The line width of the inner circle 64 | * 65 | * Default is 2.0. 66 | */ 67 | @property (nonatomic, assign) CGFloat lineWidth UI_APPEARANCE_SELECTOR; 68 | 69 | /** 70 | * The color of the stroke and border 71 | * 72 | * Defaults to #007aff 73 | */ 74 | @property (nonatomic, strong) UIColor *tintColor; 75 | 76 | /** 77 | * The color of the fill contents 78 | * 79 | * Defaults to same tintColor 80 | */ 81 | @property (nonatomic, strong) UIColor *fillColor; 82 | 83 | /** 84 | * Gets/sets the progress, from 0.0 to 1.0. Progress < 0 is set to 0.0, progress > 1 is set to 1.0 85 | */ 86 | @property (nonatomic, assign) CGFloat progress; 87 | 88 | /** 89 | * The duration over which to animate the progress set. Default is 0.3 seconds. animationDuration < 0 is ignored 90 | */ 91 | @property (nonatomic, assign) CFTimeInterval animationDuration UI_APPEARANCE_SELECTOR; 92 | 93 | /** 94 | * Changes progress animated. 95 | * 96 | * Progress < 0 is set to 0.0, progress > 1 is set to 1.0 97 | * The animation will be always linear. 98 | * 99 | * @param progress The new progress value. 100 | * @param animated Specify YES to animate the change or NO if you do not want the change to be animated. 101 | */ 102 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated; 103 | 104 | /** 105 | * Fill contents. 106 | */ 107 | - (void)addFill; 108 | 109 | /** 110 | * The long press gesture that is used to recognize single taps and long presses on the central 111 | * view. 112 | */ 113 | @property (nonatomic, strong) UILongPressGestureRecognizer *gestureRecognizer; 114 | 115 | /** 116 | * Specify an optional long press duration that will fire the didLongPressBlock when reached. 117 | * Must be > 0.0. 118 | * 119 | * Default is 0.0 (disabled). 120 | */ 121 | @property (nonatomic, assign) CGFloat longPressDuration; 122 | 123 | /** 124 | * Cancels the selection when the long press duration is reached. 125 | * 126 | * Default is NO. 127 | */ 128 | @property (nonatomic, assign) BOOL longPressCancelsSelect; 129 | 130 | /** 131 | * Called on when the longPressDuration has been reached. 132 | * 133 | * Example usage would be to reset the progress. 134 | */ 135 | @property (nonatomic, copy) void (^didLongPressBlock)(UAProgressView *progressView); 136 | 137 | @end 138 | -------------------------------------------------------------------------------- /UAProgressView.m: -------------------------------------------------------------------------------- 1 | // 2 | // UAProgressView.m 3 | // UAProgressView-Example 4 | // 5 | // Created by Matt Coneybeare on 5/25/14. 6 | // Copyright (c) 2014 Urban Apps. All rights reserved. 7 | // 8 | 9 | #import "UAProgressView.h" 10 | 11 | NSString * const UAProgressViewProgressAnimationKey = @"UAProgressViewProgressAnimationKey"; 12 | 13 | @interface UACircularProgressView : UIView 14 | 15 | - (void)updateProgress:(CGFloat)progress; 16 | - (CAShapeLayer *)shapeLayer; 17 | 18 | @end 19 | 20 | @interface UAProgressView () 21 | 22 | @property (nonatomic, strong) UACircularProgressView *progressView; 23 | @property (nonatomic, assign) int valueLabelProgressPercentDifference; 24 | @property (nonatomic, strong) NSTimer *valueLabelUpdateTimer; 25 | @property (nonatomic, strong) NSTimer *longPressTimer; 26 | 27 | @end 28 | 29 | @implementation UAProgressView 30 | @synthesize tintColor = _tintColor; 31 | 32 | #pragma mark - Init 33 | 34 | - (id)initWithFrame:(CGRect)frame { 35 | self = [super initWithFrame:frame]; 36 | if (self) { 37 | [self sharedSetup]; 38 | } 39 | return self; 40 | } 41 | 42 | - (id)initWithCoder:(NSCoder *)aDecoder { 43 | self = [super initWithCoder:aDecoder]; 44 | if (self) { 45 | [self sharedSetup]; 46 | } 47 | return self; 48 | } 49 | 50 | - (void)sharedSetup { 51 | self.progressView = [[UACircularProgressView alloc] initWithFrame:self.bounds]; 52 | self.progressView.shapeLayer.fillColor = [UIColor clearColor].CGColor; 53 | [self addSubview:self.progressView]; 54 | 55 | [self resetDefaults]; 56 | } 57 | 58 | - (void)resetDefaults { 59 | 60 | self.fillChangedBlock = nil; 61 | self.didSelectBlock = nil; 62 | self.progressChangedBlock = nil; 63 | self.centralView = nil; 64 | 65 | _fillOnTouch = YES; 66 | _progress = 0.0; 67 | _animationDuration = 0.3f; 68 | _longPressDuration = 0.0f; 69 | _longPressCancelsSelect = NO; 70 | 71 | self.borderWidth = 1.0f; 72 | self.lineWidth = 2.0f; 73 | 74 | [self setupGestureRecognizer]; 75 | 76 | [self tintColorDidChange]; 77 | } 78 | 79 | - (void)setupGestureRecognizer { 80 | // while this is a long press gesture, it is actually recognizing any presses < longPressDuration 81 | _gestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(touchDetected:)]; 82 | _gestureRecognizer.delegate = self; 83 | _gestureRecognizer.minimumPressDuration = 0.0; 84 | [self addGestureRecognizer:_gestureRecognizer]; 85 | } 86 | 87 | #pragma mark - Public Accessors 88 | 89 | 90 | - (void)setBorderWidth:(CGFloat)borderWidth { 91 | _borderWidth = borderWidth; 92 | self.progressView.shapeLayer.borderWidth = borderWidth; 93 | } 94 | 95 | - (void)setLineWidth:(CGFloat)lineWidth { 96 | _lineWidth = lineWidth; 97 | self.progressView.shapeLayer.lineWidth = lineWidth; 98 | } 99 | 100 | - (void)setCentralView:(UIView *)centralView { 101 | if (_centralView != centralView) { 102 | [_centralView removeFromSuperview]; 103 | _centralView = centralView; 104 | [self addSubview:self.centralView]; 105 | } 106 | } 107 | 108 | #pragma mark - Color 109 | 110 | - (void)tintColorDidChange { 111 | if ([[self superclass] instancesRespondToSelector: @selector(tintColorDidChange)]) { 112 | [super tintColorDidChange]; 113 | } 114 | 115 | UIColor *tintColor = self.tintColor; 116 | 117 | self.progressView.shapeLayer.strokeColor = tintColor.CGColor; 118 | self.progressView.shapeLayer.borderColor = tintColor.CGColor; 119 | } 120 | 121 | - (UIColor*) tintColor 122 | { 123 | if (_tintColor == nil) { 124 | _tintColor = [UIColor colorWithRed: 0.0 green: 122.0/255.0 blue: 1.0 alpha: 1.0]; 125 | } 126 | return _tintColor; 127 | } 128 | 129 | - (void) setTintColor:(UIColor *)tintColor 130 | { 131 | [self willChangeValueForKey: @"tintColor"]; 132 | _tintColor = tintColor; 133 | [self didChangeValueForKey: @"tintColor"]; 134 | [self tintColorDidChange]; 135 | } 136 | 137 | - (UIColor*) fillColor 138 | { 139 | if (_fillColor == nil) { 140 | return _tintColor; 141 | } 142 | return _fillColor; 143 | } 144 | 145 | #pragma mark - Layout 146 | 147 | - (void)layoutSubviews { 148 | [super layoutSubviews]; 149 | 150 | self.progressView.frame = self.bounds; 151 | self.centralView.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); 152 | } 153 | 154 | #pragma mark - Progress Control 155 | 156 | - (void)setProgress:(CGFloat)progress animated:(BOOL)animated { 157 | 158 | progress = MAX( MIN(progress, 1.0), 0.0); // keep it between 0 and 1 159 | 160 | if (_progress == progress) { 161 | return; 162 | } 163 | 164 | if (animated) { 165 | 166 | [self animateToProgress:progress]; 167 | 168 | } else { 169 | 170 | [self stopAnimation]; 171 | _progress = progress; 172 | [self.progressView updateProgress:_progress]; 173 | 174 | } 175 | 176 | if (self.progressChangedBlock) { 177 | self.progressChangedBlock(self, _progress); 178 | } 179 | } 180 | 181 | - (void)setProgress:(CGFloat)progress { 182 | [self setProgress:progress animated:NO]; 183 | } 184 | 185 | - (void)setAnimationDuration:(CFTimeInterval)animationDuration { 186 | if (_animationDuration < 0) 187 | return; 188 | 189 | _animationDuration = animationDuration; 190 | } 191 | 192 | - (void)animateToProgress:(CGFloat)progress { 193 | [self stopAnimation]; 194 | 195 | // Add shape animation 196 | CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; 197 | animation.removedOnCompletion = NO; 198 | animation.fillMode = kCAFillModeForwards; 199 | animation.duration = self.animationDuration; 200 | animation.fromValue = @(self.progress); 201 | animation.toValue = @(progress); 202 | animation.delegate = self; 203 | [self.progressView.layer addAnimation:animation forKey:UAProgressViewProgressAnimationKey]; 204 | 205 | // Add timer to update valueLabel 206 | _valueLabelProgressPercentDifference = (progress - self.progress) * 100; 207 | CFTimeInterval timerInterval = self.animationDuration / ABS(_valueLabelProgressPercentDifference); 208 | self.valueLabelUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:timerInterval 209 | target:self 210 | selector:@selector(onValueLabelUpdateTimer:) 211 | userInfo:nil 212 | repeats:YES]; 213 | 214 | 215 | _progress = progress; 216 | } 217 | 218 | - (void)stopAnimation { 219 | // Stop running animation 220 | [self.progressView.layer removeAnimationForKey:UAProgressViewProgressAnimationKey]; 221 | 222 | // Stop timer 223 | [self.valueLabelUpdateTimer invalidate]; 224 | self.valueLabelUpdateTimer = nil; 225 | } 226 | 227 | - (void)onValueLabelUpdateTimer:(NSTimer *)timer { 228 | if (_valueLabelProgressPercentDifference > 0) { 229 | _valueLabelProgressPercentDifference--; 230 | } else { 231 | _valueLabelProgressPercentDifference++; 232 | } 233 | } 234 | 235 | #pragma mark - Highlighting 236 | 237 | - (void)addFill { 238 | if (self.fillOnTouch) { 239 | // update the layer model 240 | self.progressView.layer.backgroundColor = [self fillColor].CGColor; 241 | 242 | // call block 243 | if (self.fillChangedBlock) { 244 | self.fillChangedBlock(self, YES, NO); 245 | } 246 | } 247 | } 248 | 249 | - (void)removeFillAnimated:(BOOL)animated { 250 | if (self.fillOnTouch) { 251 | 252 | // add the fade-out animation 253 | if (animated) { 254 | CABasicAnimation *highlightAnimation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 255 | highlightAnimation.fromValue = (id)self.progressView.layer.backgroundColor; 256 | highlightAnimation.toValue = (id)[UIColor clearColor].CGColor; 257 | highlightAnimation.removedOnCompletion = NO; 258 | [self.progressView.layer addAnimation:highlightAnimation forKey:@"backgroundColor"]; 259 | } 260 | 261 | // update the layer model. 262 | self.progressView.layer.backgroundColor = [UIColor clearColor].CGColor; 263 | 264 | // call block 265 | if (self.fillChangedBlock) { 266 | self.fillChangedBlock(self, NO, animated); 267 | } 268 | } 269 | } 270 | 271 | - (void)removeFill { 272 | [self removeFillAnimated:YES]; 273 | } 274 | 275 | #pragma mark - CAAnimationDelegate 276 | 277 | - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag { 278 | [self.progressView updateProgress:_progress]; 279 | [self.valueLabelUpdateTimer invalidate]; 280 | self.valueLabelUpdateTimer = nil; 281 | } 282 | 283 | #pragma mark - Gesture Recognizers 284 | 285 | - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 286 | if (self.centralView && [touch.view isDescendantOfView:self.centralView] && self.centralView.userInteractionEnabled) { 287 | return NO; 288 | } 289 | 290 | return YES; 291 | } 292 | 293 | - (void)touchDetected:(UILongPressGestureRecognizer *)gestureRecognizer { 294 | 295 | CGPoint touch = [gestureRecognizer locationOfTouch:0 inView:self]; 296 | 297 | if (UIGestureRecognizerStateBegan == gestureRecognizer.state) { // press is being held down 298 | 299 | [self addFill]; 300 | 301 | [self startLongPressTimer]; 302 | 303 | } else if (UIGestureRecognizerStateChanged == gestureRecognizer.state) { // press was recognized, but then moved 304 | 305 | if (CGRectContainsPoint(self.bounds, touch)) { 306 | 307 | [self addFill]; 308 | 309 | if (self.longPressTimer == nil) { 310 | [self startLongPressTimer]; 311 | } 312 | 313 | } else { 314 | 315 | [self removeFillAnimated:NO]; 316 | 317 | [self stopLongPressTimer]; 318 | } 319 | 320 | } else if (UIGestureRecognizerStateEnded == gestureRecognizer.state) { // the touch has been picked up 321 | 322 | if (CGRectContainsPoint(self.bounds, touch)) { 323 | 324 | [self removeFill]; 325 | 326 | if (self.didSelectBlock) { 327 | self.didSelectBlock(self); 328 | } 329 | 330 | } else { 331 | 332 | [self removeFillAnimated:NO]; 333 | 334 | } 335 | 336 | [self stopLongPressTimer]; 337 | 338 | } else { 339 | 340 | [self removeFillAnimated:NO]; 341 | 342 | [self stopLongPressTimer]; 343 | 344 | } 345 | 346 | } 347 | 348 | - (void)stopLongPressTimer 349 | { 350 | if (self.longPressTimer != nil) { 351 | [self.longPressTimer invalidate]; 352 | self.longPressTimer = nil; 353 | } 354 | } 355 | 356 | - (void)startLongPressTimer 357 | { 358 | if (self.longPressDuration > 0.0) { 359 | [self.longPressTimer invalidate]; 360 | self.longPressTimer = [NSTimer scheduledTimerWithTimeInterval:_longPressDuration 361 | target:self 362 | selector:@selector(longPressTimerFired:) 363 | userInfo:nil 364 | repeats:NO]; 365 | } 366 | } 367 | 368 | - (void)longPressTimerFired:(NSTimer *)timer { 369 | if (_longPressCancelsSelect) { 370 | _gestureRecognizer.enabled = NO; 371 | _gestureRecognizer.enabled = YES; 372 | } 373 | 374 | if (self.didLongPressBlock) { 375 | self.didLongPressBlock(self); 376 | } 377 | } 378 | 379 | - (void)setLongPressDuration:(CGFloat)longPressDuration 380 | { 381 | longPressDuration = MAX(0.0, longPressDuration); // keep it above 0.0 382 | 383 | if (_longPressDuration == longPressDuration) { 384 | return; 385 | } else { 386 | _longPressDuration = longPressDuration; 387 | } 388 | } 389 | 390 | @end 391 | 392 | #pragma mark - UACircularProgressView 393 | 394 | @implementation UACircularProgressView 395 | 396 | + (Class)layerClass { 397 | return CAShapeLayer.class; 398 | } 399 | 400 | - (CAShapeLayer *)shapeLayer { 401 | return (CAShapeLayer *)self.layer; 402 | } 403 | 404 | - (instancetype)initWithFrame:(CGRect)frame { 405 | if (self = [super initWithFrame:frame]) { 406 | [self updateProgress:0]; 407 | } 408 | 409 | return self; 410 | } 411 | 412 | - (void)layoutSubviews { 413 | [super layoutSubviews]; 414 | 415 | self.shapeLayer.cornerRadius = self.frame.size.width / 2.0f; 416 | self.shapeLayer.path = [self layoutPath].CGPath; 417 | } 418 | 419 | - (UIBezierPath *)layoutPath { 420 | const double TWO_M_PI = 2.0 * M_PI; 421 | const double startAngle = 0.75 * TWO_M_PI; 422 | const double endAngle = startAngle + TWO_M_PI; 423 | 424 | CGFloat width = self.frame.size.width; 425 | CGFloat borderWidth = self.shapeLayer.borderWidth; 426 | return [UIBezierPath bezierPathWithArcCenter:CGPointMake(width/2.0f, width/2.0f) 427 | radius:width/2.0f - borderWidth 428 | startAngle:startAngle 429 | endAngle:endAngle 430 | clockwise:YES]; 431 | } 432 | 433 | - (void)updateProgress:(CGFloat)progress { 434 | [self updatePath:progress]; 435 | } 436 | 437 | - (void)updatePath:(CGFloat)progress { 438 | [CATransaction begin]; 439 | [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 440 | self.shapeLayer.strokeEnd = progress; 441 | [CATransaction commit]; 442 | } 443 | 444 | @end 445 | -------------------------------------------------------------------------------- /UAProgressView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "UAProgressView" 3 | s.version = "0.1.4" 4 | s.summary = "UAProgressView is a simple and lightweight, yet powerful animated circular progress view." 5 | s.homepage = "https://github.com/UrbanApps/UAProgressView" 6 | s.author = { "Matt Coneybeare" => "coneybeare@urbanapps.com" } 7 | s.license = 'MIT' 8 | s.ios.deployment_target = '6.0' 9 | s.requires_arc = true 10 | s.source = { :git => "https://github.com/UrbanApps/UAProgressView.git", :tag => s.version.to_s } 11 | s.source_files = "UAProgressView.{h,m}" 12 | end --------------------------------------------------------------------------------