├── .gitignore ├── .swift-version ├── .travis.yml ├── Design └── SimpleLoadingButton.sketch ├── Example ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── SimpleLoadingButton.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── Target Support Files │ │ ├── Pods-SimpleLoadingButton_Example │ │ ├── Info.plist │ │ ├── Pods-SimpleLoadingButton_Example-acknowledgements.markdown │ │ ├── Pods-SimpleLoadingButton_Example-acknowledgements.plist │ │ ├── Pods-SimpleLoadingButton_Example-dummy.m │ │ ├── Pods-SimpleLoadingButton_Example-frameworks.sh │ │ ├── Pods-SimpleLoadingButton_Example-resources.sh │ │ ├── Pods-SimpleLoadingButton_Example-umbrella.h │ │ ├── Pods-SimpleLoadingButton_Example.debug.xcconfig │ │ ├── Pods-SimpleLoadingButton_Example.modulemap │ │ └── Pods-SimpleLoadingButton_Example.release.xcconfig │ │ ├── Pods-SimpleLoadingButton_Tests │ │ ├── Info.plist │ │ ├── Pods-SimpleLoadingButton_Tests-acknowledgements.markdown │ │ ├── Pods-SimpleLoadingButton_Tests-acknowledgements.plist │ │ ├── Pods-SimpleLoadingButton_Tests-dummy.m │ │ ├── Pods-SimpleLoadingButton_Tests-frameworks.sh │ │ ├── Pods-SimpleLoadingButton_Tests-resources.sh │ │ ├── Pods-SimpleLoadingButton_Tests-umbrella.h │ │ ├── Pods-SimpleLoadingButton_Tests.debug.xcconfig │ │ ├── Pods-SimpleLoadingButton_Tests.modulemap │ │ └── Pods-SimpleLoadingButton_Tests.release.xcconfig │ │ └── SimpleLoadingButton │ │ ├── Info.plist │ │ ├── SimpleLoadingButton-dummy.m │ │ ├── SimpleLoadingButton-prefix.pch │ │ ├── SimpleLoadingButton-umbrella.h │ │ ├── SimpleLoadingButton.modulemap │ │ └── SimpleLoadingButton.xcconfig ├── SimpleLoadingButton.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── SimpleLoadingButton-Example.xcscheme ├── SimpleLoadingButton.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── SimpleLoadingButton │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── ExampleController.swift │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ └── background-image.imageset │ │ │ ├── Contents.json │ │ │ ├── background-image.jpg │ │ │ ├── background-image@2x.jpg │ │ │ └── background-image@3x.jpg │ ├── Info.plist │ └── NSObjectExtensions.swift └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── README.md ├── SimpleLoadingButton.podspec ├── SimpleLoadingButton ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── SimpleLoadingButton.swift │ └── SimpleLoadingView.swift └── _Pods.xcodeproj /.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 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 4.2 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: swift 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -workspace Example/SimpleLoadingButton.xcworkspace -scheme SimpleLoadingButton-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Design/SimpleLoadingButton.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/Design/SimpleLoadingButton.sketch -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'SimpleLoadingButton_Example' do 4 | pod 'SimpleLoadingButton', :path => '../' 5 | 6 | target 'SimpleLoadingButton_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SimpleLoadingButton (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - SimpleLoadingButton (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | SimpleLoadingButton: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | SimpleLoadingButton: 98e8a1c360a5d30149e63045b9facc8e8ebcd7f0 13 | 14 | PODFILE CHECKSUM: cce836a738011e4bc0fdca9f29d438c06c07f3bd 15 | 16 | COCOAPODS: 1.0.0 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/SimpleLoadingButton.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SimpleLoadingButton", 3 | "version": "0.1.0", 4 | "summary": "A short description of SimpleLoadingButton.", 5 | "description": "TODO: Add long description of the pod here.", 6 | "homepage": "https://github.com//SimpleLoadingButton", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Ruva": "iruva@me.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com//SimpleLoadingButton.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "source_files": "SimpleLoadingButton/Classes/**/*" 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SimpleLoadingButton (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - SimpleLoadingButton (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | SimpleLoadingButton: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | SimpleLoadingButton: 98e8a1c360a5d30149e63045b9facc8e8ebcd7f0 13 | 14 | PODFILE CHECKSUM: cce836a738011e4bc0fdca9f29d438c06c07f3bd 15 | 16 | COCOAPODS: 1.0.0 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2EF4966B0BE6E534EA0EE4A744F84BA8 /* Pods-SimpleLoadingButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 985574B01D7A54F1351C2B9EB039DE06 /* Pods-SimpleLoadingButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 40BE4AD142FABD4C4247548F61C4D2FA /* SimpleLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02A4B5573D2D2E16B4E8F1323EA9617B /* SimpleLoadingView.swift */; }; 12 | 56C40344FE2C53B4272CCE258F8088E9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; 13 | 62FD97C630DEE65B112EC8827B4667F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; 14 | 733499156C34155BC1C2A231A8C0AA64 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; 15 | 9167ABA2154525198F8396ABD32BF91A /* Pods-SimpleLoadingButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CD58114697C54AD7A7668CD693FF7F4 /* Pods-SimpleLoadingButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | AB6F1496EF96E0479A587449FBB27781 /* SimpleLoadingButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DB70AFFFEBFBE5685248D30310C2377 /* SimpleLoadingButton.swift */; }; 17 | B93F5D4437B99B1A266F11A31B8250E5 /* Pods-SimpleLoadingButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C2A2D049C3B1DE341208C97B89424B5 /* Pods-SimpleLoadingButton_Example-dummy.m */; }; 18 | BD63604D59F0ED12DCF5983547E47970 /* Pods-SimpleLoadingButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 49CB6F7DF3CAB62E661C5281C8F1539A /* Pods-SimpleLoadingButton_Tests-dummy.m */; }; 19 | BE26232B99253EE7CBFDD65D1062E2CF /* SimpleLoadingButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B7DD6C274EAD82F608B67F932E9E37F /* SimpleLoadingButton-dummy.m */; }; 20 | E3BA7F432538D99D2EA7818E4D42B6DC /* SimpleLoadingButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 02D46E312043DADB68AE31C3ABA2FCF3 /* SimpleLoadingButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXContainerItemProxy section */ 24 | A879159AB16C526C9D6F773386BB6132 /* PBXContainerItemProxy */ = { 25 | isa = PBXContainerItemProxy; 26 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 27 | proxyType = 1; 28 | remoteGlobalIDString = D3BECFEF73BE890786756B086C71EA72; 29 | remoteInfo = SimpleLoadingButton; 30 | }; 31 | /* End PBXContainerItemProxy section */ 32 | 33 | /* Begin PBXFileReference section */ 34 | 02A4B5573D2D2E16B4E8F1323EA9617B /* SimpleLoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleLoadingView.swift; sourceTree = ""; }; 35 | 02D46E312043DADB68AE31C3ABA2FCF3 /* SimpleLoadingButton-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SimpleLoadingButton-umbrella.h"; sourceTree = ""; }; 36 | 08AB1FBED064398247A47E51C1F9E869 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleLoadingButton_Example.debug.xcconfig"; sourceTree = ""; }; 37 | 142CABF72076C35C1AEA147444A1DC6F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38 | 160718F2AA3939BD3A472FB007E7162F /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleLoadingButton_Tests.debug.xcconfig"; sourceTree = ""; }; 39 | 1DB70AFFFEBFBE5685248D30310C2377 /* SimpleLoadingButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleLoadingButton.swift; sourceTree = ""; }; 40 | 20830E13494FF2F29F7BCE29BF7AD841 /* Pods-SimpleLoadingButton_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SimpleLoadingButton_Tests-acknowledgements.markdown"; sourceTree = ""; }; 41 | 20DBEDBFC98C72755A960F2AAB51F09E /* Pods_SimpleLoadingButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleLoadingButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 3439559FA8F30480C0832326DC11DF50 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 34D3C422C577244A6AC595354B9176B6 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleLoadingButton_Tests.release.xcconfig"; sourceTree = ""; }; 44 | 3A464617B3591AEBB4205CD4813C6714 /* Pods-SimpleLoadingButton_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SimpleLoadingButton_Example-acknowledgements.markdown"; sourceTree = ""; }; 45 | 41BA03357F677EA3DD975F9947F4B3F3 /* Pods-SimpleLoadingButton_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SimpleLoadingButton_Tests-acknowledgements.plist"; sourceTree = ""; }; 46 | 49CB6F7DF3CAB62E661C5281C8F1539A /* Pods-SimpleLoadingButton_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SimpleLoadingButton_Tests-dummy.m"; sourceTree = ""; }; 47 | 4C2A2D049C3B1DE341208C97B89424B5 /* Pods-SimpleLoadingButton_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SimpleLoadingButton_Example-dummy.m"; sourceTree = ""; }; 48 | 4CD58114697C54AD7A7668CD693FF7F4 /* Pods-SimpleLoadingButton_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SimpleLoadingButton_Tests-umbrella.h"; sourceTree = ""; }; 49 | 512E074C0D0AC8C7B3A3CEDCB81C6CC6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 50 | 51C31BA38D74F99BC1B4606D148A443F /* Pods-SimpleLoadingButton_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleLoadingButton_Example-frameworks.sh"; sourceTree = ""; }; 51 | 6087FB9A7345DD22A1AE6CFC5788B42E /* Pods-SimpleLoadingButton_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleLoadingButton_Tests-frameworks.sh"; sourceTree = ""; }; 52 | 752914392E282C7709884A076C074BDF /* SimpleLoadingButton-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SimpleLoadingButton-prefix.pch"; sourceTree = ""; }; 53 | 7B7DD6C274EAD82F608B67F932E9E37F /* SimpleLoadingButton-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SimpleLoadingButton-dummy.m"; sourceTree = ""; }; 54 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 55 | 971D1EAD41C25DDD152FC7EEBCEB75A6 /* Pods-SimpleLoadingButton_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleLoadingButton_Example-resources.sh"; sourceTree = ""; }; 56 | 985574B01D7A54F1351C2B9EB039DE06 /* Pods-SimpleLoadingButton_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SimpleLoadingButton_Example-umbrella.h"; sourceTree = ""; }; 57 | 9CA806BA7A604F13F25E6D6EE82BA225 /* Pods-SimpleLoadingButton_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SimpleLoadingButton_Tests-resources.sh"; sourceTree = ""; }; 58 | AF090C07573AD98497AE95CE007AAD1F /* SimpleLoadingButton.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SimpleLoadingButton.modulemap; sourceTree = ""; }; 59 | B823CDBC66C6AC8AEC726CF40F231FDA /* Pods-SimpleLoadingButton_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SimpleLoadingButton_Example.modulemap"; sourceTree = ""; }; 60 | BF607A5187D57D76D06430B05EB3A185 /* SimpleLoadingButton.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SimpleLoadingButton.xcconfig; sourceTree = ""; }; 61 | C13C5E9914BF11B13D6744B454D9B7F9 /* Pods_SimpleLoadingButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleLoadingButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 63 | D5BDF73C570DB1EF6B084B60AA5EAE3E /* Pods-SimpleLoadingButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SimpleLoadingButton_Example.release.xcconfig"; sourceTree = ""; }; 64 | D8C5ABEABD98BF6F59504D7FF1C77234 /* Pods-SimpleLoadingButton_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SimpleLoadingButton_Example-acknowledgements.plist"; sourceTree = ""; }; 65 | DE86548A1A351644E0EF3E53013121DD /* SimpleLoadingButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SimpleLoadingButton.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 66 | E7A92409C43DC94694B9ED63F24E87C6 /* Pods-SimpleLoadingButton_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SimpleLoadingButton_Tests.modulemap"; sourceTree = ""; }; 67 | /* End PBXFileReference section */ 68 | 69 | /* Begin PBXFrameworksBuildPhase section */ 70 | 854E0B8D4387F74A557296870C3B836D /* Frameworks */ = { 71 | isa = PBXFrameworksBuildPhase; 72 | buildActionMask = 2147483647; 73 | files = ( 74 | 56C40344FE2C53B4272CCE258F8088E9 /* Foundation.framework in Frameworks */, 75 | ); 76 | runOnlyForDeploymentPostprocessing = 0; 77 | }; 78 | 94CB3F0C99FCD4A220D671B3AEA1CFA6 /* Frameworks */ = { 79 | isa = PBXFrameworksBuildPhase; 80 | buildActionMask = 2147483647; 81 | files = ( 82 | 62FD97C630DEE65B112EC8827B4667F7 /* Foundation.framework in Frameworks */, 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | CA1E126C00BD9C10E2837C8E0AE96794 /* Frameworks */ = { 87 | isa = PBXFrameworksBuildPhase; 88 | buildActionMask = 2147483647; 89 | files = ( 90 | 733499156C34155BC1C2A231A8C0AA64 /* Foundation.framework in Frameworks */, 91 | ); 92 | runOnlyForDeploymentPostprocessing = 0; 93 | }; 94 | /* End PBXFrameworksBuildPhase section */ 95 | 96 | /* Begin PBXGroup section */ 97 | 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */, 101 | ); 102 | name = iOS; 103 | sourceTree = ""; 104 | }; 105 | 44DE144E7A06A34DF15806C59D85D155 /* Development Pods */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 8208172B16675C5BF4D26F21DA95A6B0 /* SimpleLoadingButton */, 109 | ); 110 | name = "Development Pods"; 111 | sourceTree = ""; 112 | }; 113 | 49290A5AA0EDE8C97B7028C7CAF170B1 /* Pods-SimpleLoadingButton_Example */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 142CABF72076C35C1AEA147444A1DC6F /* Info.plist */, 117 | B823CDBC66C6AC8AEC726CF40F231FDA /* Pods-SimpleLoadingButton_Example.modulemap */, 118 | 3A464617B3591AEBB4205CD4813C6714 /* Pods-SimpleLoadingButton_Example-acknowledgements.markdown */, 119 | D8C5ABEABD98BF6F59504D7FF1C77234 /* Pods-SimpleLoadingButton_Example-acknowledgements.plist */, 120 | 4C2A2D049C3B1DE341208C97B89424B5 /* Pods-SimpleLoadingButton_Example-dummy.m */, 121 | 51C31BA38D74F99BC1B4606D148A443F /* Pods-SimpleLoadingButton_Example-frameworks.sh */, 122 | 971D1EAD41C25DDD152FC7EEBCEB75A6 /* Pods-SimpleLoadingButton_Example-resources.sh */, 123 | 985574B01D7A54F1351C2B9EB039DE06 /* Pods-SimpleLoadingButton_Example-umbrella.h */, 124 | 08AB1FBED064398247A47E51C1F9E869 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */, 125 | D5BDF73C570DB1EF6B084B60AA5EAE3E /* Pods-SimpleLoadingButton_Example.release.xcconfig */, 126 | ); 127 | name = "Pods-SimpleLoadingButton_Example"; 128 | path = "Target Support Files/Pods-SimpleLoadingButton_Example"; 129 | sourceTree = ""; 130 | }; 131 | 682982B59492CA75B30229B6C169CF5A /* Targets Support Files */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 49290A5AA0EDE8C97B7028C7CAF170B1 /* Pods-SimpleLoadingButton_Example */, 135 | 81F3999F21EAD8CA5840C419BD3C045F /* Pods-SimpleLoadingButton_Tests */, 136 | ); 137 | name = "Targets Support Files"; 138 | sourceTree = ""; 139 | }; 140 | 7DB346D0F39D3F0E887471402A8071AB = { 141 | isa = PBXGroup; 142 | children = ( 143 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 144 | 44DE144E7A06A34DF15806C59D85D155 /* Development Pods */, 145 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 146 | 9A153D3F4C25CC87E77A30D50AFC8F20 /* Products */, 147 | 682982B59492CA75B30229B6C169CF5A /* Targets Support Files */, 148 | ); 149 | sourceTree = ""; 150 | }; 151 | 8154BEA5BDF93A5B9CDC62C9047B0C81 /* SimpleLoadingButton */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | B7BCBBE83A3F0EB90613BC935442D4D8 /* Classes */, 155 | ); 156 | path = SimpleLoadingButton; 157 | sourceTree = ""; 158 | }; 159 | 81F3999F21EAD8CA5840C419BD3C045F /* Pods-SimpleLoadingButton_Tests */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | 3439559FA8F30480C0832326DC11DF50 /* Info.plist */, 163 | E7A92409C43DC94694B9ED63F24E87C6 /* Pods-SimpleLoadingButton_Tests.modulemap */, 164 | 20830E13494FF2F29F7BCE29BF7AD841 /* Pods-SimpleLoadingButton_Tests-acknowledgements.markdown */, 165 | 41BA03357F677EA3DD975F9947F4B3F3 /* Pods-SimpleLoadingButton_Tests-acknowledgements.plist */, 166 | 49CB6F7DF3CAB62E661C5281C8F1539A /* Pods-SimpleLoadingButton_Tests-dummy.m */, 167 | 6087FB9A7345DD22A1AE6CFC5788B42E /* Pods-SimpleLoadingButton_Tests-frameworks.sh */, 168 | 9CA806BA7A604F13F25E6D6EE82BA225 /* Pods-SimpleLoadingButton_Tests-resources.sh */, 169 | 4CD58114697C54AD7A7668CD693FF7F4 /* Pods-SimpleLoadingButton_Tests-umbrella.h */, 170 | 160718F2AA3939BD3A472FB007E7162F /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */, 171 | 34D3C422C577244A6AC595354B9176B6 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */, 172 | ); 173 | name = "Pods-SimpleLoadingButton_Tests"; 174 | path = "Target Support Files/Pods-SimpleLoadingButton_Tests"; 175 | sourceTree = ""; 176 | }; 177 | 8208172B16675C5BF4D26F21DA95A6B0 /* SimpleLoadingButton */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | 8154BEA5BDF93A5B9CDC62C9047B0C81 /* SimpleLoadingButton */, 181 | ABA4670C90AC2BE33A8D24DE2F3646BA /* Support Files */, 182 | ); 183 | name = SimpleLoadingButton; 184 | path = ../..; 185 | sourceTree = ""; 186 | }; 187 | 9A153D3F4C25CC87E77A30D50AFC8F20 /* Products */ = { 188 | isa = PBXGroup; 189 | children = ( 190 | C13C5E9914BF11B13D6744B454D9B7F9 /* Pods_SimpleLoadingButton_Example.framework */, 191 | 20DBEDBFC98C72755A960F2AAB51F09E /* Pods_SimpleLoadingButton_Tests.framework */, 192 | DE86548A1A351644E0EF3E53013121DD /* SimpleLoadingButton.framework */, 193 | ); 194 | name = Products; 195 | sourceTree = ""; 196 | }; 197 | ABA4670C90AC2BE33A8D24DE2F3646BA /* Support Files */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 512E074C0D0AC8C7B3A3CEDCB81C6CC6 /* Info.plist */, 201 | AF090C07573AD98497AE95CE007AAD1F /* SimpleLoadingButton.modulemap */, 202 | BF607A5187D57D76D06430B05EB3A185 /* SimpleLoadingButton.xcconfig */, 203 | 7B7DD6C274EAD82F608B67F932E9E37F /* SimpleLoadingButton-dummy.m */, 204 | 752914392E282C7709884A076C074BDF /* SimpleLoadingButton-prefix.pch */, 205 | 02D46E312043DADB68AE31C3ABA2FCF3 /* SimpleLoadingButton-umbrella.h */, 206 | ); 207 | name = "Support Files"; 208 | path = "Example/Pods/Target Support Files/SimpleLoadingButton"; 209 | sourceTree = ""; 210 | }; 211 | B7BCBBE83A3F0EB90613BC935442D4D8 /* Classes */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | 1DB70AFFFEBFBE5685248D30310C2377 /* SimpleLoadingButton.swift */, 215 | 02A4B5573D2D2E16B4E8F1323EA9617B /* SimpleLoadingView.swift */, 216 | ); 217 | path = Classes; 218 | sourceTree = ""; 219 | }; 220 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 221 | isa = PBXGroup; 222 | children = ( 223 | 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */, 224 | ); 225 | name = Frameworks; 226 | sourceTree = ""; 227 | }; 228 | /* End PBXGroup section */ 229 | 230 | /* Begin PBXHeadersBuildPhase section */ 231 | 98F08DFE0D5AA4ECDEE46019AF42DE1C /* Headers */ = { 232 | isa = PBXHeadersBuildPhase; 233 | buildActionMask = 2147483647; 234 | files = ( 235 | 9167ABA2154525198F8396ABD32BF91A /* Pods-SimpleLoadingButton_Tests-umbrella.h in Headers */, 236 | ); 237 | runOnlyForDeploymentPostprocessing = 0; 238 | }; 239 | AA4F114AE93938BF02A281980B408254 /* Headers */ = { 240 | isa = PBXHeadersBuildPhase; 241 | buildActionMask = 2147483647; 242 | files = ( 243 | E3BA7F432538D99D2EA7818E4D42B6DC /* SimpleLoadingButton-umbrella.h in Headers */, 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | }; 247 | C13F21F728158A1E227AECE52F62ED00 /* Headers */ = { 248 | isa = PBXHeadersBuildPhase; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | 2EF4966B0BE6E534EA0EE4A744F84BA8 /* Pods-SimpleLoadingButton_Example-umbrella.h in Headers */, 252 | ); 253 | runOnlyForDeploymentPostprocessing = 0; 254 | }; 255 | /* End PBXHeadersBuildPhase section */ 256 | 257 | /* Begin PBXNativeTarget section */ 258 | 68FCD6191B76B473A07BBD4CB8C48BA5 /* Pods-SimpleLoadingButton_Tests */ = { 259 | isa = PBXNativeTarget; 260 | buildConfigurationList = 01F4228DA4940756629958FEC92E04E8 /* Build configuration list for PBXNativeTarget "Pods-SimpleLoadingButton_Tests" */; 261 | buildPhases = ( 262 | 10C9817B20B04A762458A6BC5388F183 /* Sources */, 263 | 94CB3F0C99FCD4A220D671B3AEA1CFA6 /* Frameworks */, 264 | 98F08DFE0D5AA4ECDEE46019AF42DE1C /* Headers */, 265 | ); 266 | buildRules = ( 267 | ); 268 | dependencies = ( 269 | ); 270 | name = "Pods-SimpleLoadingButton_Tests"; 271 | productName = "Pods-SimpleLoadingButton_Tests"; 272 | productReference = 20DBEDBFC98C72755A960F2AAB51F09E /* Pods_SimpleLoadingButton_Tests.framework */; 273 | productType = "com.apple.product-type.framework"; 274 | }; 275 | D3BECFEF73BE890786756B086C71EA72 /* SimpleLoadingButton */ = { 276 | isa = PBXNativeTarget; 277 | buildConfigurationList = EEF024F8EDF8D205CE9674860F2C7921 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton" */; 278 | buildPhases = ( 279 | 63BBEC82C63C9BFB04DA64EF7D0B1388 /* Sources */, 280 | 854E0B8D4387F74A557296870C3B836D /* Frameworks */, 281 | AA4F114AE93938BF02A281980B408254 /* Headers */, 282 | ); 283 | buildRules = ( 284 | ); 285 | dependencies = ( 286 | ); 287 | name = SimpleLoadingButton; 288 | productName = SimpleLoadingButton; 289 | productReference = DE86548A1A351644E0EF3E53013121DD /* SimpleLoadingButton.framework */; 290 | productType = "com.apple.product-type.framework"; 291 | }; 292 | FE27A1E94DFEC94C407F7614543310BF /* Pods-SimpleLoadingButton_Example */ = { 293 | isa = PBXNativeTarget; 294 | buildConfigurationList = BDF6085A0D886EA9DE2A402167C70F94 /* Build configuration list for PBXNativeTarget "Pods-SimpleLoadingButton_Example" */; 295 | buildPhases = ( 296 | 9C8D1D88EA9139ED74D0244E4D6B0539 /* Sources */, 297 | CA1E126C00BD9C10E2837C8E0AE96794 /* Frameworks */, 298 | C13F21F728158A1E227AECE52F62ED00 /* Headers */, 299 | ); 300 | buildRules = ( 301 | ); 302 | dependencies = ( 303 | 4316C7F9B4C90ADED198771DE8BC6313 /* PBXTargetDependency */, 304 | ); 305 | name = "Pods-SimpleLoadingButton_Example"; 306 | productName = "Pods-SimpleLoadingButton_Example"; 307 | productReference = C13C5E9914BF11B13D6744B454D9B7F9 /* Pods_SimpleLoadingButton_Example.framework */; 308 | productType = "com.apple.product-type.framework"; 309 | }; 310 | /* End PBXNativeTarget section */ 311 | 312 | /* Begin PBXProject section */ 313 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 314 | isa = PBXProject; 315 | attributes = { 316 | LastSwiftUpdateCheck = 0730; 317 | LastUpgradeCheck = 1010; 318 | TargetAttributes = { 319 | D3BECFEF73BE890786756B086C71EA72 = { 320 | LastSwiftMigration = 1010; 321 | }; 322 | FE27A1E94DFEC94C407F7614543310BF = { 323 | LastSwiftMigration = 0800; 324 | }; 325 | }; 326 | }; 327 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 328 | compatibilityVersion = "Xcode 3.2"; 329 | developmentRegion = English; 330 | hasScannedForEncodings = 0; 331 | knownRegions = ( 332 | en, 333 | ); 334 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 335 | productRefGroup = 9A153D3F4C25CC87E77A30D50AFC8F20 /* Products */; 336 | projectDirPath = ""; 337 | projectRoot = ""; 338 | targets = ( 339 | FE27A1E94DFEC94C407F7614543310BF /* Pods-SimpleLoadingButton_Example */, 340 | 68FCD6191B76B473A07BBD4CB8C48BA5 /* Pods-SimpleLoadingButton_Tests */, 341 | D3BECFEF73BE890786756B086C71EA72 /* SimpleLoadingButton */, 342 | ); 343 | }; 344 | /* End PBXProject section */ 345 | 346 | /* Begin PBXSourcesBuildPhase section */ 347 | 10C9817B20B04A762458A6BC5388F183 /* Sources */ = { 348 | isa = PBXSourcesBuildPhase; 349 | buildActionMask = 2147483647; 350 | files = ( 351 | BD63604D59F0ED12DCF5983547E47970 /* Pods-SimpleLoadingButton_Tests-dummy.m in Sources */, 352 | ); 353 | runOnlyForDeploymentPostprocessing = 0; 354 | }; 355 | 63BBEC82C63C9BFB04DA64EF7D0B1388 /* Sources */ = { 356 | isa = PBXSourcesBuildPhase; 357 | buildActionMask = 2147483647; 358 | files = ( 359 | BE26232B99253EE7CBFDD65D1062E2CF /* SimpleLoadingButton-dummy.m in Sources */, 360 | AB6F1496EF96E0479A587449FBB27781 /* SimpleLoadingButton.swift in Sources */, 361 | 40BE4AD142FABD4C4247548F61C4D2FA /* SimpleLoadingView.swift in Sources */, 362 | ); 363 | runOnlyForDeploymentPostprocessing = 0; 364 | }; 365 | 9C8D1D88EA9139ED74D0244E4D6B0539 /* Sources */ = { 366 | isa = PBXSourcesBuildPhase; 367 | buildActionMask = 2147483647; 368 | files = ( 369 | B93F5D4437B99B1A266F11A31B8250E5 /* Pods-SimpleLoadingButton_Example-dummy.m in Sources */, 370 | ); 371 | runOnlyForDeploymentPostprocessing = 0; 372 | }; 373 | /* End PBXSourcesBuildPhase section */ 374 | 375 | /* Begin PBXTargetDependency section */ 376 | 4316C7F9B4C90ADED198771DE8BC6313 /* PBXTargetDependency */ = { 377 | isa = PBXTargetDependency; 378 | name = SimpleLoadingButton; 379 | target = D3BECFEF73BE890786756B086C71EA72 /* SimpleLoadingButton */; 380 | targetProxy = A879159AB16C526C9D6F773386BB6132 /* PBXContainerItemProxy */; 381 | }; 382 | /* End PBXTargetDependency section */ 383 | 384 | /* Begin XCBuildConfiguration section */ 385 | 0ACDCBCB0B6796575F46FFA2F5410C6B /* Release */ = { 386 | isa = XCBuildConfiguration; 387 | buildSettings = { 388 | ALWAYS_SEARCH_USER_PATHS = NO; 389 | CLANG_ANALYZER_NONNULL = YES; 390 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 391 | CLANG_CXX_LIBRARY = "libc++"; 392 | CLANG_ENABLE_MODULES = YES; 393 | CLANG_ENABLE_OBJC_ARC = YES; 394 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 395 | CLANG_WARN_BOOL_CONVERSION = YES; 396 | CLANG_WARN_COMMA = YES; 397 | CLANG_WARN_CONSTANT_CONVERSION = YES; 398 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 399 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 400 | CLANG_WARN_EMPTY_BODY = YES; 401 | CLANG_WARN_ENUM_CONVERSION = YES; 402 | CLANG_WARN_INFINITE_RECURSION = YES; 403 | CLANG_WARN_INT_CONVERSION = YES; 404 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 405 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 406 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 407 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 408 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 409 | CLANG_WARN_STRICT_PROTOTYPES = YES; 410 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 411 | CLANG_WARN_UNREACHABLE_CODE = YES; 412 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 413 | COPY_PHASE_STRIP = YES; 414 | ENABLE_NS_ASSERTIONS = NO; 415 | ENABLE_STRICT_OBJC_MSGSEND = YES; 416 | GCC_C_LANGUAGE_STANDARD = gnu99; 417 | GCC_NO_COMMON_BLOCKS = YES; 418 | GCC_PREPROCESSOR_DEFINITIONS = ( 419 | "POD_CONFIGURATION_RELEASE=1", 420 | "$(inherited)", 421 | ); 422 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 423 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 424 | GCC_WARN_UNDECLARED_SELECTOR = YES; 425 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 426 | GCC_WARN_UNUSED_FUNCTION = YES; 427 | GCC_WARN_UNUSED_VARIABLE = YES; 428 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 429 | STRIP_INSTALLED_PRODUCT = NO; 430 | SWIFT_COMPILATION_MODE = wholemodule; 431 | SYMROOT = "${SRCROOT}/../build"; 432 | VALIDATE_PRODUCT = YES; 433 | }; 434 | name = Release; 435 | }; 436 | 1AFC141F1375C06E7FAD878CB16129E6 /* Debug */ = { 437 | isa = XCBuildConfiguration; 438 | baseConfigurationReference = 08AB1FBED064398247A47E51C1F9E869 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */; 439 | buildSettings = { 440 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 441 | CODE_SIGN_IDENTITY = ""; 442 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 443 | CURRENT_PROJECT_VERSION = 1; 444 | DEBUG_INFORMATION_FORMAT = dwarf; 445 | DEFINES_MODULE = YES; 446 | DYLIB_COMPATIBILITY_VERSION = 1; 447 | DYLIB_CURRENT_VERSION = 1; 448 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 449 | ENABLE_STRICT_OBJC_MSGSEND = YES; 450 | GCC_NO_COMMON_BLOCKS = YES; 451 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleLoadingButton_Example/Info.plist"; 452 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 453 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 454 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 455 | MACH_O_TYPE = staticlib; 456 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.modulemap"; 457 | MTL_ENABLE_DEBUG_INFO = YES; 458 | OTHER_LDFLAGS = ""; 459 | OTHER_LIBTOOLFLAGS = ""; 460 | PODS_ROOT = "$(SRCROOT)"; 461 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 462 | PRODUCT_NAME = Pods_SimpleLoadingButton_Example; 463 | SDKROOT = iphoneos; 464 | SKIP_INSTALL = YES; 465 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 466 | SWIFT_VERSION = 3.0; 467 | TARGETED_DEVICE_FAMILY = "1,2"; 468 | VERSIONING_SYSTEM = "apple-generic"; 469 | VERSION_INFO_PREFIX = ""; 470 | }; 471 | name = Debug; 472 | }; 473 | 21F70DF6A8176DCB5E81ED80B741A38E /* Debug */ = { 474 | isa = XCBuildConfiguration; 475 | baseConfigurationReference = BF607A5187D57D76D06430B05EB3A185 /* SimpleLoadingButton.xcconfig */; 476 | buildSettings = { 477 | CODE_SIGN_IDENTITY = ""; 478 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 479 | CURRENT_PROJECT_VERSION = 1; 480 | DEBUG_INFORMATION_FORMAT = dwarf; 481 | DEFINES_MODULE = YES; 482 | DYLIB_COMPATIBILITY_VERSION = 1; 483 | DYLIB_CURRENT_VERSION = 1; 484 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 485 | ENABLE_STRICT_OBJC_MSGSEND = YES; 486 | GCC_NO_COMMON_BLOCKS = YES; 487 | GCC_PREFIX_HEADER = "Target Support Files/SimpleLoadingButton/SimpleLoadingButton-prefix.pch"; 488 | INFOPLIST_FILE = "Target Support Files/SimpleLoadingButton/Info.plist"; 489 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 490 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 491 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 492 | MODULEMAP_FILE = "Target Support Files/SimpleLoadingButton/SimpleLoadingButton.modulemap"; 493 | MTL_ENABLE_DEBUG_INFO = YES; 494 | PRODUCT_NAME = SimpleLoadingButton; 495 | SDKROOT = iphoneos; 496 | SKIP_INSTALL = YES; 497 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 498 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 499 | SWIFT_VERSION = 4.2; 500 | TARGETED_DEVICE_FAMILY = "1,2"; 501 | VERSIONING_SYSTEM = "apple-generic"; 502 | VERSION_INFO_PREFIX = ""; 503 | }; 504 | name = Debug; 505 | }; 506 | 2A106B26520CE19A00E95A1BF97B1435 /* Debug */ = { 507 | isa = XCBuildConfiguration; 508 | baseConfigurationReference = 160718F2AA3939BD3A472FB007E7162F /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */; 509 | buildSettings = { 510 | CODE_SIGN_IDENTITY = ""; 511 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 512 | CURRENT_PROJECT_VERSION = 1; 513 | DEBUG_INFORMATION_FORMAT = dwarf; 514 | DEFINES_MODULE = YES; 515 | DYLIB_COMPATIBILITY_VERSION = 1; 516 | DYLIB_CURRENT_VERSION = 1; 517 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 518 | ENABLE_STRICT_OBJC_MSGSEND = YES; 519 | GCC_NO_COMMON_BLOCKS = YES; 520 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleLoadingButton_Tests/Info.plist"; 521 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 522 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 523 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 524 | MACH_O_TYPE = staticlib; 525 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.modulemap"; 526 | MTL_ENABLE_DEBUG_INFO = YES; 527 | OTHER_LDFLAGS = ""; 528 | OTHER_LIBTOOLFLAGS = ""; 529 | PODS_ROOT = "$(SRCROOT)"; 530 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 531 | PRODUCT_NAME = Pods_SimpleLoadingButton_Tests; 532 | SDKROOT = iphoneos; 533 | SKIP_INSTALL = YES; 534 | TARGETED_DEVICE_FAMILY = "1,2"; 535 | VERSIONING_SYSTEM = "apple-generic"; 536 | VERSION_INFO_PREFIX = ""; 537 | }; 538 | name = Debug; 539 | }; 540 | 58AD0FD1A99D44F403F7FCCEF3C92702 /* Release */ = { 541 | isa = XCBuildConfiguration; 542 | baseConfigurationReference = BF607A5187D57D76D06430B05EB3A185 /* SimpleLoadingButton.xcconfig */; 543 | buildSettings = { 544 | CODE_SIGN_IDENTITY = ""; 545 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 546 | CURRENT_PROJECT_VERSION = 1; 547 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 548 | DEFINES_MODULE = YES; 549 | DYLIB_COMPATIBILITY_VERSION = 1; 550 | DYLIB_CURRENT_VERSION = 1; 551 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 552 | ENABLE_STRICT_OBJC_MSGSEND = YES; 553 | GCC_NO_COMMON_BLOCKS = YES; 554 | GCC_PREFIX_HEADER = "Target Support Files/SimpleLoadingButton/SimpleLoadingButton-prefix.pch"; 555 | INFOPLIST_FILE = "Target Support Files/SimpleLoadingButton/Info.plist"; 556 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 557 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 558 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 559 | MODULEMAP_FILE = "Target Support Files/SimpleLoadingButton/SimpleLoadingButton.modulemap"; 560 | MTL_ENABLE_DEBUG_INFO = NO; 561 | PRODUCT_NAME = SimpleLoadingButton; 562 | SDKROOT = iphoneos; 563 | SKIP_INSTALL = YES; 564 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 565 | SWIFT_VERSION = 4.2; 566 | TARGETED_DEVICE_FAMILY = "1,2"; 567 | VERSIONING_SYSTEM = "apple-generic"; 568 | VERSION_INFO_PREFIX = ""; 569 | }; 570 | name = Release; 571 | }; 572 | A1718A52348C7DA9C5E27FD09F518CFE /* Release */ = { 573 | isa = XCBuildConfiguration; 574 | baseConfigurationReference = 34D3C422C577244A6AC595354B9176B6 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */; 575 | buildSettings = { 576 | CODE_SIGN_IDENTITY = ""; 577 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 578 | CURRENT_PROJECT_VERSION = 1; 579 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 580 | DEFINES_MODULE = YES; 581 | DYLIB_COMPATIBILITY_VERSION = 1; 582 | DYLIB_CURRENT_VERSION = 1; 583 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 584 | ENABLE_STRICT_OBJC_MSGSEND = YES; 585 | GCC_NO_COMMON_BLOCKS = YES; 586 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleLoadingButton_Tests/Info.plist"; 587 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 588 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 589 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 590 | MACH_O_TYPE = staticlib; 591 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.modulemap"; 592 | MTL_ENABLE_DEBUG_INFO = NO; 593 | OTHER_LDFLAGS = ""; 594 | OTHER_LIBTOOLFLAGS = ""; 595 | PODS_ROOT = "$(SRCROOT)"; 596 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 597 | PRODUCT_NAME = Pods_SimpleLoadingButton_Tests; 598 | SDKROOT = iphoneos; 599 | SKIP_INSTALL = YES; 600 | TARGETED_DEVICE_FAMILY = "1,2"; 601 | VERSIONING_SYSTEM = "apple-generic"; 602 | VERSION_INFO_PREFIX = ""; 603 | }; 604 | name = Release; 605 | }; 606 | B24EA1E937B1AA81BFE0C25B3DDF564C /* Release */ = { 607 | isa = XCBuildConfiguration; 608 | baseConfigurationReference = D5BDF73C570DB1EF6B084B60AA5EAE3E /* Pods-SimpleLoadingButton_Example.release.xcconfig */; 609 | buildSettings = { 610 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 611 | CODE_SIGN_IDENTITY = ""; 612 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 613 | CURRENT_PROJECT_VERSION = 1; 614 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 615 | DEFINES_MODULE = YES; 616 | DYLIB_COMPATIBILITY_VERSION = 1; 617 | DYLIB_CURRENT_VERSION = 1; 618 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 619 | ENABLE_STRICT_OBJC_MSGSEND = YES; 620 | GCC_NO_COMMON_BLOCKS = YES; 621 | INFOPLIST_FILE = "Target Support Files/Pods-SimpleLoadingButton_Example/Info.plist"; 622 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 623 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 624 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 625 | MACH_O_TYPE = staticlib; 626 | MODULEMAP_FILE = "Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.modulemap"; 627 | MTL_ENABLE_DEBUG_INFO = NO; 628 | OTHER_LDFLAGS = ""; 629 | OTHER_LIBTOOLFLAGS = ""; 630 | PODS_ROOT = "$(SRCROOT)"; 631 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 632 | PRODUCT_NAME = Pods_SimpleLoadingButton_Example; 633 | SDKROOT = iphoneos; 634 | SKIP_INSTALL = YES; 635 | SWIFT_VERSION = 3.0; 636 | TARGETED_DEVICE_FAMILY = "1,2"; 637 | VERSIONING_SYSTEM = "apple-generic"; 638 | VERSION_INFO_PREFIX = ""; 639 | }; 640 | name = Release; 641 | }; 642 | D3E3D092A3FF7311A98E44BBA36FFD12 /* Debug */ = { 643 | isa = XCBuildConfiguration; 644 | buildSettings = { 645 | ALWAYS_SEARCH_USER_PATHS = NO; 646 | CLANG_ANALYZER_NONNULL = YES; 647 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 648 | CLANG_CXX_LIBRARY = "libc++"; 649 | CLANG_ENABLE_MODULES = YES; 650 | CLANG_ENABLE_OBJC_ARC = YES; 651 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 652 | CLANG_WARN_BOOL_CONVERSION = YES; 653 | CLANG_WARN_COMMA = YES; 654 | CLANG_WARN_CONSTANT_CONVERSION = YES; 655 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 656 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 657 | CLANG_WARN_EMPTY_BODY = YES; 658 | CLANG_WARN_ENUM_CONVERSION = YES; 659 | CLANG_WARN_INFINITE_RECURSION = YES; 660 | CLANG_WARN_INT_CONVERSION = YES; 661 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 662 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 663 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 664 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 665 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 666 | CLANG_WARN_STRICT_PROTOTYPES = YES; 667 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 668 | CLANG_WARN_UNREACHABLE_CODE = YES; 669 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 670 | COPY_PHASE_STRIP = NO; 671 | ENABLE_STRICT_OBJC_MSGSEND = YES; 672 | ENABLE_TESTABILITY = YES; 673 | GCC_C_LANGUAGE_STANDARD = gnu99; 674 | GCC_DYNAMIC_NO_PIC = NO; 675 | GCC_NO_COMMON_BLOCKS = YES; 676 | GCC_OPTIMIZATION_LEVEL = 0; 677 | GCC_PREPROCESSOR_DEFINITIONS = ( 678 | "POD_CONFIGURATION_DEBUG=1", 679 | "DEBUG=1", 680 | "$(inherited)", 681 | ); 682 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 683 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 684 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 685 | GCC_WARN_UNDECLARED_SELECTOR = YES; 686 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 687 | GCC_WARN_UNUSED_FUNCTION = YES; 688 | GCC_WARN_UNUSED_VARIABLE = YES; 689 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 690 | ONLY_ACTIVE_ARCH = YES; 691 | STRIP_INSTALLED_PRODUCT = NO; 692 | SYMROOT = "${SRCROOT}/../build"; 693 | }; 694 | name = Debug; 695 | }; 696 | /* End XCBuildConfiguration section */ 697 | 698 | /* Begin XCConfigurationList section */ 699 | 01F4228DA4940756629958FEC92E04E8 /* Build configuration list for PBXNativeTarget "Pods-SimpleLoadingButton_Tests" */ = { 700 | isa = XCConfigurationList; 701 | buildConfigurations = ( 702 | 2A106B26520CE19A00E95A1BF97B1435 /* Debug */, 703 | A1718A52348C7DA9C5E27FD09F518CFE /* Release */, 704 | ); 705 | defaultConfigurationIsVisible = 0; 706 | defaultConfigurationName = Release; 707 | }; 708 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 709 | isa = XCConfigurationList; 710 | buildConfigurations = ( 711 | D3E3D092A3FF7311A98E44BBA36FFD12 /* Debug */, 712 | 0ACDCBCB0B6796575F46FFA2F5410C6B /* Release */, 713 | ); 714 | defaultConfigurationIsVisible = 0; 715 | defaultConfigurationName = Release; 716 | }; 717 | BDF6085A0D886EA9DE2A402167C70F94 /* Build configuration list for PBXNativeTarget "Pods-SimpleLoadingButton_Example" */ = { 718 | isa = XCConfigurationList; 719 | buildConfigurations = ( 720 | 1AFC141F1375C06E7FAD878CB16129E6 /* Debug */, 721 | B24EA1E937B1AA81BFE0C25B3DDF564C /* Release */, 722 | ); 723 | defaultConfigurationIsVisible = 0; 724 | defaultConfigurationName = Release; 725 | }; 726 | EEF024F8EDF8D205CE9674860F2C7921 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton" */ = { 727 | isa = XCConfigurationList; 728 | buildConfigurations = ( 729 | 21F70DF6A8176DCB5E81ED80B741A38E /* Debug */, 730 | 58AD0FD1A99D44F403F7FCCEF3C92702 /* Release */, 731 | ); 732 | defaultConfigurationIsVisible = 0; 733 | defaultConfigurationName = Release; 734 | }; 735 | /* End XCConfigurationList section */ 736 | }; 737 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 738 | } 739 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/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.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SimpleLoadingButton 5 | 6 | Copyright (c) 2016 Ruva 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-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 | Copyright (c) 2016 Ruva <iruva@me.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | Title 38 | SimpleLoadingButton 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Generated by CocoaPods - https://cocoapods.org 45 | Title 46 | 47 | Type 48 | PSGroupSpecifier 49 | 50 | 51 | StringsTable 52 | Acknowledgements 53 | Title 54 | Acknowledgements 55 | 56 | 57 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimpleLoadingButton_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimpleLoadingButton_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | 86 | if [[ "$CONFIGURATION" == "Debug" ]]; then 87 | install_framework "$BUILT_PRODUCTS_DIR/SimpleLoadingButton/SimpleLoadingButton.framework" 88 | fi 89 | if [[ "$CONFIGURATION" == "Release" ]]; then 90 | install_framework "$BUILT_PRODUCTS_DIR/SimpleLoadingButton/SimpleLoadingButton.framework" 91 | fi 92 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | realpath() { 27 | DIRECTORY="$(cd "${1%/*}" && pwd)" 28 | FILENAME="${1##*/}" 29 | echo "$DIRECTORY/$FILENAME" 30 | } 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 49 | ;; 50 | *.xib) 51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" 52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 102 | fi 103 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_SimpleLoadingButton_ExampleVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_SimpleLoadingButton_ExampleVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton/SimpleLoadingButton.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "SimpleLoadingButton" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimpleLoadingButton_Example { 2 | umbrella header "Pods-SimpleLoadingButton_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton/SimpleLoadingButton.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "SimpleLoadingButton" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = $BUILD_DIR 9 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/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.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-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 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_SimpleLoadingButton_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_SimpleLoadingButton_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" 63 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" 64 | fi 65 | } 66 | 67 | # Strip invalid architectures 68 | strip_invalid_archs() { 69 | binary="$1" 70 | # Get architectures for current file 71 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 72 | stripped="" 73 | for arch in $archs; do 74 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 75 | # Strip non-valid architectures in-place 76 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 77 | stripped="$stripped $arch" 78 | fi 79 | done 80 | if [[ "$stripped" ]]; then 81 | echo "Stripped $binary of architectures:$stripped" 82 | fi 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | *) 22 | TARGET_DEVICE_ARGS="--target-device mac" 23 | ;; 24 | esac 25 | 26 | realpath() { 27 | DIRECTORY="$(cd "${1%/*}" && pwd)" 28 | FILENAME="${1##*/}" 29 | echo "$DIRECTORY/$FILENAME" 30 | } 31 | 32 | install_resource() 33 | { 34 | if [[ "$1" = /* ]] ; then 35 | RESOURCE_PATH="$1" 36 | else 37 | RESOURCE_PATH="${PODS_ROOT}/$1" 38 | fi 39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 40 | cat << EOM 41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 42 | EOM 43 | exit 1 44 | fi 45 | case $RESOURCE_PATH in 46 | *.storyboard) 47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 49 | ;; 50 | *.xib) 51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" 52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" 53 | ;; 54 | *.framework) 55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 59 | ;; 60 | *.xcdatamodel) 61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 63 | ;; 64 | *.xcdatamodeld) 65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 67 | ;; 68 | *.xcmappingmodel) 69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 71 | ;; 72 | *.xcassets) 73 | ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") 74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 75 | ;; 76 | *) 77 | echo "$RESOURCE_PATH" 78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 79 | ;; 80 | esac 81 | } 82 | 83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 88 | fi 89 | rm -f "$RESOURCES_TO_COPY" 90 | 91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 92 | then 93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 95 | while read line; do 96 | if [[ $line != "`realpath $PODS_ROOT`*" ]]; then 97 | XCASSET_FILES+=("$line") 98 | fi 99 | done <<<"$OTHER_XCASSETS" 100 | 101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 102 | fi 103 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_SimpleLoadingButton_TestsVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_SimpleLoadingButton_TestsVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton/SimpleLoadingButton.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_SimpleLoadingButton_Tests { 2 | umbrella header "Pods-SimpleLoadingButton_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton/SimpleLoadingButton.framework/Headers" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT}/Pods 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/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 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/SimpleLoadingButton-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SimpleLoadingButton : NSObject 3 | @end 4 | @implementation PodsDummy_SimpleLoadingButton 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/SimpleLoadingButton-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/SimpleLoadingButton-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double SimpleLoadingButtonVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char SimpleLoadingButtonVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/SimpleLoadingButton.modulemap: -------------------------------------------------------------------------------- 1 | framework module SimpleLoadingButton { 2 | umbrella header "SimpleLoadingButton-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/SimpleLoadingButton/SimpleLoadingButton.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SimpleLoadingButton 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 4 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 5 | PODS_BUILD_DIR = $BUILD_DIR 6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 5E0DED30147EBFC5792E4DE3 /* Pods_SimpleLoadingButton_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 879F4EF997E8D50CC6F819B8 /* Pods_SimpleLoadingButton_Tests.framework */; }; 11 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 12 | 93F977D0A864FA17DABB6124 /* Pods_SimpleLoadingButton_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2AC8DEF0C4B37B23DC0DF74 /* Pods_SimpleLoadingButton_Example.framework */; }; 13 | C742CEFC1D376C6F0057AA27 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C742CEF91D376C6F0057AA27 /* AppDelegate.swift */; }; 14 | C742CEFD1D376C6F0057AA27 /* ExampleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C742CEFA1D376C6F0057AA27 /* ExampleController.swift */; }; 15 | C742CEFE1D376C6F0057AA27 /* NSObjectExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C742CEFB1D376C6F0057AA27 /* NSObjectExtensions.swift */; }; 16 | C742CF001D376CAC0057AA27 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C742CEFF1D376CAC0057AA27 /* Images.xcassets */; }; 17 | C742CF051D376CB40057AA27 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C742CF011D376CB40057AA27 /* Main.storyboard */; }; 18 | C742CF061D376CB40057AA27 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C742CF031D376CB40057AA27 /* LaunchScreen.xib */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 27 | remoteInfo = SimpleLoadingButton; 28 | }; 29 | /* End PBXContainerItemProxy section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 0A804F2D5DFCF29D4FB9D4A5 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleLoadingButton_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.release.xcconfig"; sourceTree = ""; }; 33 | 33E2C13174625C5E677CB78B /* Pods-SimpleLoadingButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleLoadingButton_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.release.xcconfig"; sourceTree = ""; }; 34 | 4E35A33B5956F7B130686288 /* SimpleLoadingButton.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SimpleLoadingButton.podspec; path = ../SimpleLoadingButton.podspec; sourceTree = ""; }; 35 | 607FACD01AFB9204008FA782 /* SimpleLoadingButton_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleLoadingButton_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 607FACE51AFB9204008FA782 /* SimpleLoadingButton_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimpleLoadingButton_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 38 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 39 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 40 | 6FA956AFF9EB911E1DE2AB79 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 41 | 75A2D22B621D76BF8A4E4D39 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleLoadingButton_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example.debug.xcconfig"; sourceTree = ""; }; 42 | 879F4EF997E8D50CC6F819B8 /* Pods_SimpleLoadingButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleLoadingButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 43 | C742CEF91D376C6F0057AA27 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 44 | C742CEFA1D376C6F0057AA27 /* ExampleController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleController.swift; sourceTree = ""; }; 45 | C742CEFB1D376C6F0057AA27 /* NSObjectExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSObjectExtensions.swift; sourceTree = ""; }; 46 | C742CEFF1D376CAC0057AA27 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 47 | C742CF021D376CB40057AA27 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 48 | C742CF041D376CB40057AA27 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 49 | E2AC8DEF0C4B37B23DC0DF74 /* Pods_SimpleLoadingButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimpleLoadingButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | E37AA166ADA6B528D8EB5E09 /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimpleLoadingButton_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests.debug.xcconfig"; sourceTree = ""; }; 51 | EDD306A05C4B8167DAA9C3DC /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 52 | /* End PBXFileReference section */ 53 | 54 | /* Begin PBXFrameworksBuildPhase section */ 55 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 56 | isa = PBXFrameworksBuildPhase; 57 | buildActionMask = 2147483647; 58 | files = ( 59 | 93F977D0A864FA17DABB6124 /* Pods_SimpleLoadingButton_Example.framework in Frameworks */, 60 | ); 61 | runOnlyForDeploymentPostprocessing = 0; 62 | }; 63 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 64 | isa = PBXFrameworksBuildPhase; 65 | buildActionMask = 2147483647; 66 | files = ( 67 | 5E0DED30147EBFC5792E4DE3 /* Pods_SimpleLoadingButton_Tests.framework in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | /* End PBXFrameworksBuildPhase section */ 72 | 73 | /* Begin PBXGroup section */ 74 | 607FACC71AFB9204008FA782 = { 75 | isa = PBXGroup; 76 | children = ( 77 | 607FACD21AFB9204008FA782 /* Example */, 78 | 607FACF51AFB993E008FA782 /* Metadata */, 79 | 607FACE81AFB9204008FA782 /* Tests */, 80 | 607FACD11AFB9204008FA782 /* Products */, 81 | C19D8F8D30AF99FED3DC8E75 /* Pods */, 82 | EB8160599382F30BF41BD9D5 /* Frameworks */, 83 | ); 84 | sourceTree = ""; 85 | }; 86 | 607FACD11AFB9204008FA782 /* Products */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 607FACD01AFB9204008FA782 /* SimpleLoadingButton_Example.app */, 90 | 607FACE51AFB9204008FA782 /* SimpleLoadingButton_Tests.xctest */, 91 | ); 92 | name = Products; 93 | sourceTree = ""; 94 | }; 95 | 607FACD21AFB9204008FA782 /* Example */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | C742CEF91D376C6F0057AA27 /* AppDelegate.swift */, 99 | C742CEFA1D376C6F0057AA27 /* ExampleController.swift */, 100 | C742CF011D376CB40057AA27 /* Main.storyboard */, 101 | C742CF031D376CB40057AA27 /* LaunchScreen.xib */, 102 | C742CEFF1D376CAC0057AA27 /* Images.xcassets */, 103 | C742CF0B1D376E760057AA27 /* Extensions */, 104 | 607FACD31AFB9204008FA782 /* Supporting Files */, 105 | ); 106 | name = Example; 107 | path = SimpleLoadingButton; 108 | sourceTree = ""; 109 | }; 110 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 607FACD41AFB9204008FA782 /* Info.plist */, 114 | ); 115 | name = "Supporting Files"; 116 | sourceTree = ""; 117 | }; 118 | 607FACE81AFB9204008FA782 /* Tests */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 122 | 607FACE91AFB9204008FA782 /* Supporting Files */, 123 | ); 124 | path = Tests; 125 | sourceTree = ""; 126 | }; 127 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 607FACEA1AFB9204008FA782 /* Info.plist */, 131 | ); 132 | name = "Supporting Files"; 133 | sourceTree = ""; 134 | }; 135 | 607FACF51AFB993E008FA782 /* Metadata */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | 4E35A33B5956F7B130686288 /* SimpleLoadingButton.podspec */, 139 | EDD306A05C4B8167DAA9C3DC /* README.md */, 140 | 6FA956AFF9EB911E1DE2AB79 /* LICENSE */, 141 | ); 142 | name = Metadata; 143 | sourceTree = ""; 144 | }; 145 | C19D8F8D30AF99FED3DC8E75 /* Pods */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 75A2D22B621D76BF8A4E4D39 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */, 149 | 33E2C13174625C5E677CB78B /* Pods-SimpleLoadingButton_Example.release.xcconfig */, 150 | E37AA166ADA6B528D8EB5E09 /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */, 151 | 0A804F2D5DFCF29D4FB9D4A5 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */, 152 | ); 153 | name = Pods; 154 | sourceTree = ""; 155 | }; 156 | C742CF0B1D376E760057AA27 /* Extensions */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | C742CEFB1D376C6F0057AA27 /* NSObjectExtensions.swift */, 160 | ); 161 | name = Extensions; 162 | sourceTree = ""; 163 | }; 164 | EB8160599382F30BF41BD9D5 /* Frameworks */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | E2AC8DEF0C4B37B23DC0DF74 /* Pods_SimpleLoadingButton_Example.framework */, 168 | 879F4EF997E8D50CC6F819B8 /* Pods_SimpleLoadingButton_Tests.framework */, 169 | ); 170 | name = Frameworks; 171 | sourceTree = ""; 172 | }; 173 | /* End PBXGroup section */ 174 | 175 | /* Begin PBXNativeTarget section */ 176 | 607FACCF1AFB9204008FA782 /* SimpleLoadingButton_Example */ = { 177 | isa = PBXNativeTarget; 178 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton_Example" */; 179 | buildPhases = ( 180 | CA368838E7E3C2A6932B1A60 /* 📦 Check Pods Manifest.lock */, 181 | 5ED4929F78B0F37C5682F63E /* [CP] Check Pods Manifest.lock */, 182 | 607FACCC1AFB9204008FA782 /* Sources */, 183 | 607FACCD1AFB9204008FA782 /* Frameworks */, 184 | 607FACCE1AFB9204008FA782 /* Resources */, 185 | 0DA5348502267AC323C60B62 /* [CP] Embed Pods Frameworks */, 186 | B13EE47C33AA4CE390AF71E0 /* [CP] Copy Pods Resources */, 187 | 5A557888D9CADEACFAA20E45 /* 📦 Embed Pods Frameworks */, 188 | 1C4D041A290BFF571C2677E8 /* 📦 Copy Pods Resources */, 189 | ); 190 | buildRules = ( 191 | ); 192 | dependencies = ( 193 | ); 194 | name = SimpleLoadingButton_Example; 195 | productName = SimpleLoadingButton; 196 | productReference = 607FACD01AFB9204008FA782 /* SimpleLoadingButton_Example.app */; 197 | productType = "com.apple.product-type.application"; 198 | }; 199 | 607FACE41AFB9204008FA782 /* SimpleLoadingButton_Tests */ = { 200 | isa = PBXNativeTarget; 201 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton_Tests" */; 202 | buildPhases = ( 203 | CDB37F0A0D57F3F401270DE8 /* 📦 Check Pods Manifest.lock */, 204 | 10A36AEAD10D44B7A533F6C8 /* [CP] Check Pods Manifest.lock */, 205 | 607FACE11AFB9204008FA782 /* Sources */, 206 | 607FACE21AFB9204008FA782 /* Frameworks */, 207 | 607FACE31AFB9204008FA782 /* Resources */, 208 | F43DF732DDC33F607D7F4158 /* [CP] Embed Pods Frameworks */, 209 | D91EE80906D578BB4570BC2F /* [CP] Copy Pods Resources */, 210 | 57CD67F3890066B651531821 /* 📦 Embed Pods Frameworks */, 211 | 5E8F9692E1734E1E5838B4EC /* 📦 Copy Pods Resources */, 212 | ); 213 | buildRules = ( 214 | ); 215 | dependencies = ( 216 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 217 | ); 218 | name = SimpleLoadingButton_Tests; 219 | productName = Tests; 220 | productReference = 607FACE51AFB9204008FA782 /* SimpleLoadingButton_Tests.xctest */; 221 | productType = "com.apple.product-type.bundle.unit-test"; 222 | }; 223 | /* End PBXNativeTarget section */ 224 | 225 | /* Begin PBXProject section */ 226 | 607FACC81AFB9204008FA782 /* Project object */ = { 227 | isa = PBXProject; 228 | attributes = { 229 | LastSwiftUpdateCheck = 0730; 230 | LastUpgradeCheck = 1010; 231 | ORGANIZATIONNAME = CocoaPods; 232 | TargetAttributes = { 233 | 607FACCF1AFB9204008FA782 = { 234 | CreatedOnToolsVersion = 6.3.1; 235 | DevelopmentTeam = A85K9ZZ95H; 236 | LastSwiftMigration = 1010; 237 | }; 238 | 607FACE41AFB9204008FA782 = { 239 | CreatedOnToolsVersion = 6.3.1; 240 | DevelopmentTeam = A85K9ZZ95H; 241 | LastSwiftMigration = 1010; 242 | TestTargetID = 607FACCF1AFB9204008FA782; 243 | }; 244 | }; 245 | }; 246 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SimpleLoadingButton" */; 247 | compatibilityVersion = "Xcode 3.2"; 248 | developmentRegion = English; 249 | hasScannedForEncodings = 0; 250 | knownRegions = ( 251 | en, 252 | Base, 253 | ); 254 | mainGroup = 607FACC71AFB9204008FA782; 255 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 256 | projectDirPath = ""; 257 | projectRoot = ""; 258 | targets = ( 259 | 607FACCF1AFB9204008FA782 /* SimpleLoadingButton_Example */, 260 | 607FACE41AFB9204008FA782 /* SimpleLoadingButton_Tests */, 261 | ); 262 | }; 263 | /* End PBXProject section */ 264 | 265 | /* Begin PBXResourcesBuildPhase section */ 266 | 607FACCE1AFB9204008FA782 /* Resources */ = { 267 | isa = PBXResourcesBuildPhase; 268 | buildActionMask = 2147483647; 269 | files = ( 270 | C742CF001D376CAC0057AA27 /* Images.xcassets in Resources */, 271 | C742CF061D376CB40057AA27 /* LaunchScreen.xib in Resources */, 272 | C742CF051D376CB40057AA27 /* Main.storyboard in Resources */, 273 | ); 274 | runOnlyForDeploymentPostprocessing = 0; 275 | }; 276 | 607FACE31AFB9204008FA782 /* Resources */ = { 277 | isa = PBXResourcesBuildPhase; 278 | buildActionMask = 2147483647; 279 | files = ( 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | }; 283 | /* End PBXResourcesBuildPhase section */ 284 | 285 | /* Begin PBXShellScriptBuildPhase section */ 286 | 0DA5348502267AC323C60B62 /* [CP] Embed Pods Frameworks */ = { 287 | isa = PBXShellScriptBuildPhase; 288 | buildActionMask = 2147483647; 289 | files = ( 290 | ); 291 | inputPaths = ( 292 | ); 293 | name = "[CP] Embed Pods Frameworks"; 294 | outputPaths = ( 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | shellPath = /bin/sh; 298 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-frameworks.sh\"\n"; 299 | showEnvVarsInLog = 0; 300 | }; 301 | 10A36AEAD10D44B7A533F6C8 /* [CP] Check Pods Manifest.lock */ = { 302 | isa = PBXShellScriptBuildPhase; 303 | buildActionMask = 2147483647; 304 | files = ( 305 | ); 306 | inputPaths = ( 307 | ); 308 | name = "[CP] Check Pods Manifest.lock"; 309 | outputPaths = ( 310 | ); 311 | runOnlyForDeploymentPostprocessing = 0; 312 | shellPath = /bin/sh; 313 | 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"; 314 | showEnvVarsInLog = 0; 315 | }; 316 | 1C4D041A290BFF571C2677E8 /* 📦 Copy Pods Resources */ = { 317 | isa = PBXShellScriptBuildPhase; 318 | buildActionMask = 2147483647; 319 | files = ( 320 | ); 321 | inputPaths = ( 322 | ); 323 | name = "📦 Copy Pods Resources"; 324 | outputPaths = ( 325 | ); 326 | runOnlyForDeploymentPostprocessing = 0; 327 | shellPath = /bin/sh; 328 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-resources.sh\"\n"; 329 | showEnvVarsInLog = 0; 330 | }; 331 | 57CD67F3890066B651531821 /* 📦 Embed Pods Frameworks */ = { 332 | isa = PBXShellScriptBuildPhase; 333 | buildActionMask = 2147483647; 334 | files = ( 335 | ); 336 | inputPaths = ( 337 | ); 338 | name = "📦 Embed Pods Frameworks"; 339 | outputPaths = ( 340 | ); 341 | runOnlyForDeploymentPostprocessing = 0; 342 | shellPath = /bin/sh; 343 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-frameworks.sh\"\n"; 344 | showEnvVarsInLog = 0; 345 | }; 346 | 5A557888D9CADEACFAA20E45 /* 📦 Embed Pods Frameworks */ = { 347 | isa = PBXShellScriptBuildPhase; 348 | buildActionMask = 2147483647; 349 | files = ( 350 | ); 351 | inputPaths = ( 352 | ); 353 | name = "📦 Embed Pods Frameworks"; 354 | outputPaths = ( 355 | ); 356 | runOnlyForDeploymentPostprocessing = 0; 357 | shellPath = /bin/sh; 358 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-frameworks.sh\"\n"; 359 | showEnvVarsInLog = 0; 360 | }; 361 | 5E8F9692E1734E1E5838B4EC /* 📦 Copy Pods Resources */ = { 362 | isa = PBXShellScriptBuildPhase; 363 | buildActionMask = 2147483647; 364 | files = ( 365 | ); 366 | inputPaths = ( 367 | ); 368 | name = "📦 Copy Pods Resources"; 369 | outputPaths = ( 370 | ); 371 | runOnlyForDeploymentPostprocessing = 0; 372 | shellPath = /bin/sh; 373 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-resources.sh\"\n"; 374 | showEnvVarsInLog = 0; 375 | }; 376 | 5ED4929F78B0F37C5682F63E /* [CP] Check Pods Manifest.lock */ = { 377 | isa = PBXShellScriptBuildPhase; 378 | buildActionMask = 2147483647; 379 | files = ( 380 | ); 381 | inputPaths = ( 382 | ); 383 | name = "[CP] Check Pods Manifest.lock"; 384 | outputPaths = ( 385 | ); 386 | runOnlyForDeploymentPostprocessing = 0; 387 | shellPath = /bin/sh; 388 | 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"; 389 | showEnvVarsInLog = 0; 390 | }; 391 | B13EE47C33AA4CE390AF71E0 /* [CP] Copy Pods Resources */ = { 392 | isa = PBXShellScriptBuildPhase; 393 | buildActionMask = 2147483647; 394 | files = ( 395 | ); 396 | inputPaths = ( 397 | ); 398 | name = "[CP] Copy Pods Resources"; 399 | outputPaths = ( 400 | ); 401 | runOnlyForDeploymentPostprocessing = 0; 402 | shellPath = /bin/sh; 403 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Example/Pods-SimpleLoadingButton_Example-resources.sh\"\n"; 404 | showEnvVarsInLog = 0; 405 | }; 406 | CA368838E7E3C2A6932B1A60 /* 📦 Check Pods Manifest.lock */ = { 407 | isa = PBXShellScriptBuildPhase; 408 | buildActionMask = 2147483647; 409 | files = ( 410 | ); 411 | inputPaths = ( 412 | ); 413 | name = "📦 Check Pods Manifest.lock"; 414 | outputPaths = ( 415 | ); 416 | runOnlyForDeploymentPostprocessing = 0; 417 | shellPath = /bin/sh; 418 | 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"; 419 | showEnvVarsInLog = 0; 420 | }; 421 | CDB37F0A0D57F3F401270DE8 /* 📦 Check Pods Manifest.lock */ = { 422 | isa = PBXShellScriptBuildPhase; 423 | buildActionMask = 2147483647; 424 | files = ( 425 | ); 426 | inputPaths = ( 427 | ); 428 | name = "📦 Check Pods Manifest.lock"; 429 | outputPaths = ( 430 | ); 431 | runOnlyForDeploymentPostprocessing = 0; 432 | shellPath = /bin/sh; 433 | 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"; 434 | showEnvVarsInLog = 0; 435 | }; 436 | D91EE80906D578BB4570BC2F /* [CP] Copy Pods Resources */ = { 437 | isa = PBXShellScriptBuildPhase; 438 | buildActionMask = 2147483647; 439 | files = ( 440 | ); 441 | inputPaths = ( 442 | ); 443 | name = "[CP] Copy Pods Resources"; 444 | outputPaths = ( 445 | ); 446 | runOnlyForDeploymentPostprocessing = 0; 447 | shellPath = /bin/sh; 448 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-resources.sh\"\n"; 449 | showEnvVarsInLog = 0; 450 | }; 451 | F43DF732DDC33F607D7F4158 /* [CP] Embed Pods Frameworks */ = { 452 | isa = PBXShellScriptBuildPhase; 453 | buildActionMask = 2147483647; 454 | files = ( 455 | ); 456 | inputPaths = ( 457 | ); 458 | name = "[CP] Embed Pods Frameworks"; 459 | outputPaths = ( 460 | ); 461 | runOnlyForDeploymentPostprocessing = 0; 462 | shellPath = /bin/sh; 463 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SimpleLoadingButton_Tests/Pods-SimpleLoadingButton_Tests-frameworks.sh\"\n"; 464 | showEnvVarsInLog = 0; 465 | }; 466 | /* End PBXShellScriptBuildPhase section */ 467 | 468 | /* Begin PBXSourcesBuildPhase section */ 469 | 607FACCC1AFB9204008FA782 /* Sources */ = { 470 | isa = PBXSourcesBuildPhase; 471 | buildActionMask = 2147483647; 472 | files = ( 473 | C742CEFD1D376C6F0057AA27 /* ExampleController.swift in Sources */, 474 | C742CEFC1D376C6F0057AA27 /* AppDelegate.swift in Sources */, 475 | C742CEFE1D376C6F0057AA27 /* NSObjectExtensions.swift in Sources */, 476 | ); 477 | runOnlyForDeploymentPostprocessing = 0; 478 | }; 479 | 607FACE11AFB9204008FA782 /* Sources */ = { 480 | isa = PBXSourcesBuildPhase; 481 | buildActionMask = 2147483647; 482 | files = ( 483 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 484 | ); 485 | runOnlyForDeploymentPostprocessing = 0; 486 | }; 487 | /* End PBXSourcesBuildPhase section */ 488 | 489 | /* Begin PBXTargetDependency section */ 490 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 491 | isa = PBXTargetDependency; 492 | target = 607FACCF1AFB9204008FA782 /* SimpleLoadingButton_Example */; 493 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 494 | }; 495 | /* End PBXTargetDependency section */ 496 | 497 | /* Begin PBXVariantGroup section */ 498 | C742CF011D376CB40057AA27 /* Main.storyboard */ = { 499 | isa = PBXVariantGroup; 500 | children = ( 501 | C742CF021D376CB40057AA27 /* Base */, 502 | ); 503 | name = Main.storyboard; 504 | sourceTree = ""; 505 | }; 506 | C742CF031D376CB40057AA27 /* LaunchScreen.xib */ = { 507 | isa = PBXVariantGroup; 508 | children = ( 509 | C742CF041D376CB40057AA27 /* Base */, 510 | ); 511 | name = LaunchScreen.xib; 512 | sourceTree = ""; 513 | }; 514 | /* End PBXVariantGroup section */ 515 | 516 | /* Begin XCBuildConfiguration section */ 517 | 607FACED1AFB9204008FA782 /* Debug */ = { 518 | isa = XCBuildConfiguration; 519 | buildSettings = { 520 | ALWAYS_SEARCH_USER_PATHS = NO; 521 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 522 | CLANG_CXX_LIBRARY = "libc++"; 523 | CLANG_ENABLE_MODULES = YES; 524 | CLANG_ENABLE_OBJC_ARC = YES; 525 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 526 | CLANG_WARN_BOOL_CONVERSION = YES; 527 | CLANG_WARN_COMMA = YES; 528 | CLANG_WARN_CONSTANT_CONVERSION = YES; 529 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 530 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 531 | CLANG_WARN_EMPTY_BODY = YES; 532 | CLANG_WARN_ENUM_CONVERSION = YES; 533 | CLANG_WARN_INFINITE_RECURSION = YES; 534 | CLANG_WARN_INT_CONVERSION = YES; 535 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 536 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 537 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 538 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 539 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 540 | CLANG_WARN_STRICT_PROTOTYPES = YES; 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 = NO; 546 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 547 | ENABLE_STRICT_OBJC_MSGSEND = YES; 548 | ENABLE_TESTABILITY = YES; 549 | GCC_C_LANGUAGE_STANDARD = gnu99; 550 | GCC_DYNAMIC_NO_PIC = NO; 551 | GCC_NO_COMMON_BLOCKS = YES; 552 | GCC_OPTIMIZATION_LEVEL = 0; 553 | GCC_PREPROCESSOR_DEFINITIONS = ( 554 | "DEBUG=1", 555 | "$(inherited)", 556 | ); 557 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 558 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 559 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 560 | GCC_WARN_UNDECLARED_SELECTOR = YES; 561 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 562 | GCC_WARN_UNUSED_FUNCTION = YES; 563 | GCC_WARN_UNUSED_VARIABLE = YES; 564 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 565 | MTL_ENABLE_DEBUG_INFO = YES; 566 | ONLY_ACTIVE_ARCH = YES; 567 | SDKROOT = iphoneos; 568 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 569 | }; 570 | name = Debug; 571 | }; 572 | 607FACEE1AFB9204008FA782 /* Release */ = { 573 | isa = XCBuildConfiguration; 574 | buildSettings = { 575 | ALWAYS_SEARCH_USER_PATHS = NO; 576 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 577 | CLANG_CXX_LIBRARY = "libc++"; 578 | CLANG_ENABLE_MODULES = YES; 579 | CLANG_ENABLE_OBJC_ARC = YES; 580 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 581 | CLANG_WARN_BOOL_CONVERSION = YES; 582 | CLANG_WARN_COMMA = YES; 583 | CLANG_WARN_CONSTANT_CONVERSION = YES; 584 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 585 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 586 | CLANG_WARN_EMPTY_BODY = YES; 587 | CLANG_WARN_ENUM_CONVERSION = YES; 588 | CLANG_WARN_INFINITE_RECURSION = YES; 589 | CLANG_WARN_INT_CONVERSION = YES; 590 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 591 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 592 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 593 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 594 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 595 | CLANG_WARN_STRICT_PROTOTYPES = YES; 596 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 597 | CLANG_WARN_UNREACHABLE_CODE = YES; 598 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 599 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 600 | COPY_PHASE_STRIP = NO; 601 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 602 | ENABLE_NS_ASSERTIONS = NO; 603 | ENABLE_STRICT_OBJC_MSGSEND = YES; 604 | GCC_C_LANGUAGE_STANDARD = gnu99; 605 | GCC_NO_COMMON_BLOCKS = YES; 606 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 607 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 608 | GCC_WARN_UNDECLARED_SELECTOR = YES; 609 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 610 | GCC_WARN_UNUSED_FUNCTION = YES; 611 | GCC_WARN_UNUSED_VARIABLE = YES; 612 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 613 | MTL_ENABLE_DEBUG_INFO = NO; 614 | SDKROOT = iphoneos; 615 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 616 | VALIDATE_PRODUCT = YES; 617 | }; 618 | name = Release; 619 | }; 620 | 607FACF01AFB9204008FA782 /* Debug */ = { 621 | isa = XCBuildConfiguration; 622 | baseConfigurationReference = 75A2D22B621D76BF8A4E4D39 /* Pods-SimpleLoadingButton_Example.debug.xcconfig */; 623 | buildSettings = { 624 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 625 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 626 | CLANG_ENABLE_MODULES = YES; 627 | DEVELOPMENT_TEAM = A85K9ZZ95H; 628 | INFOPLIST_FILE = SimpleLoadingButton/Info.plist; 629 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 630 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 631 | MODULE_NAME = ExampleApp; 632 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 633 | PRODUCT_NAME = "$(TARGET_NAME)"; 634 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 635 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 636 | SWIFT_VERSION = 4.2; 637 | }; 638 | name = Debug; 639 | }; 640 | 607FACF11AFB9204008FA782 /* Release */ = { 641 | isa = XCBuildConfiguration; 642 | baseConfigurationReference = 33E2C13174625C5E677CB78B /* Pods-SimpleLoadingButton_Example.release.xcconfig */; 643 | buildSettings = { 644 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 645 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 646 | CLANG_ENABLE_MODULES = YES; 647 | DEVELOPMENT_TEAM = A85K9ZZ95H; 648 | INFOPLIST_FILE = SimpleLoadingButton/Info.plist; 649 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 650 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 651 | MODULE_NAME = ExampleApp; 652 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 653 | PRODUCT_NAME = "$(TARGET_NAME)"; 654 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 655 | SWIFT_VERSION = 4.2; 656 | }; 657 | name = Release; 658 | }; 659 | 607FACF31AFB9204008FA782 /* Debug */ = { 660 | isa = XCBuildConfiguration; 661 | baseConfigurationReference = E37AA166ADA6B528D8EB5E09 /* Pods-SimpleLoadingButton_Tests.debug.xcconfig */; 662 | buildSettings = { 663 | DEVELOPMENT_TEAM = A85K9ZZ95H; 664 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 665 | GCC_PREPROCESSOR_DEFINITIONS = ( 666 | "DEBUG=1", 667 | "$(inherited)", 668 | ); 669 | INFOPLIST_FILE = Tests/Info.plist; 670 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 671 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 672 | PRODUCT_NAME = "$(TARGET_NAME)"; 673 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 674 | SWIFT_VERSION = 4.2; 675 | }; 676 | name = Debug; 677 | }; 678 | 607FACF41AFB9204008FA782 /* Release */ = { 679 | isa = XCBuildConfiguration; 680 | baseConfigurationReference = 0A804F2D5DFCF29D4FB9D4A5 /* Pods-SimpleLoadingButton_Tests.release.xcconfig */; 681 | buildSettings = { 682 | DEVELOPMENT_TEAM = A85K9ZZ95H; 683 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 684 | INFOPLIST_FILE = Tests/Info.plist; 685 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 686 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 687 | PRODUCT_NAME = "$(TARGET_NAME)"; 688 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 689 | SWIFT_VERSION = 4.2; 690 | }; 691 | name = Release; 692 | }; 693 | /* End XCBuildConfiguration section */ 694 | 695 | /* Begin XCConfigurationList section */ 696 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SimpleLoadingButton" */ = { 697 | isa = XCConfigurationList; 698 | buildConfigurations = ( 699 | 607FACED1AFB9204008FA782 /* Debug */, 700 | 607FACEE1AFB9204008FA782 /* Release */, 701 | ); 702 | defaultConfigurationIsVisible = 0; 703 | defaultConfigurationName = Release; 704 | }; 705 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton_Example" */ = { 706 | isa = XCConfigurationList; 707 | buildConfigurations = ( 708 | 607FACF01AFB9204008FA782 /* Debug */, 709 | 607FACF11AFB9204008FA782 /* Release */, 710 | ); 711 | defaultConfigurationIsVisible = 0; 712 | defaultConfigurationName = Release; 713 | }; 714 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SimpleLoadingButton_Tests" */ = { 715 | isa = XCConfigurationList; 716 | buildConfigurations = ( 717 | 607FACF31AFB9204008FA782 /* Debug */, 718 | 607FACF41AFB9204008FA782 /* Release */, 719 | ); 720 | defaultConfigurationIsVisible = 0; 721 | defaultConfigurationName = Release; 722 | }; 723 | /* End XCConfigurationList section */ 724 | }; 725 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 726 | } 727 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton.xcodeproj/xcshareddata/xcschemes/SimpleLoadingButton-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 78 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 97 | 99 | 105 | 106 | 107 | 108 | 110 | 111 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SimpleLoadingButton 4 | // 5 | // Created by Ruva on 07/01/2016. 6 | // Copyright (c) 2016 Ruva. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | var window: UIWindow? 14 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 15 | return true 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/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 | 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 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/ExampleController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ExampleController.swift 3 | // SimpleLoadingButton 4 | // 5 | // Created by Ruva on 07/01/2016. 6 | // Copyright (c) 2016 Ruva. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SimpleLoadingButton 11 | 12 | class ExampleController: UIViewController { 13 | 14 | @IBOutlet weak var loadingButton: SimpleLoadingButton! 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | 19 | /* Font must be set programmatically, because it's not inspectable in IB */ 20 | loadingButton.titleFont = UIFont.systemFont(ofSize: 14, weight: .bold) 21 | } 22 | 23 | override func didReceiveMemoryWarning() { 24 | super.didReceiveMemoryWarning() 25 | } 26 | 27 | override var preferredStatusBarStyle : UIStatusBarStyle { 28 | return .lightContent 29 | } 30 | 31 | 32 | @IBAction func buttonTapped(_ sender: SimpleLoadingButton) { 33 | NSObject.doSomeAsyncWork(secondsToWait: 4) { 34 | sender.stop() 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/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" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "background-image.jpg", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "background-image@2x.jpg", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "background-image@3x.jpg", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image.jpg -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image@2x.jpg -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/Example/SimpleLoadingButton/Images.xcassets/background-image.imageset/background-image@3x.jpg -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/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 | UIStatusBarStyle 34 | UIStatusBarStyleLightContent 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Example/SimpleLoadingButton/NSObjectExtensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSObjectExtensions.swift 3 | // SimpleLoadingButton 4 | // 5 | // Created by Ruvim Micsanschi on 7/13/16. 6 | // Copyright © 2016 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension NSObject { 12 | class func doSomeAsyncWork(secondsToWait seconds:TimeInterval, completion:@escaping ()->Void) -> Void { 13 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(seconds * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) { completion() } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Example/Tests/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 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import XCTest 3 | import SimpleLoadingButton 4 | 5 | class Tests: XCTestCase { 6 | 7 | override func setUp() { 8 | super.setUp() 9 | // Put setup code here. This method is called before the invocation of each test method in the class. 10 | } 11 | 12 | override func tearDown() { 13 | // Put teardown code here. This method is called after the invocation of each test method in the class. 14 | super.tearDown() 15 | } 16 | 17 | func testExample() { 18 | // This is an example of a functional test case. 19 | XCTAssert(true, "Pass") 20 | } 21 | 22 | func testPerformanceExample() { 23 | // This is an example of a performance test case. 24 | self.measure() { 25 | // Put the code you want to measure the time of here. 26 | } 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Ruvim Miksanskiy 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SimpleLoadingButton 2 | Simple button with loading animation 3 | 4 | [![Version](https://img.shields.io/cocoapods/v/SimpleLoadingButton.svg?style=flat)](http://cocoapods.org/pods/SimpleLoadingButton) 5 | [![License](https://img.shields.io/cocoapods/l/SimpleLoadingButton.svg?style=flat)](http://cocoapods.org/pods/SimpleLoadingButton) 6 | [![Platform](https://img.shields.io/cocoapods/p/SimpleLoadingButton.svg?style=flat)](http://cocoapods.org/pods/SimpleLoadingButton) 7 | 8 | ![SimpleLoadingButton](http://codingroup.com/assets/external/button.gif) 9 | 10 | 11 | ## Installation 12 | ####CocoaPods: 13 | 14 | ``` 15 | pod 'SimpleLoadingButton', '~> 0.4' 16 | ``` 17 | and 18 | 19 | ``` 20 | $ pod install 21 | ``` 22 | 23 | 24 | ####Manual: 25 | Add files from `SimpleLoadingButton/Classes/*` to your project 26 | 27 | ####Version 0.4 has breaking changes. Deployment target updated to iOS 11 28 | ####Version 0.3 has breaking changes. Deployment target updated to iOS 9 29 | 30 | 31 | ##How to use it 32 | 1. Add view in IB, change class to `SimpleLoadingButton` 33 | 2. Style button properties in IB Inspector 34 | 3. Create IBAction from control, action will be fired on .touchUpInside 35 | 36 | To view sample project run `pod try SimpleLoadingButton` in terminal 37 | 38 | 39 | ## Requirements 40 | 41 | Version 0.4+ requires Swift 4.2 42 | 43 | Compatible with `iOS 11+` 44 | 45 | ##Contribution 46 | 47 | Found a bug? Please create an [issue](https://github.com/mruvim/SimpleLoadingButton/issues)
48 | Pull requests are welcome 49 | 50 | 51 | ## Contact 52 | 53 | Ruvim Miksanskiy 54 | ![Email](http://codingroup.com/assets/external/email-icon.png) 55 | 56 | ## License (MIT) 57 | 58 | Copyright (c) 2016 - Ruvim Miksanksiy 59 | 60 | Permission is hereby granted, free of charge, to any person obtaining a copy 61 | of this software and associated documentation files (the "Software"), to deal 62 | in the Software without restriction, including without limitation the rights 63 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 64 | copies of the Software, and to permit persons to whom the Software is 65 | furnished to do so, subject to the following conditions: 66 | 67 | The above copyright notice and this permission notice shall be included in 68 | all copies or substantial portions of the Software. 69 | 70 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 71 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 72 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 73 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 74 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 75 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 76 | THE SOFTWARE. 77 | -------------------------------------------------------------------------------- /SimpleLoadingButton.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = "SimpleLoadingButton" 4 | s.version = "0.4" 5 | s.license = { :type => "MIT", :file => "LICENSE"} 6 | 7 | s.homepage = "https://github.com/mruvim/SimpleLoadingButton" 8 | s.summary = "Simple button with loading animation" 9 | s.author = { "Ruvim Miksanskiy" => "ruva@codingroup.com" } 10 | s.source = { :git => "https://github.com/mruvim/SimpleLoadingButton.git", :tag => s.version, :branch => "master"} 11 | 12 | s.screenshot = "http://codingroup.com/assets/external/button.gif" 13 | 14 | s.platform = :ios, "11.0" 15 | s.requires_arc = true 16 | 17 | s.ios.deployment_target = "11.0" 18 | s.source_files = "SimpleLoadingButton/**/*.swift" 19 | 20 | end 21 | -------------------------------------------------------------------------------- /SimpleLoadingButton/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/SimpleLoadingButton/Assets/.gitkeep -------------------------------------------------------------------------------- /SimpleLoadingButton/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mruvim/SimpleLoadingButton/16e7cdff4e71b8853d2a3ae29c4500eafd6df897/SimpleLoadingButton/Classes/.gitkeep -------------------------------------------------------------------------------- /SimpleLoadingButton/Classes/SimpleLoadingButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleLoadingButton.swift 3 | // SimpleLoadingButton 4 | // 5 | // Created by Ruva on 7/1/16. 6 | // Copyright (c) 2016 Ruva. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @IBDesignable 12 | public class SimpleLoadingButton: UIControl { 13 | 14 | /** 15 | Button internal states 16 | 17 | - Normal: Title label is displayed, button background color is normalBackgroundColor 18 | - Highlighted: Title label is displayed, button background color changes to highlightedBackgroundColor 19 | - Loading: Loading animation is displayed, background color changes to normalBackgroundColor 20 | */ 21 | fileprivate enum ButtonState { 22 | case normal 23 | case highlighted 24 | case loading 25 | 26 | 27 | } 28 | 29 | 30 | //MARK: - Private 31 | fileprivate var currentlyVisibleView:UIView? 32 | fileprivate var buttonState:ButtonState = .normal { didSet { if oldValue != buttonState { updateUI(forState:buttonState) } } } 33 | 34 | 35 | /// Font for the title label (IB does not allow UIFont to be inspected therefore font must be set programmatically) 36 | public var titleFont:UIFont = UIFont.systemFont(ofSize: 16) { 37 | didSet { 38 | guard let titleLabel = currentlyVisibleView as? UILabel else { return } 39 | titleLabel.font = titleFont 40 | } 41 | } 42 | 43 | 44 | //MARK: - Inspectable / Designable properties 45 | 46 | /// Button title 47 | @IBInspectable var title:String = NSLocalizedString("Button", comment:"Button") { 48 | didSet { 49 | guard let titleLabel = currentlyVisibleView as? UILabel else { return } 50 | titleLabel.text = title 51 | } 52 | } 53 | 54 | /// Title color 55 | @IBInspectable var titleColor:UIColor = UIColor.white { 56 | didSet { 57 | guard let titleLabel = currentlyVisibleView as? UILabel else { return } 58 | titleLabel.textColor = titleColor 59 | } 60 | } 61 | 62 | /// Loading indicator color 63 | @IBInspectable var loadingIndicatorColor:UIColor = UIColor.white { 64 | 65 | didSet{ 66 | updateUI(forState: buttonState) 67 | } 68 | } 69 | 70 | /// Border width 71 | @IBInspectable var borderWidth:CGFloat = 0 { 72 | didSet { updateStyle() } 73 | } 74 | 75 | /// Border color 76 | @IBInspectable var borderColor:UIColor = UIColor.white { 77 | didSet { updateStyle() } 78 | } 79 | 80 | /// Corner radius 81 | @IBInspectable var cornerRadius:CGFloat = 0 { 82 | didSet { updateStyle() } 83 | } 84 | 85 | /// Background color for normal state 86 | @IBInspectable var normalBackgroundColor:UIColor = UIColor.lightGray { 87 | didSet { updateStyle() } 88 | } 89 | 90 | /// Background color for highlighted state 91 | @IBInspectable var highlightedBackgroundColor:UIColor = UIColor.darkGray { 92 | didSet { updateStyle() } 93 | } 94 | 95 | /// Duration of one animation cycle 96 | @IBInspectable var loadingAnimationDuration:Double = 2.0 97 | 98 | /// Size of the animating shape 99 | @IBInspectable var loadingShapeSize:CGSize = CGSize(width: 10, height: 10) 100 | 101 | 102 | //MARK: - Init 103 | override init(frame: CGRect) { 104 | super.init(frame: frame) 105 | setupButton() 106 | updateStyle() 107 | } 108 | 109 | required public init?(coder aDecoder: NSCoder) { 110 | super.init(coder: aDecoder) 111 | setupButton() 112 | updateStyle() 113 | } 114 | 115 | 116 | /** 117 | Setup button to initial state 118 | */ 119 | private func setupButton() -> Void { 120 | 121 | let titleLabel = createTitleLabel(withFrame:CGRect(x: 0, y: 0, width: frame.width, height: frame.height)) 122 | titleLabel.translatesAutoresizingMaskIntoConstraints = false 123 | addSubview(titleLabel) 124 | 125 | titleLabel.leftAnchor.constraint(equalTo: leftAnchor).isActive = true 126 | titleLabel.topAnchor.constraint(equalTo: topAnchor).isActive = true 127 | titleLabel.rightAnchor.constraint(equalTo: rightAnchor).isActive = true 128 | titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true 129 | currentlyVisibleView = titleLabel 130 | } 131 | 132 | 133 | 134 | /** 135 | Button style update 136 | */ 137 | private func updateStyle() -> Void { 138 | backgroundColor = normalBackgroundColor 139 | layer.cornerRadius = cornerRadius 140 | layer.masksToBounds = cornerRadius > 0 141 | layer.borderWidth = borderWidth 142 | layer.borderColor = borderColor.cgColor 143 | } 144 | 145 | 146 | 147 | /** 148 | Update button UI as a result of state change 149 | - parameter buttonState: new button state 150 | */ 151 | private func updateUI(forState buttonState:ButtonState) -> Void { 152 | 153 | var buttonBackgroundColor:UIColor 154 | switch buttonState { 155 | case .normal: 156 | buttonBackgroundColor = normalBackgroundColor 157 | showLabelView() 158 | case .highlighted: 159 | buttonBackgroundColor = highlightedBackgroundColor 160 | case .loading: 161 | buttonBackgroundColor = normalBackgroundColor 162 | showLoadingView() 163 | } 164 | 165 | UIView.animate(withDuration: 0.15, animations: { [unowned self] in self.backgroundColor = buttonBackgroundColor }) 166 | } 167 | 168 | 169 | 170 | /** 171 | Create title label 172 | - parameter frame: Label frame 173 | - returns: instance of UILabel 174 | */ 175 | fileprivate func createTitleLabel(withFrame frame:CGRect) -> UILabel { 176 | let titleLabel = UILabel(frame:frame) 177 | titleLabel.text = title 178 | titleLabel.textAlignment = .center 179 | titleLabel.textColor = titleColor 180 | titleLabel.font = titleFont 181 | return titleLabel 182 | } 183 | } 184 | 185 | 186 | 187 | extension SimpleLoadingButton { 188 | 189 | //MARK: - Touch handling 190 | override public func touchesBegan(_ touches: Set, with event: UIEvent?) { 191 | 192 | guard buttonState == .normal, 193 | let touchLocation = touches.first?.location(in: self), 194 | bounds.contains(touchLocation) else { 195 | super.touchesBegan(touches, with: event) 196 | return 197 | } 198 | buttonState = .highlighted 199 | } 200 | 201 | override public func touchesMoved(_ touches: Set, with event: UIEvent?) { 202 | 203 | guard buttonState != .loading, 204 | let touchLocation = touches.first?.location(in: self) else { 205 | super.touchesMoved(touches, with: event) 206 | return 207 | } 208 | 209 | buttonState = bounds.contains(touchLocation) ? .highlighted : .normal 210 | } 211 | 212 | override public func touchesEnded(_ touches: Set, with event: UIEvent?) { 213 | 214 | guard buttonState == .highlighted, 215 | let touchLocation = touches.first?.location(in: self), 216 | bounds.contains(touchLocation) else { 217 | super.touchesEnded(touches, with: event) 218 | return 219 | } 220 | 221 | buttonState = .loading 222 | sendActions(for: .touchUpInside) 223 | } 224 | } 225 | 226 | 227 | 228 | 229 | extension SimpleLoadingButton { 230 | 231 | //MARK: - View transitions 232 | 233 | /** 234 | Transition to title label 235 | */ 236 | fileprivate func showLabelView() -> Void { 237 | 238 | guard let loadingView = currentlyVisibleView as? SimpleLoadingView else { return } 239 | let titleLabel = createTitleLabel(withFrame:loadingView.frame) 240 | addSubview(titleLabel) 241 | currentlyVisibleView = titleLabel 242 | 243 | titleLabel.translatesAutoresizingMaskIntoConstraints = false 244 | titleLabel.leftAnchor.constraint(equalTo: leftAnchor).isActive = true 245 | titleLabel.topAnchor.constraint(equalTo: topAnchor).isActive = true 246 | titleLabel.rightAnchor.constraint(equalTo: rightAnchor).isActive = true 247 | titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true 248 | 249 | UIView.transition(from: loadingView, to:titleLabel, duration:0.15, options:.transitionCrossDissolve) { (_) in 250 | loadingView.removeFromSuperview() 251 | } 252 | } 253 | 254 | /** 255 | Transition to loading animation 256 | */ 257 | fileprivate func showLoadingView() -> Void { 258 | 259 | guard let titleLabel = currentlyVisibleView as? UILabel else { return } 260 | let loadingView = SimpleLoadingView(withFrame:titleLabel.frame, animationDuration: loadingAnimationDuration, animatingShapeSize:loadingShapeSize, loadingIndicatorColor:loadingIndicatorColor) 261 | loadingView.translatesAutoresizingMaskIntoConstraints = false 262 | addSubview(loadingView) 263 | currentlyVisibleView = loadingView 264 | 265 | loadingView.leftAnchor.constraint(equalTo: leftAnchor).isActive = true 266 | loadingView.topAnchor.constraint(equalTo: topAnchor).isActive = true 267 | loadingView.rightAnchor.constraint(equalTo: rightAnchor).isActive = true 268 | loadingView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true 269 | loadingView.startAnimation() 270 | 271 | UIView.transition(from: titleLabel, to: loadingView, duration:0.15, options:.transitionCrossDissolve) { (_) in 272 | titleLabel.removeFromSuperview() 273 | } 274 | } 275 | } 276 | 277 | 278 | extension SimpleLoadingButton { 279 | 280 | /** 281 | Start loading animation 282 | */ 283 | public func animate() -> Void { 284 | buttonState = .loading 285 | } 286 | 287 | /** 288 | Stop loading animation 289 | */ 290 | public func stop() -> Void { 291 | buttonState = .normal 292 | } 293 | } 294 | 295 | -------------------------------------------------------------------------------- /SimpleLoadingButton/Classes/SimpleLoadingView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SimpleLoadingView.swift 3 | // SimpleLoadingView 4 | // 5 | // Created by Ruva on 7/1/16. 6 | // Copyright (c) 2016 Ruva. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | internal class SimpleLoadingView: UIView { 11 | 12 | //MARK: - Private 13 | fileprivate var viewsArray:[UIView] = [] 14 | fileprivate let kLoadingViewAlpha:CGFloat = 0.6 15 | fileprivate let kScaleFactor:CGFloat = 1.1 16 | fileprivate var animationDuration:Double = 2.0 17 | 18 | private var animatingShapeSize:CGSize = CGSize(width: 10, height: 10) 19 | private var loadingIndicatorColor:UIColor = UIColor.white 20 | 21 | //MARK: - Init 22 | override init(frame: CGRect) { 23 | super.init(frame: frame) 24 | } 25 | 26 | required init?(coder aDecoder: NSCoder) { 27 | super.init(coder: aDecoder) 28 | 29 | } 30 | 31 | convenience init(withFrame frame: CGRect, animationDuration duration:Double = 2.0, animatingShapeSize shapeSize:CGSize = CGSize(width: 10, height: 10), loadingIndicatorColor color:UIColor = UIColor.white) { 32 | self.init(frame: frame) 33 | animationDuration = duration 34 | animatingShapeSize = shapeSize 35 | loadingIndicatorColor = color 36 | setupView() 37 | } 38 | 39 | 40 | /** 41 | Setup loading view 42 | */ 43 | private func setupView() -> Void { 44 | 45 | let centerViewFrame = CGRect(x: frame.midX - animatingShapeSize.width / 2, 46 | y: frame.midY - animatingShapeSize.height / 2, 47 | width: animatingShapeSize.width, 48 | height: animatingShapeSize.height) 49 | let centerView = createCircleView(withFrame:centerViewFrame) 50 | addSubview(centerView) 51 | 52 | centerView.translatesAutoresizingMaskIntoConstraints = false 53 | centerView.widthAnchor.constraint(equalToConstant: animatingShapeSize.width).isActive = true 54 | centerView.heightAnchor.constraint(equalToConstant: animatingShapeSize.height).isActive = true 55 | centerView.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true 56 | centerView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true 57 | 58 | var leftViewFrame = centerViewFrame 59 | leftViewFrame.origin.x = centerViewFrame.origin.x - animatingShapeSize.width - 5 60 | let leftView = createCircleView(withFrame: leftViewFrame) 61 | addSubview(leftView) 62 | 63 | leftView.translatesAutoresizingMaskIntoConstraints = false 64 | leftView.widthAnchor.constraint(equalToConstant: animatingShapeSize.width).isActive = true 65 | leftView.heightAnchor.constraint(equalToConstant: animatingShapeSize.height).isActive = true 66 | leftView.rightAnchor.constraint(equalTo: centerView.leftAnchor, constant: -5).isActive = true 67 | leftView.centerYAnchor.constraint(equalTo: centerView.centerYAnchor).isActive = true 68 | 69 | var rightViewFrame = centerViewFrame 70 | rightViewFrame.origin.x = centerViewFrame.origin.x + animatingShapeSize.width + 5 71 | let rightView = createCircleView(withFrame:rightViewFrame) 72 | addSubview(rightView) 73 | 74 | rightView.translatesAutoresizingMaskIntoConstraints = false 75 | rightView.widthAnchor.constraint(equalToConstant: animatingShapeSize.width).isActive = true 76 | rightView.heightAnchor.constraint(equalToConstant: animatingShapeSize.height).isActive = true 77 | rightView.leftAnchor.constraint(equalTo: centerView.rightAnchor, constant: 5).isActive = true 78 | rightView.centerYAnchor.constraint(equalTo: centerView.centerYAnchor).isActive = true 79 | viewsArray = [leftView, centerView, rightView] 80 | } 81 | 82 | 83 | /** 84 | Factory method to create animating views 85 | 86 | - parameter size: Size of the loading circle 87 | - returns: UIView masked to circle shape 88 | */ 89 | fileprivate func createCircleView(withFrame circleFrame:CGRect) -> UIView { 90 | 91 | let shapeLayer = CAShapeLayer() 92 | shapeLayer.path = UIBezierPath(ovalIn: CGRect(x:0, y:0, width:circleFrame.width, height:circleFrame.height)).cgPath 93 | 94 | let ovalView = UIView(frame:circleFrame) 95 | ovalView.backgroundColor = loadingIndicatorColor 96 | ovalView.layer.mask = shapeLayer 97 | ovalView.alpha = kLoadingViewAlpha 98 | return ovalView 99 | } 100 | } 101 | 102 | 103 | extension SimpleLoadingView { 104 | 105 | //MARK: - Start / Stop animation 106 | 107 | /** 108 | Start loading animation 109 | */ 110 | func startAnimation() -> Void { 111 | 112 | weak var leftView = viewsArray[0] 113 | weak var centerView = viewsArray[1] 114 | weak var rightView = viewsArray[2] 115 | 116 | UIView.animateKeyframes(withDuration: animationDuration, delay:0, options:[.beginFromCurrentState, .repeat], animations: { 117 | 118 | UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration:1/4.0, animations: { [unowned self] in 119 | centerView?.alpha = self.kLoadingViewAlpha 120 | rightView?.alpha = self.kLoadingViewAlpha 121 | leftView?.alpha = 1 122 | leftView?.transform = CGAffineTransform.identity.scaledBy(x: self.kScaleFactor, y: self.kScaleFactor) 123 | rightView?.transform = CGAffineTransform.identity 124 | centerView?.transform = CGAffineTransform.identity 125 | }) 126 | 127 | UIView.addKeyframe(withRelativeStartTime: 1/4.0, relativeDuration:1/4.0, animations: { [unowned self] in 128 | leftView?.transform = CGAffineTransform.identity 129 | rightView?.transform = CGAffineTransform.identity 130 | centerView?.transform = CGAffineTransform.identity.scaledBy(x: self.kScaleFactor, y: self.kScaleFactor) 131 | leftView?.alpha = self.kLoadingViewAlpha 132 | rightView?.alpha = self.kLoadingViewAlpha 133 | centerView?.alpha = 1 134 | }) 135 | 136 | UIView.addKeyframe(withRelativeStartTime: 2/4.0, relativeDuration:1/4.0, animations: { [unowned self] in 137 | rightView?.transform = CGAffineTransform.identity.scaledBy(x: self.kScaleFactor, y: self.kScaleFactor) 138 | leftView?.transform = CGAffineTransform.identity 139 | centerView?.transform = CGAffineTransform.identity 140 | leftView?.alpha = self.kLoadingViewAlpha 141 | centerView?.alpha = self.kLoadingViewAlpha 142 | rightView?.alpha = 1 143 | }) 144 | 145 | UIView.addKeyframe(withRelativeStartTime: 3/4.0, relativeDuration:1/4.0, animations: { [unowned self] in 146 | leftView?.alpha = self.kLoadingViewAlpha 147 | centerView?.alpha = self.kLoadingViewAlpha 148 | rightView?.alpha = self.kLoadingViewAlpha 149 | rightView?.transform = CGAffineTransform.identity 150 | leftView?.transform = CGAffineTransform.identity 151 | centerView?.transform = CGAffineTransform.identity 152 | }) 153 | 154 | }, completion: nil) 155 | } 156 | 157 | 158 | /** 159 | Stop loading animation 160 | */ 161 | func stopAnimation() -> Void { 162 | _ = viewsArray.map( { $0.removeFromSuperview() } ) 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------