├── .gitignore ├── .swift-version ├── .travis.yml ├── Assets └── MediumProgressView.gif ├── LICENSE ├── MediumProgressView-Sample ├── MediumProgressView-Sample.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ ├── MediumProgressView-Sample.xcscheme │ │ ├── MediumProgressView-SampleTests.xcscheme │ │ ├── MediumProgressView.xcscheme │ │ └── MediumProgressViewTests.xcscheme ├── MediumProgressView-Sample │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-40@2x.png │ │ │ ├── Icon-40@3x.png │ │ │ ├── Icon-60@2x.png │ │ │ ├── Icon-60@3x.png │ │ │ ├── Icon-Small@2x.png │ │ │ └── Icon-Small@3x.png │ ├── Info.plist │ ├── Main.storyboard │ └── ViewController.swift ├── MediumProgressView-SampleTests │ ├── Info.plist │ └── MediumProgressView_SampleTests.swift ├── MediumProgressView │ ├── Info.plist │ └── MediumProgressView.h └── MediumProgressViewTests │ ├── Info.plist │ └── MediumProgressViewTests.swift ├── MediumProgressView.podspec ├── MediumProgressView ├── MediumProgressView.swift └── MediumProgressViewManager.swift ├── MediumProgressViewTests ├── Info.plist └── MediumProgressViewTests.swift └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | *.DS_Store 20 | 21 | # CocoaPods 22 | # 23 | # We recommend against adding the Pods directory to your .gitignore. However 24 | # you should judge for yourself, the pros and cons are mentioned at: 25 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 26 | # 27 | # Pods/ 28 | 29 | # Carthage 30 | # 31 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 32 | # Carthage/Checkouts 33 | 34 | Carthage/Build 35 | -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 3.0 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | osx_image: xcode8 2 | language: objective-c 3 | install: gem install xcpretty 4 | script: xcodebuild -project MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj -scheme MediumProgressView | xcpretty --color; exit ${PIPESTATUS[0]} 5 | 6 | -------------------------------------------------------------------------------- /Assets/MediumProgressView.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/Assets/MediumProgressView.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Nagasawa Hiroki 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. 22 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6E08A7991A88E8B200F6093C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E08A7981A88E8B200F6093C /* AppDelegate.swift */; }; 11 | 6E08A79B1A88E8B200F6093C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E08A79A1A88E8B200F6093C /* ViewController.swift */; }; 12 | 6E08A7A01A88E8B200F6093C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E08A79F1A88E8B200F6093C /* Images.xcassets */; }; 13 | 6E08A7A31A88E8B200F6093C /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E08A7A11A88E8B200F6093C /* LaunchScreen.xib */; }; 14 | 6E08A7AF1A88E8B200F6093C /* MediumProgressView_SampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E08A7AE1A88E8B200F6093C /* MediumProgressView_SampleTests.swift */; }; 15 | 6E08A7C01A88EA1800F6093C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E08A7BF1A88EA1800F6093C /* Main.storyboard */; }; 16 | 6EB8CCB01AF88619002EB5DD /* MediumProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EB8CCAF1AF88619002EB5DD /* MediumProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 6EB8CCB61AF88619002EB5DD /* MediumProgressView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */; }; 18 | 6EB8CCBF1AF88619002EB5DD /* MediumProgressViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EB8CCBE1AF88619002EB5DD /* MediumProgressViewTests.swift */; }; 19 | 6EB8CCC21AF88619002EB5DD /* MediumProgressView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */; }; 20 | 6EB8CCC31AF88619002EB5DD /* MediumProgressView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 21 | 6EB8CCCB1AF88630002EB5DD /* MediumProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE89E231AB6EB420030119A /* MediumProgressView.swift */; }; 22 | 6EB8CCCC1AF88630002EB5DD /* MediumProgressViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE89E241AB6EB420030119A /* MediumProgressViewManager.swift */; }; 23 | 6EE89E251AB6EB420030119A /* MediumProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE89E231AB6EB420030119A /* MediumProgressView.swift */; }; 24 | 6EE89E261AB6EB420030119A /* MediumProgressViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EE89E241AB6EB420030119A /* MediumProgressViewManager.swift */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXContainerItemProxy section */ 28 | 6E08A7A91A88E8B200F6093C /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = 6E08A78B1A88E8B100F6093C /* Project object */; 31 | proxyType = 1; 32 | remoteGlobalIDString = 6E08A7921A88E8B200F6093C; 33 | remoteInfo = "MediumProgressView-Sample"; 34 | }; 35 | 6EB8CCB71AF88619002EB5DD /* PBXContainerItemProxy */ = { 36 | isa = PBXContainerItemProxy; 37 | containerPortal = 6E08A78B1A88E8B100F6093C /* Project object */; 38 | proxyType = 1; 39 | remoteGlobalIDString = 6EB8CCAA1AF88619002EB5DD; 40 | remoteInfo = MediumProgressView; 41 | }; 42 | 6EB8CCB91AF88619002EB5DD /* PBXContainerItemProxy */ = { 43 | isa = PBXContainerItemProxy; 44 | containerPortal = 6E08A78B1A88E8B100F6093C /* Project object */; 45 | proxyType = 1; 46 | remoteGlobalIDString = 6E08A7921A88E8B200F6093C; 47 | remoteInfo = "MediumProgressView-Sample"; 48 | }; 49 | 6EB8CCC01AF88619002EB5DD /* PBXContainerItemProxy */ = { 50 | isa = PBXContainerItemProxy; 51 | containerPortal = 6E08A78B1A88E8B100F6093C /* Project object */; 52 | proxyType = 1; 53 | remoteGlobalIDString = 6EB8CCAA1AF88619002EB5DD; 54 | remoteInfo = MediumProgressView; 55 | }; 56 | /* End PBXContainerItemProxy section */ 57 | 58 | /* Begin PBXCopyFilesBuildPhase section */ 59 | 6EB8CCC91AF88619002EB5DD /* Embed Frameworks */ = { 60 | isa = PBXCopyFilesBuildPhase; 61 | buildActionMask = 2147483647; 62 | dstPath = ""; 63 | dstSubfolderSpec = 10; 64 | files = ( 65 | 6EB8CCC31AF88619002EB5DD /* MediumProgressView.framework in Embed Frameworks */, 66 | ); 67 | name = "Embed Frameworks"; 68 | runOnlyForDeploymentPostprocessing = 0; 69 | }; 70 | /* End PBXCopyFilesBuildPhase section */ 71 | 72 | /* Begin PBXFileReference section */ 73 | 6E08A7931A88E8B200F6093C /* MediumProgressView-Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MediumProgressView-Sample.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 74 | 6E08A7971A88E8B200F6093C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | 6E08A7981A88E8B200F6093C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 76 | 6E08A79A1A88E8B200F6093C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 77 | 6E08A79F1A88E8B200F6093C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 78 | 6E08A7A21A88E8B200F6093C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 79 | 6E08A7A81A88E8B200F6093C /* MediumProgressView-SampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "MediumProgressView-SampleTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 80 | 6E08A7AD1A88E8B200F6093C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 81 | 6E08A7AE1A88E8B200F6093C /* MediumProgressView_SampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediumProgressView_SampleTests.swift; sourceTree = ""; }; 82 | 6E08A7BF1A88EA1800F6093C /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; 83 | 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MediumProgressView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | 6EB8CCAE1AF88619002EB5DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 85 | 6EB8CCAF1AF88619002EB5DD /* MediumProgressView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediumProgressView.h; sourceTree = ""; }; 86 | 6EB8CCB51AF88619002EB5DD /* MediumProgressViewTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MediumProgressViewTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 87 | 6EB8CCBD1AF88619002EB5DD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 88 | 6EB8CCBE1AF88619002EB5DD /* MediumProgressViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediumProgressViewTests.swift; sourceTree = ""; }; 89 | 6EE89E231AB6EB420030119A /* MediumProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediumProgressView.swift; path = ../../MediumProgressView/MediumProgressView.swift; sourceTree = ""; }; 90 | 6EE89E241AB6EB420030119A /* MediumProgressViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediumProgressViewManager.swift; path = ../../MediumProgressView/MediumProgressViewManager.swift; sourceTree = ""; }; 91 | /* End PBXFileReference section */ 92 | 93 | /* Begin PBXFrameworksBuildPhase section */ 94 | 6E08A7901A88E8B200F6093C /* Frameworks */ = { 95 | isa = PBXFrameworksBuildPhase; 96 | buildActionMask = 2147483647; 97 | files = ( 98 | 6EB8CCC21AF88619002EB5DD /* MediumProgressView.framework in Frameworks */, 99 | ); 100 | runOnlyForDeploymentPostprocessing = 0; 101 | }; 102 | 6E08A7A51A88E8B200F6093C /* Frameworks */ = { 103 | isa = PBXFrameworksBuildPhase; 104 | buildActionMask = 2147483647; 105 | files = ( 106 | ); 107 | runOnlyForDeploymentPostprocessing = 0; 108 | }; 109 | 6EB8CCA71AF88619002EB5DD /* Frameworks */ = { 110 | isa = PBXFrameworksBuildPhase; 111 | buildActionMask = 2147483647; 112 | files = ( 113 | ); 114 | runOnlyForDeploymentPostprocessing = 0; 115 | }; 116 | 6EB8CCB21AF88619002EB5DD /* Frameworks */ = { 117 | isa = PBXFrameworksBuildPhase; 118 | buildActionMask = 2147483647; 119 | files = ( 120 | 6EB8CCB61AF88619002EB5DD /* MediumProgressView.framework in Frameworks */, 121 | ); 122 | runOnlyForDeploymentPostprocessing = 0; 123 | }; 124 | /* End PBXFrameworksBuildPhase section */ 125 | 126 | /* Begin PBXGroup section */ 127 | 6E08A78A1A88E8B100F6093C = { 128 | isa = PBXGroup; 129 | children = ( 130 | 6E08A7951A88E8B200F6093C /* MediumProgressView-Sample */, 131 | 6E08A7AB1A88E8B200F6093C /* MediumProgressView-SampleTests */, 132 | 6EB8CCAC1AF88619002EB5DD /* MediumProgressView */, 133 | 6EB8CCBB1AF88619002EB5DD /* MediumProgressViewTests */, 134 | 6E08A7941A88E8B200F6093C /* Products */, 135 | ); 136 | sourceTree = ""; 137 | }; 138 | 6E08A7941A88E8B200F6093C /* Products */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 6E08A7931A88E8B200F6093C /* MediumProgressView-Sample.app */, 142 | 6E08A7A81A88E8B200F6093C /* MediumProgressView-SampleTests.xctest */, 143 | 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */, 144 | 6EB8CCB51AF88619002EB5DD /* MediumProgressViewTests.xctest */, 145 | ); 146 | name = Products; 147 | sourceTree = ""; 148 | }; 149 | 6E08A7951A88E8B200F6093C /* MediumProgressView-Sample */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 6EE89E271AB6EB4D0030119A /* MediumProgressView */, 153 | 6E08A7981A88E8B200F6093C /* AppDelegate.swift */, 154 | 6E08A79A1A88E8B200F6093C /* ViewController.swift */, 155 | 6E08A7BF1A88EA1800F6093C /* Main.storyboard */, 156 | 6E08A79F1A88E8B200F6093C /* Images.xcassets */, 157 | 6E08A7961A88E8B200F6093C /* Supporting Files */, 158 | ); 159 | path = "MediumProgressView-Sample"; 160 | sourceTree = ""; 161 | }; 162 | 6E08A7961A88E8B200F6093C /* Supporting Files */ = { 163 | isa = PBXGroup; 164 | children = ( 165 | 6E08A7A11A88E8B200F6093C /* LaunchScreen.xib */, 166 | 6E08A7971A88E8B200F6093C /* Info.plist */, 167 | ); 168 | name = "Supporting Files"; 169 | sourceTree = ""; 170 | }; 171 | 6E08A7AB1A88E8B200F6093C /* MediumProgressView-SampleTests */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | 6E08A7AE1A88E8B200F6093C /* MediumProgressView_SampleTests.swift */, 175 | 6E08A7AC1A88E8B200F6093C /* Supporting Files */, 176 | ); 177 | path = "MediumProgressView-SampleTests"; 178 | sourceTree = ""; 179 | }; 180 | 6E08A7AC1A88E8B200F6093C /* Supporting Files */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | 6E08A7AD1A88E8B200F6093C /* Info.plist */, 184 | ); 185 | name = "Supporting Files"; 186 | sourceTree = ""; 187 | }; 188 | 6EB8CCAC1AF88619002EB5DD /* MediumProgressView */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 6EB8CCAF1AF88619002EB5DD /* MediumProgressView.h */, 192 | 6EB8CCAD1AF88619002EB5DD /* Supporting Files */, 193 | ); 194 | path = MediumProgressView; 195 | sourceTree = ""; 196 | }; 197 | 6EB8CCAD1AF88619002EB5DD /* Supporting Files */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 6EB8CCAE1AF88619002EB5DD /* Info.plist */, 201 | ); 202 | name = "Supporting Files"; 203 | sourceTree = ""; 204 | }; 205 | 6EB8CCBB1AF88619002EB5DD /* MediumProgressViewTests */ = { 206 | isa = PBXGroup; 207 | children = ( 208 | 6EB8CCBE1AF88619002EB5DD /* MediumProgressViewTests.swift */, 209 | 6EB8CCBC1AF88619002EB5DD /* Supporting Files */, 210 | ); 211 | path = MediumProgressViewTests; 212 | sourceTree = ""; 213 | }; 214 | 6EB8CCBC1AF88619002EB5DD /* Supporting Files */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 6EB8CCBD1AF88619002EB5DD /* Info.plist */, 218 | ); 219 | name = "Supporting Files"; 220 | sourceTree = ""; 221 | }; 222 | 6EE89E271AB6EB4D0030119A /* MediumProgressView */ = { 223 | isa = PBXGroup; 224 | children = ( 225 | 6EE89E231AB6EB420030119A /* MediumProgressView.swift */, 226 | 6EE89E241AB6EB420030119A /* MediumProgressViewManager.swift */, 227 | ); 228 | name = MediumProgressView; 229 | sourceTree = ""; 230 | }; 231 | /* End PBXGroup section */ 232 | 233 | /* Begin PBXHeadersBuildPhase section */ 234 | 6EB8CCA81AF88619002EB5DD /* Headers */ = { 235 | isa = PBXHeadersBuildPhase; 236 | buildActionMask = 2147483647; 237 | files = ( 238 | 6EB8CCB01AF88619002EB5DD /* MediumProgressView.h in Headers */, 239 | ); 240 | runOnlyForDeploymentPostprocessing = 0; 241 | }; 242 | /* End PBXHeadersBuildPhase section */ 243 | 244 | /* Begin PBXNativeTarget section */ 245 | 6E08A7921A88E8B200F6093C /* MediumProgressView-Sample */ = { 246 | isa = PBXNativeTarget; 247 | buildConfigurationList = 6E08A7B21A88E8B200F6093C /* Build configuration list for PBXNativeTarget "MediumProgressView-Sample" */; 248 | buildPhases = ( 249 | 6E08A78F1A88E8B200F6093C /* Sources */, 250 | 6E08A7901A88E8B200F6093C /* Frameworks */, 251 | 6E08A7911A88E8B200F6093C /* Resources */, 252 | 6EB8CCC91AF88619002EB5DD /* Embed Frameworks */, 253 | ); 254 | buildRules = ( 255 | ); 256 | dependencies = ( 257 | 6EB8CCC11AF88619002EB5DD /* PBXTargetDependency */, 258 | ); 259 | name = "MediumProgressView-Sample"; 260 | productName = "MediumProgressView-Sample"; 261 | productReference = 6E08A7931A88E8B200F6093C /* MediumProgressView-Sample.app */; 262 | productType = "com.apple.product-type.application"; 263 | }; 264 | 6E08A7A71A88E8B200F6093C /* MediumProgressView-SampleTests */ = { 265 | isa = PBXNativeTarget; 266 | buildConfigurationList = 6E08A7B51A88E8B200F6093C /* Build configuration list for PBXNativeTarget "MediumProgressView-SampleTests" */; 267 | buildPhases = ( 268 | 6E08A7A41A88E8B200F6093C /* Sources */, 269 | 6E08A7A51A88E8B200F6093C /* Frameworks */, 270 | 6E08A7A61A88E8B200F6093C /* Resources */, 271 | ); 272 | buildRules = ( 273 | ); 274 | dependencies = ( 275 | 6E08A7AA1A88E8B200F6093C /* PBXTargetDependency */, 276 | ); 277 | name = "MediumProgressView-SampleTests"; 278 | productName = "MediumProgressView-SampleTests"; 279 | productReference = 6E08A7A81A88E8B200F6093C /* MediumProgressView-SampleTests.xctest */; 280 | productType = "com.apple.product-type.bundle.unit-test"; 281 | }; 282 | 6EB8CCAA1AF88619002EB5DD /* MediumProgressView */ = { 283 | isa = PBXNativeTarget; 284 | buildConfigurationList = 6EB8CCC81AF88619002EB5DD /* Build configuration list for PBXNativeTarget "MediumProgressView" */; 285 | buildPhases = ( 286 | 6EB8CCA61AF88619002EB5DD /* Sources */, 287 | 6EB8CCA71AF88619002EB5DD /* Frameworks */, 288 | 6EB8CCA81AF88619002EB5DD /* Headers */, 289 | 6EB8CCA91AF88619002EB5DD /* Resources */, 290 | ); 291 | buildRules = ( 292 | ); 293 | dependencies = ( 294 | ); 295 | name = MediumProgressView; 296 | productName = MediumProgressView; 297 | productReference = 6EB8CCAB1AF88619002EB5DD /* MediumProgressView.framework */; 298 | productType = "com.apple.product-type.framework"; 299 | }; 300 | 6EB8CCB41AF88619002EB5DD /* MediumProgressViewTests */ = { 301 | isa = PBXNativeTarget; 302 | buildConfigurationList = 6EB8CCCA1AF88619002EB5DD /* Build configuration list for PBXNativeTarget "MediumProgressViewTests" */; 303 | buildPhases = ( 304 | 6EB8CCB11AF88619002EB5DD /* Sources */, 305 | 6EB8CCB21AF88619002EB5DD /* Frameworks */, 306 | 6EB8CCB31AF88619002EB5DD /* Resources */, 307 | ); 308 | buildRules = ( 309 | ); 310 | dependencies = ( 311 | 6EB8CCB81AF88619002EB5DD /* PBXTargetDependency */, 312 | 6EB8CCBA1AF88619002EB5DD /* PBXTargetDependency */, 313 | ); 314 | name = MediumProgressViewTests; 315 | productName = MediumProgressViewTests; 316 | productReference = 6EB8CCB51AF88619002EB5DD /* MediumProgressViewTests.xctest */; 317 | productType = "com.apple.product-type.bundle.unit-test"; 318 | }; 319 | /* End PBXNativeTarget section */ 320 | 321 | /* Begin PBXProject section */ 322 | 6E08A78B1A88E8B100F6093C /* Project object */ = { 323 | isa = PBXProject; 324 | attributes = { 325 | LastSwiftMigration = 0700; 326 | LastSwiftUpdateCheck = 0700; 327 | LastUpgradeCheck = 0800; 328 | ORGANIZATIONNAME = pixyzehn; 329 | TargetAttributes = { 330 | 6E08A7921A88E8B200F6093C = { 331 | CreatedOnToolsVersion = 6.1.1; 332 | LastSwiftMigration = 0800; 333 | }; 334 | 6E08A7A71A88E8B200F6093C = { 335 | CreatedOnToolsVersion = 6.1.1; 336 | LastSwiftMigration = 0800; 337 | TestTargetID = 6E08A7921A88E8B200F6093C; 338 | }; 339 | 6EB8CCAA1AF88619002EB5DD = { 340 | CreatedOnToolsVersion = 6.2; 341 | LastSwiftMigration = 0800; 342 | }; 343 | 6EB8CCB41AF88619002EB5DD = { 344 | CreatedOnToolsVersion = 6.2; 345 | LastSwiftMigration = 0800; 346 | TestTargetID = 6E08A7921A88E8B200F6093C; 347 | }; 348 | }; 349 | }; 350 | buildConfigurationList = 6E08A78E1A88E8B100F6093C /* Build configuration list for PBXProject "MediumProgressView-Sample" */; 351 | compatibilityVersion = "Xcode 3.2"; 352 | developmentRegion = English; 353 | hasScannedForEncodings = 0; 354 | knownRegions = ( 355 | en, 356 | Base, 357 | ); 358 | mainGroup = 6E08A78A1A88E8B100F6093C; 359 | productRefGroup = 6E08A7941A88E8B200F6093C /* Products */; 360 | projectDirPath = ""; 361 | projectRoot = ""; 362 | targets = ( 363 | 6E08A7921A88E8B200F6093C /* MediumProgressView-Sample */, 364 | 6E08A7A71A88E8B200F6093C /* MediumProgressView-SampleTests */, 365 | 6EB8CCAA1AF88619002EB5DD /* MediumProgressView */, 366 | 6EB8CCB41AF88619002EB5DD /* MediumProgressViewTests */, 367 | ); 368 | }; 369 | /* End PBXProject section */ 370 | 371 | /* Begin PBXResourcesBuildPhase section */ 372 | 6E08A7911A88E8B200F6093C /* Resources */ = { 373 | isa = PBXResourcesBuildPhase; 374 | buildActionMask = 2147483647; 375 | files = ( 376 | 6E08A7C01A88EA1800F6093C /* Main.storyboard in Resources */, 377 | 6E08A7A31A88E8B200F6093C /* LaunchScreen.xib in Resources */, 378 | 6E08A7A01A88E8B200F6093C /* Images.xcassets in Resources */, 379 | ); 380 | runOnlyForDeploymentPostprocessing = 0; 381 | }; 382 | 6E08A7A61A88E8B200F6093C /* Resources */ = { 383 | isa = PBXResourcesBuildPhase; 384 | buildActionMask = 2147483647; 385 | files = ( 386 | ); 387 | runOnlyForDeploymentPostprocessing = 0; 388 | }; 389 | 6EB8CCA91AF88619002EB5DD /* Resources */ = { 390 | isa = PBXResourcesBuildPhase; 391 | buildActionMask = 2147483647; 392 | files = ( 393 | ); 394 | runOnlyForDeploymentPostprocessing = 0; 395 | }; 396 | 6EB8CCB31AF88619002EB5DD /* Resources */ = { 397 | isa = PBXResourcesBuildPhase; 398 | buildActionMask = 2147483647; 399 | files = ( 400 | ); 401 | runOnlyForDeploymentPostprocessing = 0; 402 | }; 403 | /* End PBXResourcesBuildPhase section */ 404 | 405 | /* Begin PBXSourcesBuildPhase section */ 406 | 6E08A78F1A88E8B200F6093C /* Sources */ = { 407 | isa = PBXSourcesBuildPhase; 408 | buildActionMask = 2147483647; 409 | files = ( 410 | 6EE89E251AB6EB420030119A /* MediumProgressView.swift in Sources */, 411 | 6EE89E261AB6EB420030119A /* MediumProgressViewManager.swift in Sources */, 412 | 6E08A79B1A88E8B200F6093C /* ViewController.swift in Sources */, 413 | 6E08A7991A88E8B200F6093C /* AppDelegate.swift in Sources */, 414 | ); 415 | runOnlyForDeploymentPostprocessing = 0; 416 | }; 417 | 6E08A7A41A88E8B200F6093C /* Sources */ = { 418 | isa = PBXSourcesBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | 6E08A7AF1A88E8B200F6093C /* MediumProgressView_SampleTests.swift in Sources */, 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | 6EB8CCA61AF88619002EB5DD /* Sources */ = { 426 | isa = PBXSourcesBuildPhase; 427 | buildActionMask = 2147483647; 428 | files = ( 429 | 6EB8CCCB1AF88630002EB5DD /* MediumProgressView.swift in Sources */, 430 | 6EB8CCCC1AF88630002EB5DD /* MediumProgressViewManager.swift in Sources */, 431 | ); 432 | runOnlyForDeploymentPostprocessing = 0; 433 | }; 434 | 6EB8CCB11AF88619002EB5DD /* Sources */ = { 435 | isa = PBXSourcesBuildPhase; 436 | buildActionMask = 2147483647; 437 | files = ( 438 | 6EB8CCBF1AF88619002EB5DD /* MediumProgressViewTests.swift in Sources */, 439 | ); 440 | runOnlyForDeploymentPostprocessing = 0; 441 | }; 442 | /* End PBXSourcesBuildPhase section */ 443 | 444 | /* Begin PBXTargetDependency section */ 445 | 6E08A7AA1A88E8B200F6093C /* PBXTargetDependency */ = { 446 | isa = PBXTargetDependency; 447 | target = 6E08A7921A88E8B200F6093C /* MediumProgressView-Sample */; 448 | targetProxy = 6E08A7A91A88E8B200F6093C /* PBXContainerItemProxy */; 449 | }; 450 | 6EB8CCB81AF88619002EB5DD /* PBXTargetDependency */ = { 451 | isa = PBXTargetDependency; 452 | target = 6EB8CCAA1AF88619002EB5DD /* MediumProgressView */; 453 | targetProxy = 6EB8CCB71AF88619002EB5DD /* PBXContainerItemProxy */; 454 | }; 455 | 6EB8CCBA1AF88619002EB5DD /* PBXTargetDependency */ = { 456 | isa = PBXTargetDependency; 457 | target = 6E08A7921A88E8B200F6093C /* MediumProgressView-Sample */; 458 | targetProxy = 6EB8CCB91AF88619002EB5DD /* PBXContainerItemProxy */; 459 | }; 460 | 6EB8CCC11AF88619002EB5DD /* PBXTargetDependency */ = { 461 | isa = PBXTargetDependency; 462 | target = 6EB8CCAA1AF88619002EB5DD /* MediumProgressView */; 463 | targetProxy = 6EB8CCC01AF88619002EB5DD /* PBXContainerItemProxy */; 464 | }; 465 | /* End PBXTargetDependency section */ 466 | 467 | /* Begin PBXVariantGroup section */ 468 | 6E08A7A11A88E8B200F6093C /* LaunchScreen.xib */ = { 469 | isa = PBXVariantGroup; 470 | children = ( 471 | 6E08A7A21A88E8B200F6093C /* Base */, 472 | ); 473 | name = LaunchScreen.xib; 474 | sourceTree = ""; 475 | }; 476 | /* End PBXVariantGroup section */ 477 | 478 | /* Begin XCBuildConfiguration section */ 479 | 6E08A7B01A88E8B200F6093C /* Debug */ = { 480 | isa = XCBuildConfiguration; 481 | buildSettings = { 482 | ALWAYS_SEARCH_USER_PATHS = NO; 483 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 484 | CLANG_CXX_LIBRARY = "libc++"; 485 | CLANG_ENABLE_MODULES = YES; 486 | CLANG_ENABLE_OBJC_ARC = YES; 487 | CLANG_WARN_BOOL_CONVERSION = YES; 488 | CLANG_WARN_CONSTANT_CONVERSION = YES; 489 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 490 | CLANG_WARN_EMPTY_BODY = YES; 491 | CLANG_WARN_ENUM_CONVERSION = YES; 492 | CLANG_WARN_INFINITE_RECURSION = YES; 493 | CLANG_WARN_INT_CONVERSION = YES; 494 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 495 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 496 | CLANG_WARN_UNREACHABLE_CODE = YES; 497 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 498 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 499 | COPY_PHASE_STRIP = NO; 500 | ENABLE_STRICT_OBJC_MSGSEND = YES; 501 | ENABLE_TESTABILITY = YES; 502 | GCC_C_LANGUAGE_STANDARD = gnu99; 503 | GCC_DYNAMIC_NO_PIC = NO; 504 | GCC_NO_COMMON_BLOCKS = YES; 505 | GCC_OPTIMIZATION_LEVEL = 0; 506 | GCC_PREPROCESSOR_DEFINITIONS = ( 507 | "DEBUG=1", 508 | "$(inherited)", 509 | ); 510 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 511 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 512 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 513 | GCC_WARN_UNDECLARED_SELECTOR = YES; 514 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 515 | GCC_WARN_UNUSED_FUNCTION = YES; 516 | GCC_WARN_UNUSED_VARIABLE = YES; 517 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 518 | MTL_ENABLE_DEBUG_INFO = YES; 519 | ONLY_ACTIVE_ARCH = YES; 520 | SDKROOT = iphoneos; 521 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 522 | }; 523 | name = Debug; 524 | }; 525 | 6E08A7B11A88E8B200F6093C /* Release */ = { 526 | isa = XCBuildConfiguration; 527 | buildSettings = { 528 | ALWAYS_SEARCH_USER_PATHS = NO; 529 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 530 | CLANG_CXX_LIBRARY = "libc++"; 531 | CLANG_ENABLE_MODULES = YES; 532 | CLANG_ENABLE_OBJC_ARC = YES; 533 | CLANG_WARN_BOOL_CONVERSION = YES; 534 | CLANG_WARN_CONSTANT_CONVERSION = YES; 535 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 536 | CLANG_WARN_EMPTY_BODY = YES; 537 | CLANG_WARN_ENUM_CONVERSION = YES; 538 | CLANG_WARN_INFINITE_RECURSION = YES; 539 | CLANG_WARN_INT_CONVERSION = YES; 540 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 541 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 542 | CLANG_WARN_UNREACHABLE_CODE = YES; 543 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 544 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 545 | COPY_PHASE_STRIP = YES; 546 | ENABLE_NS_ASSERTIONS = NO; 547 | ENABLE_STRICT_OBJC_MSGSEND = YES; 548 | GCC_C_LANGUAGE_STANDARD = gnu99; 549 | GCC_NO_COMMON_BLOCKS = YES; 550 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 551 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 552 | GCC_WARN_UNDECLARED_SELECTOR = YES; 553 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 554 | GCC_WARN_UNUSED_FUNCTION = YES; 555 | GCC_WARN_UNUSED_VARIABLE = YES; 556 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 557 | MTL_ENABLE_DEBUG_INFO = NO; 558 | SDKROOT = iphoneos; 559 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 560 | VALIDATE_PRODUCT = YES; 561 | }; 562 | name = Release; 563 | }; 564 | 6E08A7B31A88E8B200F6093C /* Debug */ = { 565 | isa = XCBuildConfiguration; 566 | buildSettings = { 567 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 568 | INFOPLIST_FILE = "MediumProgressView-Sample/Info.plist"; 569 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 570 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 571 | PRODUCT_NAME = "$(TARGET_NAME)"; 572 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 573 | SWIFT_VERSION = 3.0; 574 | }; 575 | name = Debug; 576 | }; 577 | 6E08A7B41A88E8B200F6093C /* Release */ = { 578 | isa = XCBuildConfiguration; 579 | buildSettings = { 580 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 581 | INFOPLIST_FILE = "MediumProgressView-Sample/Info.plist"; 582 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 583 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 584 | PRODUCT_NAME = "$(TARGET_NAME)"; 585 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 586 | SWIFT_VERSION = 3.0; 587 | }; 588 | name = Release; 589 | }; 590 | 6E08A7B61A88E8B200F6093C /* Debug */ = { 591 | isa = XCBuildConfiguration; 592 | buildSettings = { 593 | BUNDLE_LOADER = "$(TEST_HOST)"; 594 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 595 | GCC_PREPROCESSOR_DEFINITIONS = ( 596 | "DEBUG=1", 597 | "$(inherited)", 598 | ); 599 | INFOPLIST_FILE = "MediumProgressView-SampleTests/Info.plist"; 600 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 601 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 602 | PRODUCT_NAME = "$(TARGET_NAME)"; 603 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 604 | SWIFT_VERSION = 3.0; 605 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediumProgressView-Sample.app/MediumProgressView-Sample"; 606 | }; 607 | name = Debug; 608 | }; 609 | 6E08A7B71A88E8B200F6093C /* Release */ = { 610 | isa = XCBuildConfiguration; 611 | buildSettings = { 612 | BUNDLE_LOADER = "$(TEST_HOST)"; 613 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 614 | INFOPLIST_FILE = "MediumProgressView-SampleTests/Info.plist"; 615 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 616 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 617 | PRODUCT_NAME = "$(TARGET_NAME)"; 618 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 619 | SWIFT_VERSION = 3.0; 620 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediumProgressView-Sample.app/MediumProgressView-Sample"; 621 | }; 622 | name = Release; 623 | }; 624 | 6EB8CCC41AF88619002EB5DD /* Debug */ = { 625 | isa = XCBuildConfiguration; 626 | buildSettings = { 627 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 628 | CURRENT_PROJECT_VERSION = 1; 629 | DEFINES_MODULE = YES; 630 | DYLIB_COMPATIBILITY_VERSION = 1; 631 | DYLIB_CURRENT_VERSION = 1; 632 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 633 | GCC_PREPROCESSOR_DEFINITIONS = ( 634 | "DEBUG=1", 635 | "$(inherited)", 636 | ); 637 | INFOPLIST_FILE = MediumProgressView/Info.plist; 638 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 639 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 640 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 641 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 642 | PRODUCT_NAME = "$(TARGET_NAME)"; 643 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 644 | SKIP_INSTALL = YES; 645 | SWIFT_VERSION = 3.0; 646 | TARGETED_DEVICE_FAMILY = "1,2"; 647 | VERSIONING_SYSTEM = "apple-generic"; 648 | VERSION_INFO_PREFIX = ""; 649 | }; 650 | name = Debug; 651 | }; 652 | 6EB8CCC51AF88619002EB5DD /* Release */ = { 653 | isa = XCBuildConfiguration; 654 | buildSettings = { 655 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 656 | COPY_PHASE_STRIP = NO; 657 | CURRENT_PROJECT_VERSION = 1; 658 | DEFINES_MODULE = YES; 659 | DYLIB_COMPATIBILITY_VERSION = 1; 660 | DYLIB_CURRENT_VERSION = 1; 661 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 662 | INFOPLIST_FILE = MediumProgressView/Info.plist; 663 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 664 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 665 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 666 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 667 | PRODUCT_NAME = "$(TARGET_NAME)"; 668 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 669 | SKIP_INSTALL = YES; 670 | SWIFT_VERSION = 3.0; 671 | TARGETED_DEVICE_FAMILY = "1,2"; 672 | VERSIONING_SYSTEM = "apple-generic"; 673 | VERSION_INFO_PREFIX = ""; 674 | }; 675 | name = Release; 676 | }; 677 | 6EB8CCC61AF88619002EB5DD /* Debug */ = { 678 | isa = XCBuildConfiguration; 679 | buildSettings = { 680 | BUNDLE_LOADER = "$(TEST_HOST)"; 681 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 682 | GCC_PREPROCESSOR_DEFINITIONS = ( 683 | "DEBUG=1", 684 | "$(inherited)", 685 | ); 686 | INFOPLIST_FILE = MediumProgressViewTests/Info.plist; 687 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 688 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 689 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 690 | PRODUCT_NAME = "$(TARGET_NAME)"; 691 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 692 | SWIFT_VERSION = 3.0; 693 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediumProgressView-Sample.app/MediumProgressView-Sample"; 694 | }; 695 | name = Debug; 696 | }; 697 | 6EB8CCC71AF88619002EB5DD /* Release */ = { 698 | isa = XCBuildConfiguration; 699 | buildSettings = { 700 | BUNDLE_LOADER = "$(TEST_HOST)"; 701 | COPY_PHASE_STRIP = NO; 702 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 703 | INFOPLIST_FILE = MediumProgressViewTests/Info.plist; 704 | IPHONEOS_DEPLOYMENT_TARGET = 8.2; 705 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 706 | PRODUCT_BUNDLE_IDENTIFIER = "pixyzehn.$(PRODUCT_NAME:rfc1034identifier)"; 707 | PRODUCT_NAME = "$(TARGET_NAME)"; 708 | PROVISIONING_PROFILE = "f3bd9f9c-c781-4a84-a4b9-d221e4ac54ef"; 709 | SWIFT_VERSION = 3.0; 710 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediumProgressView-Sample.app/MediumProgressView-Sample"; 711 | }; 712 | name = Release; 713 | }; 714 | /* End XCBuildConfiguration section */ 715 | 716 | /* Begin XCConfigurationList section */ 717 | 6E08A78E1A88E8B100F6093C /* Build configuration list for PBXProject "MediumProgressView-Sample" */ = { 718 | isa = XCConfigurationList; 719 | buildConfigurations = ( 720 | 6E08A7B01A88E8B200F6093C /* Debug */, 721 | 6E08A7B11A88E8B200F6093C /* Release */, 722 | ); 723 | defaultConfigurationIsVisible = 0; 724 | defaultConfigurationName = Release; 725 | }; 726 | 6E08A7B21A88E8B200F6093C /* Build configuration list for PBXNativeTarget "MediumProgressView-Sample" */ = { 727 | isa = XCConfigurationList; 728 | buildConfigurations = ( 729 | 6E08A7B31A88E8B200F6093C /* Debug */, 730 | 6E08A7B41A88E8B200F6093C /* Release */, 731 | ); 732 | defaultConfigurationIsVisible = 0; 733 | defaultConfigurationName = Release; 734 | }; 735 | 6E08A7B51A88E8B200F6093C /* Build configuration list for PBXNativeTarget "MediumProgressView-SampleTests" */ = { 736 | isa = XCConfigurationList; 737 | buildConfigurations = ( 738 | 6E08A7B61A88E8B200F6093C /* Debug */, 739 | 6E08A7B71A88E8B200F6093C /* Release */, 740 | ); 741 | defaultConfigurationIsVisible = 0; 742 | defaultConfigurationName = Release; 743 | }; 744 | 6EB8CCC81AF88619002EB5DD /* Build configuration list for PBXNativeTarget "MediumProgressView" */ = { 745 | isa = XCConfigurationList; 746 | buildConfigurations = ( 747 | 6EB8CCC41AF88619002EB5DD /* Debug */, 748 | 6EB8CCC51AF88619002EB5DD /* Release */, 749 | ); 750 | defaultConfigurationIsVisible = 0; 751 | defaultConfigurationName = Release; 752 | }; 753 | 6EB8CCCA1AF88619002EB5DD /* Build configuration list for PBXNativeTarget "MediumProgressViewTests" */ = { 754 | isa = XCConfigurationList; 755 | buildConfigurations = ( 756 | 6EB8CCC61AF88619002EB5DD /* Debug */, 757 | 6EB8CCC71AF88619002EB5DD /* Release */, 758 | ); 759 | defaultConfigurationIsVisible = 0; 760 | defaultConfigurationName = Release; 761 | }; 762 | /* End XCConfigurationList section */ 763 | }; 764 | rootObject = 6E08A78B1A88E8B100F6093C /* Project object */; 765 | } 766 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/xcshareddata/xcschemes/MediumProgressView-Sample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 71 | 77 | 78 | 79 | 80 | 81 | 87 | 88 | 89 | 90 | 91 | 92 | 102 | 104 | 110 | 111 | 112 | 113 | 114 | 115 | 121 | 123 | 129 | 130 | 131 | 132 | 134 | 135 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/xcshareddata/xcschemes/MediumProgressView-SampleTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 14 | 15 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 39 | 40 | 41 | 42 | 48 | 49 | 51 | 52 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/xcshareddata/xcschemes/MediumProgressView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample.xcodeproj/xcshareddata/xcschemes/MediumProgressViewTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 14 | 15 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 39 | 40 | 41 | 42 | 48 | 49 | 51 | 52 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // MediumProgressView-Sample 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | var window: UIWindow? 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 16 | return true 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-Small@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-Small@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "40x40", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-40@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-40@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "60x60", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-60@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-60@3x.png", 37 | "scale" : "3x" 38 | } 39 | ], 40 | "info" : { 41 | "version" : 1, 42 | "author" : "xcode" 43 | } 44 | } -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixyzehn/MediumProgressView/c080565b4d1b53a711cd450682b0671da07f7dfc/MediumProgressView-Sample/MediumProgressView-Sample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 35 | 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 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-Sample/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // MediumProgressView-Sample 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | var progressViewManager: MediumProgressViewManager? 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | progressViewManager = MediumProgressViewManager.sharedInstance 19 | progressViewManager?.show() 20 | } 21 | 22 | @IBAction func startProgress(_ sender: AnyObject) { 23 | progressViewManager?.show() 24 | } 25 | 26 | @IBAction func stopProgress(_ sender: AnyObject) { 27 | progressViewManager?.hide() 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-SampleTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView-SampleTests/MediumProgressView_SampleTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressView_SampleTests.swift 3 | // MediumProgressView-SampleTests 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class MediumProgressView_SampleTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressView/MediumProgressView.h: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressView.h 3 | // MediumProgressView 4 | // 5 | // Created by pixyzehn on 5/5/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for MediumProgressView. 12 | FOUNDATION_EXPORT double MediumProgressViewVersionNumber; 13 | 14 | //! Project version string for MediumProgressView. 15 | FOUNDATION_EXPORT const unsigned char MediumProgressViewVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressViewTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /MediumProgressView-Sample/MediumProgressViewTests/MediumProgressViewTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressViewTests.swift 3 | // MediumProgressViewTests 4 | // 5 | // Created by pixyzehn on 5/5/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class MediumProgressViewTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /MediumProgressView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "MediumProgressView" 3 | s.version = "1.1.0" 4 | s.summary = "A progress view based on Medium web app." 5 | s.homepage = 'https://github.com/pixyzehn/MediumProgressView' 6 | s.license = { :type => 'MIT', :file => 'LICENSE' } 7 | s.author = { "Nagasawa Hiroki" => "civokjots10.pico@gmail.com" } 8 | 9 | s.requires_arc = true 10 | s.ios.deployment_target = "8.0" 11 | s.source = { :git => "https://github.com/pixyzehn/MediumProgressView.git", :tag => "#{s.version}" } 12 | s.source_files = "MediumProgressView/*.swift" 13 | end 14 | 15 | -------------------------------------------------------------------------------- /MediumProgressView/MediumProgressView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressView.swift 3 | // MediumProgressView 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | protocol MediumProgressViewDelegate: class { 12 | func mediumProgressViewDidFinishAnimation(_ view: MediumProgressView) 13 | } 14 | 15 | open class MediumProgressView: UIView { 16 | weak var delegate: MediumProgressViewDelegate? 17 | 18 | override fileprivate init(frame: CGRect) { 19 | super.init(frame: frame) 20 | } 21 | 22 | convenience internal init( 23 | frame: CGRect, 24 | isLeftToRight: Bool, 25 | duration: CFTimeInterval, 26 | repeatCount: Float 27 | ) { 28 | self.init(frame: frame) 29 | progressAnimation(isLeftToRight, duration: duration, repeatCount: repeatCount) 30 | } 31 | 32 | required public init?(coder aDecoder: NSCoder) { 33 | fatalError("init(coder:) has not been implemented") 34 | } 35 | 36 | fileprivate func progressAnimation(_ isLeftToRight: Bool, duration: CFTimeInterval, repeatCount: Float) { 37 | CATransaction.begin() 38 | 39 | CATransaction.setCompletionBlock{ [weak self] in 40 | guard let strongSelf = self else { return } 41 | let animation = strongSelf.layer.animation(forKey: "progressAnimation") 42 | if animation != nil { 43 | strongSelf.layer.removeAnimation(forKey: "progressAnimation") 44 | strongSelf.delegate?.mediumProgressViewDidFinishAnimation(strongSelf) 45 | } 46 | } 47 | 48 | let animation: CABasicAnimation = CABasicAnimation(keyPath: "position.x") 49 | animation.fromValue = isLeftToRight ? -frame.size.width : frame.size.width * 2 50 | animation.toValue = isLeftToRight ? frame.size.width * 2 : -frame.size.width 51 | animation.duration = duration 52 | animation.fillMode = kCAFillModeBoth 53 | animation.isRemovedOnCompletion = false 54 | animation.repeatCount = repeatCount 55 | layer.add(animation, forKey: "progressAnimation") 56 | CATransaction.commit() 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /MediumProgressView/MediumProgressViewManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressViewManager.swift 3 | // MediumProgressView 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | public let MEDIUM_COLOR = UIColor(red:0.33, green:0.83, blue:0.44, alpha:1) 12 | 13 | open class MediumProgressViewManager { 14 | public enum Position { 15 | case top 16 | case bottom 17 | } 18 | 19 | open var position: Position = .top 20 | open var color: UIColor = MEDIUM_COLOR 21 | open var height: CGFloat = 4.0 22 | open var isLeftToRight: Bool = true 23 | open var duration: CFTimeInterval = 1.2 24 | open var repeatCount = Float.infinity 25 | open var progressView: MediumProgressView? 26 | 27 | public init() {} 28 | 29 | open static let sharedInstance = MediumProgressViewManager() 30 | 31 | // MARK: function 32 | 33 | open func show() { 34 | if progressView == nil { 35 | let window = UIApplication.shared.keyWindow! 36 | progressView = createMediumProgressView(window.frame) 37 | window.addSubview(progressView!) 38 | } 39 | } 40 | 41 | open func hide() { 42 | progressView?.removeFromSuperview() 43 | progressView = nil 44 | } 45 | 46 | // MARK: Helpers 47 | 48 | fileprivate func createMediumProgressView(_ frame: CGRect) -> MediumProgressView { 49 | let newWidth = frame.size.width 50 | let newHeight = frame.size.height 51 | let newFrame: CGRect 52 | 53 | switch position { 54 | case .top: 55 | newFrame = CGRect(x: 0, y: 0, width: newWidth, height: height) 56 | case .bottom: 57 | newFrame = CGRect(x: 0, y: newHeight - height, width: newWidth, height: height) 58 | } 59 | 60 | let progressView = MediumProgressView( 61 | frame: newFrame, 62 | isLeftToRight: isLeftToRight, 63 | duration: duration, 64 | repeatCount: repeatCount 65 | ) 66 | progressView.delegate = self 67 | progressView.backgroundColor = color 68 | return progressView 69 | } 70 | } 71 | 72 | extension MediumProgressViewManager: MediumProgressViewDelegate { 73 | func mediumProgressViewDidFinishAnimation(_ view: MediumProgressView) { 74 | hide() 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /MediumProgressViewTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | pixyzehn.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /MediumProgressViewTests/MediumProgressViewTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MediumProgressViewTests.swift 3 | // MediumProgressViewTests 4 | // 5 | // Created by pixyzehn on 2/9/15. 6 | // Copyright (c) 2015 pixyzehn. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class MediumProgressViewTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Notice: MediumProgressView is no longer being maintained/updated.** 2 | 3 | MediumProgressView 4 | ==================== 5 | 6 | ![Swift3.0](https://img.shields.io/badge/Swift-3.0-blue.svg?style=flat) 7 | [![Build Status](https://travis-ci.org/pixyzehn/MediumProgressView.svg?branch=master)](https://travis-ci.org/pixyzehn/MediumProgressView) 8 | 9 | Medium Progress View in Swift like a Medium Web application Progress View. 10 | 11 | Inspired by [KIProgressView](https://github.com/kaiinui/KIProgressView). I made that a reference and customized a fine point. 12 | 13 | ## Demo 14 | 15 | ![MediumProgressView](https://github.com/pixyzehn/MediumProgressView/blob/master/Assets/MediumProgressView.gif) 16 | 17 | ## Installation 18 | 19 | ### CocoaPods 20 | 21 | The easiest way to get started is to use [CocoaPods](http://cocoapods.org/). Add the following line to your Podfile: 22 | 23 | ```ruby 24 | platform :ios, '8.0' 25 | use_frameworks! 26 | # The following is a Library of Swift. 27 | pod 'MediumProgressView' 28 | ``` 29 | 30 | Then, run the following command: 31 | 32 | ```ruby 33 | pod install 34 | ``` 35 | 36 | ### Carthage 37 | 38 | [Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application. 39 | 40 | You can install Carthage with [Homebrew](http://brew.sh/) using the following command: 41 | 42 | ```bash 43 | $ brew update 44 | $ brew install carthage 45 | ``` 46 | 47 | To integrate MediumProgressView into your Xcode project using Carthage, specify it in your `Cartfile`: 48 | 49 | ``` 50 | github "pixyzehn/MediumProgressView" 51 | ``` 52 | 53 | Run `carthage update`. 54 | 55 | ```bash 56 | $ carthage update 57 | ``` 58 | 59 | ### Other 60 | 61 | Add the MediumProgressView (including MediumProgressView.swift and MediumProgressViewManager.swift) folder into your project. 62 | 63 | ## Description 64 | 65 | You can set the certain property. For example, position and color, height, duration and so on. If you don't set the these property, default value is used. 66 | 67 | ```Swift 68 | let progressViewManager = MediumProgressViewManager.sharedInstance 69 | progressViewManager.position = .bottom // Default is top. 70 | progressViewManager.color = UIColor.red // Default is UIColor(red:0.33, green:0.83, blue:0.44, alpha:1). 71 | progressViewManager.height = 2.0 // Default is 4.0. 72 | progressViewManager.isLeftToRight = false // Default is true. 73 | progressViewManager.duration = 2.0 // Default is 1.2. 74 | progressViewManager.repeatCount = 3 // Default is infinity. 75 | ``` 76 | 77 | The following method is show method. 78 | 79 | ```Swift 80 | progressViewManager.show() 81 | ``` 82 | 83 | The following method is hide method. 84 | 85 | ```Swift 86 | progressViewManager.hide() 87 | ``` 88 | 89 | See MediumProgressView-Sample project for more information. 90 | 91 | ## Licence 92 | 93 | [MIT](https://github.com/pixyzehn/MediumProgressView/blob/master/LICENSE) 94 | 95 | ## Author 96 | 97 | [pixyzehn](https://github.com/pixyzehn)🐈 98 | --------------------------------------------------------------------------------