├── .gitignore ├── Example ├── AppDelegate.swift ├── Images.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── LaunchImage.launchimage │ │ └── Contents.json │ └── Logo.imageset │ │ ├── Contents.json │ │ ├── Logo.png │ │ └── Logo@2x.png ├── Info.plist ├── Main.storyboard ├── ViewController.swift └── iOS Example-Bridging-Header.h ├── LICENSE ├── LoadingImageView Example.xcodeproj └── project.pbxproj ├── LoadingImageView.podspec ├── LoadingImageView.xcworkspace └── contents.xcworkspacedata ├── Podfile ├── Podfile.lock ├── Pods ├── Local Podspecs │ └── LoadingImageView.podspec.json ├── Manifest.lock ├── Pods.xcodeproj │ └── project.pbxproj └── Target Support Files │ ├── Pods-LoadingImageView Example-LoadingImageView │ ├── Info.plist │ ├── Pods-LoadingImageView Example-LoadingImageView-Private.xcconfig │ ├── Pods-LoadingImageView Example-LoadingImageView-dummy.m │ ├── Pods-LoadingImageView Example-LoadingImageView-prefix.pch │ ├── Pods-LoadingImageView Example-LoadingImageView-umbrella.h │ ├── Pods-LoadingImageView Example-LoadingImageView.modulemap │ └── Pods-LoadingImageView Example-LoadingImageView.xcconfig │ └── Pods-LoadingImageView Example │ ├── Info.plist │ ├── Pods-LoadingImageView Example-acknowledgements.markdown │ ├── Pods-LoadingImageView Example-acknowledgements.plist │ ├── Pods-LoadingImageView Example-dummy.m │ ├── Pods-LoadingImageView Example-environment.h │ ├── Pods-LoadingImageView Example-frameworks.sh │ ├── Pods-LoadingImageView Example-resources.sh │ ├── Pods-LoadingImageView Example-umbrella.h │ ├── Pods-LoadingImageView Example.debug.xcconfig │ ├── Pods-LoadingImageView Example.modulemap │ └── Pods-LoadingImageView Example.release.xcconfig ├── README.md ├── Screenshots ├── IBInspectableSupport.jpg └── LoadingImageShowcase.gif └── Source ├── BezierPath.swift ├── Info.plist └── LoadingImageView.swift /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | 20 | # CocoaPods 21 | # 22 | # We recommend against adding the Pods directory to your .gitignore. However 23 | # you should judge for yourself, the pros and cons are mentioned at: 24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 25 | # 26 | # Pods/ 27 | -------------------------------------------------------------------------------- /Example/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // LoadingImageView 4 | // 5 | // Created by Cezar Cocu on 1/2/15. 6 | // Copyright (c) 2015 Cezar Cocu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 17 | // Override point for customization after application launch. 18 | return true 19 | } 20 | } -------------------------------------------------------------------------------- /Example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "size" : "29x29", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "size" : "29x29", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "ipad", 30 | "size" : "40x40", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "40x40", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "76x76", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "76x76", 46 | "scale" : "2x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /Example/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /Example/Images.xcassets/Logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Logo.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Logo@2x.png" 12 | } 13 | ], 14 | "info" : { 15 | "version" : 1, 16 | "author" : "xcode" 17 | } 18 | } -------------------------------------------------------------------------------- /Example/Images.xcassets/Logo.imageset/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cezarc1/LoadingImageView/9f8ff2da26925a0eb81e28d8f93144a0d650b5e5/Example/Images.xcassets/Logo.imageset/Logo.png -------------------------------------------------------------------------------- /Example/Images.xcassets/Logo.imageset/Logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cezarc1/LoadingImageView/9f8ff2da26925a0eb81e28d8f93144a0d650b5e5/Example/Images.xcassets/Logo.imageset/Logo@2x.png -------------------------------------------------------------------------------- /Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.cezarcocu.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Alamofire 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UIStatusBarTintParameters 32 | 33 | UINavigationBar 34 | 35 | Style 36 | UIBarStyleDefault 37 | Translucent 38 | 39 | 40 | 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | 45 | UISupportedInterfaceOrientations~ipad 46 | 47 | UIInterfaceOrientationPortrait 48 | UIInterfaceOrientationPortraitUpsideDown 49 | UIInterfaceOrientationLandscapeLeft 50 | UIInterfaceOrientationLandscapeRight 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /Example/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /Example/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // LoadingImageView 4 | // 5 | // Created by Cezar Cocu on 1/2/15. 6 | // Copyright (c) 2015 Cezar Cocu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import LoadingImageView 11 | 12 | class ViewController: UITableViewController { 13 | let catURLs = [ NSURL(string: "http://www.mnftiu.cc/wp-content/uploads/2012/12/77669-cats-funny-cat.jpg")!, 14 | NSURL(string: "http://www.neighborhoodcats.org/uploads/Image/Right%20panel%20images/nycfcc%20site%201.jpg")!, 15 | NSURL(string: "http://images4.fanpop.com/image/photos/22000000/-_-cats-cats-22066030-1024-768.jpg")!, 16 | NSURL(string: "http://momusnajmi.files.wordpress.com/2014/12/cat-music.jpg")!, 17 | NSURL(string: "http://blogs.biomedcentral.com/bmcblog/files/2014/02/Benjamin-Blonder.png")!, 18 | NSURL(string: "https://catfishes.files.wordpress.com/2013/03/cat-breaded.jpg")!] 19 | 20 | override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 21 | return catURLs.count 22 | } 23 | 24 | override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 25 | let cell = tableView.dequeueReusableCellWithIdentifier("loadingCell", forIndexPath: indexPath) as! LoadingTableViewCell 26 | 27 | let imageView = LoadingImageView() 28 | view.addSubview(imageView) 29 | 30 | let imageURL = catURLs[indexPath.row % catURLs.count] 31 | cell.configure(imageURL) 32 | return cell 33 | } 34 | override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 35 | return CGFloat(200.0) 36 | } 37 | } 38 | 39 | class LoadingTableViewCell: UITableViewCell { 40 | 41 | @IBOutlet weak var loadingImageView: LoadingImageView! 42 | 43 | func configure(imageURL: NSURL) { 44 | loadingImageView.downloadImage(imageURL, placeholder: nil) 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /Example/iOS Example-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Cezar Cocu 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 | -------------------------------------------------------------------------------- /LoadingImageView Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 88C795E2442A07DB119FC99F /* Pods_LoadingImageView_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D82046429C47AF756C1BCA63 /* Pods_LoadingImageView_Example.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 11 | F7297CEA1A85C657002767FB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7297CE81A85C657002767FB /* AppDelegate.swift */; }; 12 | F7297CEB1A85C657002767FB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7297CE91A85C657002767FB /* ViewController.swift */; }; 13 | F7297CED1A85C66C002767FB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7297CEC1A85C66C002767FB /* Main.storyboard */; }; 14 | F77A9F9B1A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F77A9F991A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig */; }; 15 | F77A9F9C1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = F77A9F9A1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig */; }; 16 | F8111E1419A951050040E7D1 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F8111E1319A951050040E7D1 /* Images.xcassets */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 4EEEDE5D19C6F39708A8F116 /* Pods_iOS_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iOS_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 21 | D82046429C47AF756C1BCA63 /* Pods_LoadingImageView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LoadingImageView_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | F7297CE71A85C656002767FB /* iOS Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iOS Example-Bridging-Header.h"; sourceTree = ""; }; 23 | F7297CE81A85C657002767FB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 24 | F7297CE91A85C657002767FB /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 25 | F7297CEC1A85C66C002767FB /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; 26 | F77A9F991A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "Pods-LoadingImageView Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.debug.xcconfig"; sourceTree = ""; }; 27 | F77A9F9A1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "Pods-LoadingImageView Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.release.xcconfig"; sourceTree = ""; }; 28 | F8111E0519A951050040E7D1 /* LoadingImageView Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "LoadingImageView Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 29 | F8111E0919A951050040E7D1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 30 | F8111E1319A951050040E7D1 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 31 | /* End PBXFileReference section */ 32 | 33 | /* Begin PBXFrameworksBuildPhase section */ 34 | F8111E0219A951050040E7D1 /* Frameworks */ = { 35 | isa = PBXFrameworksBuildPhase; 36 | buildActionMask = 2147483647; 37 | files = ( 38 | 88C795E2442A07DB119FC99F /* Pods_LoadingImageView_Example.framework in Frameworks */, 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 2D42BDE636F2C5E26D98A0B6 /* Pods */ = { 46 | isa = PBXGroup; 47 | children = ( 48 | F77A9F991A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig */, 49 | F77A9F9A1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig */, 50 | ); 51 | name = Pods; 52 | sourceTree = ""; 53 | }; 54 | D8ADE35CA568F7C97750679B /* Frameworks */ = { 55 | isa = PBXGroup; 56 | children = ( 57 | 4EEEDE5D19C6F39708A8F116 /* Pods_iOS_Example.framework */, 58 | D82046429C47AF756C1BCA63 /* Pods_LoadingImageView_Example.framework */, 59 | ); 60 | name = Frameworks; 61 | sourceTree = ""; 62 | }; 63 | F8111DFC19A951050040E7D1 = { 64 | isa = PBXGroup; 65 | children = ( 66 | F8111E0719A951050040E7D1 /* Source */, 67 | F8111E0619A951050040E7D1 /* Products */, 68 | 2D42BDE636F2C5E26D98A0B6 /* Pods */, 69 | D8ADE35CA568F7C97750679B /* Frameworks */, 70 | ); 71 | sourceTree = ""; 72 | }; 73 | F8111E0619A951050040E7D1 /* Products */ = { 74 | isa = PBXGroup; 75 | children = ( 76 | F8111E0519A951050040E7D1 /* LoadingImageView Example.app */, 77 | ); 78 | name = Products; 79 | sourceTree = ""; 80 | }; 81 | F8111E0719A951050040E7D1 /* Source */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | F7297CEC1A85C66C002767FB /* Main.storyboard */, 85 | F8111E1319A951050040E7D1 /* Images.xcassets */, 86 | F7297CE81A85C657002767FB /* AppDelegate.swift */, 87 | F7297CE91A85C657002767FB /* ViewController.swift */, 88 | F8111E0819A951050040E7D1 /* Supporting Files */, 89 | F7297CE71A85C656002767FB /* iOS Example-Bridging-Header.h */, 90 | ); 91 | name = Source; 92 | path = Example; 93 | sourceTree = ""; 94 | }; 95 | F8111E0819A951050040E7D1 /* Supporting Files */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | F8111E0919A951050040E7D1 /* Info.plist */, 99 | ); 100 | name = "Supporting Files"; 101 | sourceTree = ""; 102 | }; 103 | /* End PBXGroup section */ 104 | 105 | /* Begin PBXNativeTarget section */ 106 | F8111E0419A951050040E7D1 /* LoadingImageView Example */ = { 107 | isa = PBXNativeTarget; 108 | buildConfigurationList = F8111E2319A951050040E7D1 /* Build configuration list for PBXNativeTarget "LoadingImageView Example" */; 109 | buildPhases = ( 110 | 6540B3CA5F945114F2BD9C7B /* Check Pods Manifest.lock */, 111 | F8111E0119A951050040E7D1 /* Sources */, 112 | F8111E0219A951050040E7D1 /* Frameworks */, 113 | F8111E0319A951050040E7D1 /* Resources */, 114 | 232F8168EB8673C9D2405BA7 /* Embed Pods Frameworks */, 115 | B81850C1CB84CCCCFC8FFC52 /* Copy Pods Resources */, 116 | ); 117 | buildRules = ( 118 | ); 119 | dependencies = ( 120 | ); 121 | name = "LoadingImageView Example"; 122 | productName = Alamofire; 123 | productReference = F8111E0519A951050040E7D1 /* LoadingImageView Example.app */; 124 | productType = "com.apple.product-type.application"; 125 | }; 126 | /* End PBXNativeTarget section */ 127 | 128 | /* Begin PBXProject section */ 129 | F8111DFD19A951050040E7D1 /* Project object */ = { 130 | isa = PBXProject; 131 | attributes = { 132 | LastUpgradeCheck = 0600; 133 | ORGANIZATIONNAME = Alamofire; 134 | TargetAttributes = { 135 | F8111E0419A951050040E7D1 = { 136 | CreatedOnToolsVersion = 6.0; 137 | }; 138 | }; 139 | }; 140 | buildConfigurationList = F8111E0019A951050040E7D1 /* Build configuration list for PBXProject "LoadingImageView Example" */; 141 | compatibilityVersion = "Xcode 3.2"; 142 | developmentRegion = English; 143 | hasScannedForEncodings = 0; 144 | knownRegions = ( 145 | en, 146 | Base, 147 | ); 148 | mainGroup = F8111DFC19A951050040E7D1; 149 | productRefGroup = F8111E0619A951050040E7D1 /* Products */; 150 | projectDirPath = ""; 151 | projectRoot = ""; 152 | targets = ( 153 | F8111E0419A951050040E7D1 /* LoadingImageView Example */, 154 | ); 155 | }; 156 | /* End PBXProject section */ 157 | 158 | /* Begin PBXResourcesBuildPhase section */ 159 | F8111E0319A951050040E7D1 /* Resources */ = { 160 | isa = PBXResourcesBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | F8111E1419A951050040E7D1 /* Images.xcassets in Resources */, 164 | F7297CED1A85C66C002767FB /* Main.storyboard in Resources */, 165 | F77A9F9B1A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig in Resources */, 166 | F77A9F9C1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig in Resources */, 167 | ); 168 | runOnlyForDeploymentPostprocessing = 0; 169 | }; 170 | /* End PBXResourcesBuildPhase section */ 171 | 172 | /* Begin PBXShellScriptBuildPhase section */ 173 | 232F8168EB8673C9D2405BA7 /* Embed Pods Frameworks */ = { 174 | isa = PBXShellScriptBuildPhase; 175 | buildActionMask = 2147483647; 176 | files = ( 177 | ); 178 | inputPaths = ( 179 | ); 180 | name = "Embed Pods Frameworks"; 181 | outputPaths = ( 182 | ); 183 | runOnlyForDeploymentPostprocessing = 0; 184 | shellPath = /bin/sh; 185 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-frameworks.sh\"\n"; 186 | showEnvVarsInLog = 0; 187 | }; 188 | 6540B3CA5F945114F2BD9C7B /* Check Pods Manifest.lock */ = { 189 | isa = PBXShellScriptBuildPhase; 190 | buildActionMask = 2147483647; 191 | files = ( 192 | ); 193 | inputPaths = ( 194 | ); 195 | name = "Check Pods Manifest.lock"; 196 | outputPaths = ( 197 | ); 198 | runOnlyForDeploymentPostprocessing = 0; 199 | shellPath = /bin/sh; 200 | 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"; 201 | showEnvVarsInLog = 0; 202 | }; 203 | B81850C1CB84CCCCFC8FFC52 /* Copy Pods Resources */ = { 204 | isa = PBXShellScriptBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | ); 208 | inputPaths = ( 209 | ); 210 | name = "Copy Pods Resources"; 211 | outputPaths = ( 212 | ); 213 | runOnlyForDeploymentPostprocessing = 0; 214 | shellPath = /bin/sh; 215 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-resources.sh\"\n"; 216 | showEnvVarsInLog = 0; 217 | }; 218 | /* End PBXShellScriptBuildPhase section */ 219 | 220 | /* Begin PBXSourcesBuildPhase section */ 221 | F8111E0119A951050040E7D1 /* Sources */ = { 222 | isa = PBXSourcesBuildPhase; 223 | buildActionMask = 2147483647; 224 | files = ( 225 | F7297CEB1A85C657002767FB /* ViewController.swift in Sources */, 226 | F7297CEA1A85C657002767FB /* AppDelegate.swift in Sources */, 227 | ); 228 | runOnlyForDeploymentPostprocessing = 0; 229 | }; 230 | /* End PBXSourcesBuildPhase section */ 231 | 232 | /* Begin XCBuildConfiguration section */ 233 | F8111E2119A951050040E7D1 /* Debug */ = { 234 | isa = XCBuildConfiguration; 235 | buildSettings = { 236 | ALWAYS_SEARCH_USER_PATHS = NO; 237 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 238 | CLANG_CXX_LIBRARY = "libc++"; 239 | CLANG_ENABLE_MODULES = YES; 240 | CLANG_ENABLE_OBJC_ARC = YES; 241 | CLANG_WARN_BOOL_CONVERSION = YES; 242 | CLANG_WARN_CONSTANT_CONVERSION = YES; 243 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 244 | CLANG_WARN_EMPTY_BODY = YES; 245 | CLANG_WARN_ENUM_CONVERSION = YES; 246 | CLANG_WARN_INT_CONVERSION = YES; 247 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 248 | CLANG_WARN_UNREACHABLE_CODE = YES; 249 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 250 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 251 | COPY_PHASE_STRIP = NO; 252 | ENABLE_STRICT_OBJC_MSGSEND = YES; 253 | GCC_C_LANGUAGE_STANDARD = gnu99; 254 | GCC_DYNAMIC_NO_PIC = NO; 255 | GCC_OPTIMIZATION_LEVEL = 0; 256 | GCC_PREPROCESSOR_DEFINITIONS = ( 257 | "DEBUG=1", 258 | "$(inherited)", 259 | ); 260 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 261 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 262 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 263 | GCC_WARN_UNDECLARED_SELECTOR = YES; 264 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 265 | GCC_WARN_UNUSED_FUNCTION = YES; 266 | GCC_WARN_UNUSED_VARIABLE = YES; 267 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 268 | MTL_ENABLE_DEBUG_INFO = YES; 269 | ONLY_ACTIVE_ARCH = YES; 270 | SDKROOT = iphoneos; 271 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 272 | TARGETED_DEVICE_FAMILY = "1,2"; 273 | }; 274 | name = Debug; 275 | }; 276 | F8111E2219A951050040E7D1 /* Release */ = { 277 | isa = XCBuildConfiguration; 278 | buildSettings = { 279 | ALWAYS_SEARCH_USER_PATHS = NO; 280 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 281 | CLANG_CXX_LIBRARY = "libc++"; 282 | CLANG_ENABLE_MODULES = YES; 283 | CLANG_ENABLE_OBJC_ARC = YES; 284 | CLANG_WARN_BOOL_CONVERSION = YES; 285 | CLANG_WARN_CONSTANT_CONVERSION = YES; 286 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 287 | CLANG_WARN_EMPTY_BODY = YES; 288 | CLANG_WARN_ENUM_CONVERSION = YES; 289 | CLANG_WARN_INT_CONVERSION = YES; 290 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 291 | CLANG_WARN_UNREACHABLE_CODE = YES; 292 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 293 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 294 | COPY_PHASE_STRIP = YES; 295 | ENABLE_NS_ASSERTIONS = NO; 296 | ENABLE_STRICT_OBJC_MSGSEND = YES; 297 | GCC_C_LANGUAGE_STANDARD = gnu99; 298 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 299 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 300 | GCC_WARN_UNDECLARED_SELECTOR = YES; 301 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 302 | GCC_WARN_UNUSED_FUNCTION = YES; 303 | GCC_WARN_UNUSED_VARIABLE = YES; 304 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 305 | MTL_ENABLE_DEBUG_INFO = NO; 306 | SDKROOT = iphoneos; 307 | TARGETED_DEVICE_FAMILY = "1,2"; 308 | VALIDATE_PRODUCT = YES; 309 | }; 310 | name = Release; 311 | }; 312 | F8111E2419A951050040E7D1 /* Debug */ = { 313 | isa = XCBuildConfiguration; 314 | baseConfigurationReference = F77A9F991A85CDE9007E42B4 /* Pods-LoadingImageView Example.debug.xcconfig */; 315 | buildSettings = { 316 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 317 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 318 | CLANG_ENABLE_MODULES = YES; 319 | INFOPLIST_FILE = "$(SRCROOT)/Example/Info.plist"; 320 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 321 | PRODUCT_NAME = "LoadingImageView Example"; 322 | SWIFT_OBJC_BRIDGING_HEADER = "Example/iOS Example-Bridging-Header.h"; 323 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 324 | }; 325 | name = Debug; 326 | }; 327 | F8111E2519A951050040E7D1 /* Release */ = { 328 | isa = XCBuildConfiguration; 329 | baseConfigurationReference = F77A9F9A1A85CDE9007E42B4 /* Pods-LoadingImageView Example.release.xcconfig */; 330 | buildSettings = { 331 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 332 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 333 | CLANG_ENABLE_MODULES = YES; 334 | INFOPLIST_FILE = "$(SRCROOT)/Example/Info.plist"; 335 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 336 | PRODUCT_NAME = "LoadingImageView Example"; 337 | SWIFT_OBJC_BRIDGING_HEADER = "Example/iOS Example-Bridging-Header.h"; 338 | }; 339 | name = Release; 340 | }; 341 | /* End XCBuildConfiguration section */ 342 | 343 | /* Begin XCConfigurationList section */ 344 | F8111E0019A951050040E7D1 /* Build configuration list for PBXProject "LoadingImageView Example" */ = { 345 | isa = XCConfigurationList; 346 | buildConfigurations = ( 347 | F8111E2119A951050040E7D1 /* Debug */, 348 | F8111E2219A951050040E7D1 /* Release */, 349 | ); 350 | defaultConfigurationIsVisible = 0; 351 | defaultConfigurationName = Release; 352 | }; 353 | F8111E2319A951050040E7D1 /* Build configuration list for PBXNativeTarget "LoadingImageView Example" */ = { 354 | isa = XCConfigurationList; 355 | buildConfigurations = ( 356 | F8111E2419A951050040E7D1 /* Debug */, 357 | F8111E2519A951050040E7D1 /* Release */, 358 | ); 359 | defaultConfigurationIsVisible = 0; 360 | defaultConfigurationName = Release; 361 | }; 362 | /* End XCConfigurationList section */ 363 | }; 364 | rootObject = F8111DFD19A951050040E7D1 /* Project object */; 365 | } 366 | -------------------------------------------------------------------------------- /LoadingImageView.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'LoadingImageView' 3 | s.version = '0.1.2' 4 | s.license = 'MIT' 5 | s.summary = 'Loading Indicator for UIImageView, written in Swift' 6 | s.homepage = 'https://github.com/ggamecrazy/LoadingImageView' 7 | s.social_media_url = 'https://twitter.com/ggamecrazy' 8 | s.authors = { 'Cezar Cocu' => 'me@cezarcocu.com' } 9 | s.source = { :git => 'https://github.com/ggamecrazy/LoadingImageView.git', :tag => '0.1.2' } 10 | s.requires_arc = true 11 | s.ios.framework = 'UIKit' 12 | 13 | s.ios.deployment_target = '8.0' 14 | 15 | s.source_files = 'Source/*.swift' 16 | end 17 | -------------------------------------------------------------------------------- /LoadingImageView.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | 3 | workspace 'LoadingImageView.xcworkspace' 4 | xcodeproj 'LoadingImageView Example.xcodeproj' 5 | 6 | target 'LoadingImageView Example' do 7 | platform :ios, '8.0' 8 | use_frameworks! 9 | pod 'LoadingImageView', :path => '.' 10 | end 11 | 12 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LoadingImageView (0.1.2) 3 | 4 | DEPENDENCIES: 5 | - LoadingImageView (from `.`) 6 | 7 | EXTERNAL SOURCES: 8 | LoadingImageView: 9 | :path: . 10 | 11 | SPEC CHECKSUMS: 12 | LoadingImageView: b2c33bffdeb6a0bf2d6f9beefa0ec83b1f80f004 13 | 14 | COCOAPODS: 0.36.0.beta.2 15 | -------------------------------------------------------------------------------- /Pods/Local Podspecs/LoadingImageView.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LoadingImageView", 3 | "version": "0.1.2", 4 | "license": "MIT", 5 | "summary": "Loading Indicator for UIImageView, written in Swift", 6 | "homepage": "https://github.com/ggamecrazy/LoadingImageView", 7 | "social_media_url": "https://twitter.com/ggamecrazy", 8 | "authors": { 9 | "Cezar Cocu": "me@cezarcocu.com" 10 | }, 11 | "source": { 12 | "git": "https://github.com/ggamecrazy/LoadingImageView.git", 13 | "tag": "0.1.2" 14 | }, 15 | "requires_arc": true, 16 | "ios": { 17 | "frameworks": "UIKit" 18 | }, 19 | "platforms": { 20 | "ios": "8.0" 21 | }, 22 | "source_files": "Source/*.swift" 23 | } 24 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - LoadingImageView (0.1.2) 3 | 4 | DEPENDENCIES: 5 | - LoadingImageView (from `.`) 6 | 7 | EXTERNAL SOURCES: 8 | LoadingImageView: 9 | :path: . 10 | 11 | SPEC CHECKSUMS: 12 | LoadingImageView: b2c33bffdeb6a0bf2d6f9beefa0ec83b1f80f004 13 | 14 | COCOAPODS: 0.36.0.beta.2 15 | -------------------------------------------------------------------------------- /Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | archiveVersion 6 | 1 7 | classes 8 | 9 | objectVersion 10 | 46 11 | objects 12 | 13 | 0247B84460F21A4EBAE23C7E 14 | 15 | explicitFileType 16 | wrapper.framework 17 | includeInIndex 18 | 0 19 | isa 20 | PBXFileReference 21 | name 22 | LoadingImageView.framework 23 | path 24 | LoadingImageView.framework 25 | sourceTree 26 | BUILT_PRODUCTS_DIR 27 | 28 | 041D3F0BAAACFE94E19B414F 29 | 30 | includeInIndex 31 | 1 32 | isa 33 | PBXFileReference 34 | lastKnownFileType 35 | sourcecode.c.h 36 | path 37 | Pods-LoadingImageView Example-umbrella.h 38 | sourceTree 39 | <group> 40 | 41 | 0818E6CDA8FE490466745A0B 42 | 43 | includeInIndex 44 | 1 45 | isa 46 | PBXFileReference 47 | lastKnownFileType 48 | text 49 | path 50 | Pods-LoadingImageView Example-acknowledgements.markdown 51 | sourceTree 52 | <group> 53 | 54 | 0E937777F078160339D5062F 55 | 56 | includeInIndex 57 | 1 58 | isa 59 | PBXFileReference 60 | lastKnownFileType 61 | text.plist.xml 62 | path 63 | Info.plist 64 | sourceTree 65 | <group> 66 | 67 | 1AA56C8ED05D062B78B2EEBD 68 | 69 | includeInIndex 70 | 1 71 | isa 72 | PBXFileReference 73 | lastKnownFileType 74 | text 75 | name 76 | Podfile 77 | path 78 | ../Podfile 79 | sourceTree 80 | SOURCE_ROOT 81 | xcLanguageSpecificationIdentifier 82 | xcode.lang.ruby 83 | 84 | 240D581572D6B6270DAEE0FD 85 | 86 | includeInIndex 87 | 1 88 | isa 89 | PBXFileReference 90 | lastKnownFileType 91 | text.plist.xml 92 | path 93 | Info.plist 94 | sourceTree 95 | <group> 96 | 97 | 24C2820841B2066AD27060AD 98 | 99 | includeInIndex 100 | 1 101 | isa 102 | PBXFileReference 103 | lastKnownFileType 104 | sourcecode.swift 105 | path 106 | LoadingImageView.swift 107 | sourceTree 108 | <group> 109 | 110 | 24F78B0225FFC702E5C6049E 111 | 112 | buildConfigurationList 113 | BB4751B8F772E4FD5B4330EC 114 | buildPhases 115 | 116 | 2643179D0CED1F6F4FF3C91C 117 | 7383A5F39D803453FF4298C0 118 | D6C14AA164B32EC199D5527B 119 | 120 | buildRules 121 | 122 | dependencies 123 | 124 | FDDEBC422B400D500EE745E9 125 | 126 | isa 127 | PBXNativeTarget 128 | name 129 | Pods-LoadingImageView Example 130 | productName 131 | Pods-LoadingImageView Example 132 | productReference 133 | CBF865614C2493E0BDE7835C 134 | productType 135 | com.apple.product-type.framework 136 | 137 | 2643179D0CED1F6F4FF3C91C 138 | 139 | buildActionMask 140 | 2147483647 141 | files 142 | 143 | 84A05434EB4755044B05A159 144 | 145 | isa 146 | PBXSourcesBuildPhase 147 | runOnlyForDeploymentPostprocessing 148 | 0 149 | 150 | 2725CE92BF7854F0B4678E51 151 | 152 | includeInIndex 153 | 1 154 | isa 155 | PBXFileReference 156 | lastKnownFileType 157 | sourcecode.swift 158 | path 159 | BezierPath.swift 160 | sourceTree 161 | <group> 162 | 163 | 2974E3D07B320CD52C9CEB06 164 | 165 | includeInIndex 166 | 1 167 | isa 168 | PBXFileReference 169 | lastKnownFileType 170 | sourcecode.c.objc 171 | path 172 | Pods-LoadingImageView Example-dummy.m 173 | sourceTree 174 | <group> 175 | 176 | 29DD0EFCE35AA997A2E4932C 177 | 178 | fileRef 179 | FA726866A79F6D05E5CC6CBC 180 | isa 181 | PBXBuildFile 182 | 183 | 2BA17FD8813DDAA7E3E3033D 184 | 185 | children 186 | 187 | 7A8C5DC22146A8D5F29F9700 188 | B645C9F4B01DCBD256320BA1 189 | 190 | isa 191 | PBXGroup 192 | name 193 | iOS 194 | sourceTree 195 | <group> 196 | 197 | 350F0A137DB1414FED44D882 198 | 199 | includeInIndex 200 | 1 201 | isa 202 | PBXFileReference 203 | lastKnownFileType 204 | text.script.sh 205 | path 206 | Pods-LoadingImageView Example-resources.sh 207 | sourceTree 208 | <group> 209 | 210 | 401A6117FE1D46601D8EBC3C 211 | 212 | children 213 | 214 | 1AA56C8ED05D062B78B2EEBD 215 | BCFC8944E20F95CC940A7CDF 216 | FB4256E781D4B3F5CF42027A 217 | ACA28C7D21BCC056685A2730 218 | 97C3D93DE048EA7C9E41BAA4 219 | 220 | isa 221 | PBXGroup 222 | sourceTree 223 | <group> 224 | 225 | 40C52BBFA39357D27A10704B 226 | 227 | buildActionMask 228 | 2147483647 229 | files 230 | 231 | 58E90DCDD75ED28FDF8AE2A1 232 | 233 | isa 234 | PBXHeadersBuildPhase 235 | runOnlyForDeploymentPostprocessing 236 | 0 237 | 238 | 4B8E611AA3CBCB79E4650B04 239 | 240 | includeInIndex 241 | 1 242 | isa 243 | PBXFileReference 244 | lastKnownFileType 245 | text.plist.xml 246 | path 247 | Pods-LoadingImageView Example-acknowledgements.plist 248 | sourceTree 249 | <group> 250 | 251 | 4F3BFA05FD93D7F81684DCCF 252 | 253 | buildSettings 254 | 255 | ALWAYS_SEARCH_USER_PATHS 256 | NO 257 | CLANG_CXX_LANGUAGE_STANDARD 258 | gnu++0x 259 | CLANG_CXX_LIBRARY 260 | libc++ 261 | CLANG_ENABLE_MODULES 262 | YES 263 | CLANG_ENABLE_OBJC_ARC 264 | YES 265 | CLANG_WARN_BOOL_CONVERSION 266 | YES 267 | CLANG_WARN_CONSTANT_CONVERSION 268 | YES 269 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 270 | YES 271 | CLANG_WARN_EMPTY_BODY 272 | YES 273 | CLANG_WARN_ENUM_CONVERSION 274 | YES 275 | CLANG_WARN_INT_CONVERSION 276 | YES 277 | CLANG_WARN_OBJC_ROOT_CLASS 278 | YES 279 | CLANG_WARN_UNREACHABLE_CODE 280 | YES 281 | CLANG_WARN__DUPLICATE_METHOD_MATCH 282 | YES 283 | COPY_PHASE_STRIP 284 | NO 285 | ENABLE_NS_ASSERTIONS 286 | NO 287 | GCC_C_LANGUAGE_STANDARD 288 | gnu99 289 | GCC_PREPROCESSOR_DEFINITIONS 290 | 291 | RELEASE=1 292 | 293 | GCC_WARN_64_TO_32_BIT_CONVERSION 294 | YES 295 | GCC_WARN_ABOUT_RETURN_TYPE 296 | YES 297 | GCC_WARN_UNDECLARED_SELECTOR 298 | YES 299 | GCC_WARN_UNINITIALIZED_AUTOS 300 | YES 301 | GCC_WARN_UNUSED_FUNCTION 302 | YES 303 | GCC_WARN_UNUSED_VARIABLE 304 | YES 305 | IPHONEOS_DEPLOYMENT_TARGET 306 | 8.0 307 | STRIP_INSTALLED_PRODUCT 308 | NO 309 | VALIDATE_PRODUCT 310 | YES 311 | 312 | isa 313 | XCBuildConfiguration 314 | name 315 | Release 316 | 317 | 55F12D830C6347C85F8EB881 318 | 319 | fileRef 320 | 7A8C5DC22146A8D5F29F9700 321 | isa 322 | PBXBuildFile 323 | 324 | 589C84D0F9C153E2EF9227CF 325 | 326 | includeInIndex 327 | 1 328 | isa 329 | PBXFileReference 330 | path 331 | Pods-LoadingImageView Example.modulemap 332 | sourceTree 333 | <group> 334 | 335 | 58E90DCDD75ED28FDF8AE2A1 336 | 337 | fileRef 338 | 80C8CEC9328338B095382496 339 | isa 340 | PBXBuildFile 341 | settings 342 | 343 | ATTRIBUTES 344 | 345 | Public 346 | 347 | 348 | 349 | 5A42B4EE4A6CB55A28ED9008 350 | 351 | baseConfigurationReference 352 | BD7DC84BCE67ED5BA53F4C79 353 | buildSettings 354 | 355 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 356 | iPhone Developer 357 | CURRENT_PROJECT_VERSION 358 | 1 359 | DEFINES_MODULE 360 | YES 361 | DYLIB_COMPATIBILITY_VERSION 362 | 1 363 | DYLIB_CURRENT_VERSION 364 | 1 365 | DYLIB_INSTALL_NAME_BASE 366 | @rpath 367 | ENABLE_STRICT_OBJC_MSGSEND 368 | YES 369 | GCC_PREFIX_HEADER 370 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-prefix.pch 371 | INFOPLIST_FILE 372 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Info.plist 373 | INSTALL_PATH 374 | $(LOCAL_LIBRARY_DIR)/Frameworks 375 | IPHONEOS_DEPLOYMENT_TARGET 376 | 8.0 377 | LD_RUNPATH_SEARCH_PATHS 378 | 379 | $(inherited) 380 | @executable_path/Frameworks 381 | @loader_path/Frameworks 382 | 383 | MODULEMAP_FILE 384 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView.modulemap 385 | MTL_ENABLE_DEBUG_INFO 386 | YES 387 | PRODUCT_NAME 388 | LoadingImageView 389 | SDKROOT 390 | iphoneos 391 | SKIP_INSTALL 392 | YES 393 | TARGETED_DEVICE_FAMILY 394 | 1,2 395 | VERSIONING_SYSTEM 396 | apple-generic 397 | VERSION_INFO_PREFIX 398 | 399 | 400 | isa 401 | XCBuildConfiguration 402 | name 403 | Debug 404 | 405 | 5A8517EE0A3A2547E6AF40F8 406 | 407 | includeInIndex 408 | 1 409 | isa 410 | PBXFileReference 411 | lastKnownFileType 412 | text.script.sh 413 | path 414 | Pods-LoadingImageView Example-frameworks.sh 415 | sourceTree 416 | <group> 417 | 418 | 5ADDE4D00B98B2B14EA3B1EE 419 | 420 | fileRef 421 | 24C2820841B2066AD27060AD 422 | isa 423 | PBXBuildFile 424 | 425 | 5C6818B9DC84352DC9D53559 426 | 427 | containerPortal 428 | A0FB8DEFAF6EDDCEA89C5B3D 429 | isa 430 | PBXContainerItemProxy 431 | proxyType 432 | 1 433 | remoteGlobalIDString 434 | ADF6A21E721B1E942B1E23A3 435 | remoteInfo 436 | Pods-LoadingImageView Example-LoadingImageView 437 | 438 | 5C9F49FE1FA393D730F85BB0 439 | 440 | includeInIndex 441 | 1 442 | isa 443 | PBXFileReference 444 | lastKnownFileType 445 | text.xcconfig 446 | path 447 | Pods-LoadingImageView Example-LoadingImageView.xcconfig 448 | sourceTree 449 | <group> 450 | 451 | 5DA928EDB53915AE049B5B33 452 | 453 | buildConfigurations 454 | 455 | 5A42B4EE4A6CB55A28ED9008 456 | E0C05FE1AF707250D871EB1F 457 | 458 | defaultConfigurationIsVisible 459 | 0 460 | defaultConfigurationName 461 | Release 462 | isa 463 | XCConfigurationList 464 | 465 | 610669DA8D32810FFBE53231 466 | 467 | fileRef 468 | 7A8C5DC22146A8D5F29F9700 469 | isa 470 | PBXBuildFile 471 | 472 | 6D1ACB8C96DAE39ABC47D9DD 473 | 474 | includeInIndex 475 | 1 476 | isa 477 | PBXFileReference 478 | lastKnownFileType 479 | sourcecode.c.h 480 | path 481 | Pods-LoadingImageView Example-environment.h 482 | sourceTree 483 | <group> 484 | 485 | 7383A5F39D803453FF4298C0 486 | 487 | buildActionMask 488 | 2147483647 489 | files 490 | 491 | 55F12D830C6347C85F8EB881 492 | 493 | isa 494 | PBXFrameworksBuildPhase 495 | runOnlyForDeploymentPostprocessing 496 | 0 497 | 498 | 7A8C5DC22146A8D5F29F9700 499 | 500 | isa 501 | PBXFileReference 502 | lastKnownFileType 503 | wrapper.framework 504 | name 505 | Foundation.framework 506 | path 507 | Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework 508 | sourceTree 509 | DEVELOPER_DIR 510 | 511 | 80624D291E19359B2FE191C0 512 | 513 | includeInIndex 514 | 1 515 | isa 516 | PBXFileReference 517 | lastKnownFileType 518 | sourcecode.c.h 519 | path 520 | Pods-LoadingImageView Example-LoadingImageView-prefix.pch 521 | sourceTree 522 | <group> 523 | 524 | 807FCBBAF08ACE7490104C8D 525 | 526 | includeInIndex 527 | 1 528 | isa 529 | PBXFileReference 530 | lastKnownFileType 531 | text.xcconfig 532 | path 533 | Pods-LoadingImageView Example.debug.xcconfig 534 | sourceTree 535 | <group> 536 | 537 | 80C8CEC9328338B095382496 538 | 539 | includeInIndex 540 | 1 541 | isa 542 | PBXFileReference 543 | lastKnownFileType 544 | sourcecode.c.h 545 | path 546 | Pods-LoadingImageView Example-LoadingImageView-umbrella.h 547 | sourceTree 548 | <group> 549 | 550 | 84A05434EB4755044B05A159 551 | 552 | fileRef 553 | 2974E3D07B320CD52C9CEB06 554 | isa 555 | PBXBuildFile 556 | 557 | 86ECCD49C9548AF1575E384C 558 | 559 | children 560 | 561 | EC1869C32B3945A694CCDDBD 562 | ADF5E177A15C438D3FF81211 563 | 564 | isa 565 | PBXGroup 566 | name 567 | LoadingImageView 568 | path 569 | .. 570 | sourceTree 571 | <group> 572 | 573 | 97C3D93DE048EA7C9E41BAA4 574 | 575 | children 576 | 577 | EA1B8ACF2854D5874C8F6416 578 | 579 | isa 580 | PBXGroup 581 | name 582 | Targets Support Files 583 | sourceTree 584 | <group> 585 | 586 | 9EB0B268F7714A5496155D55 587 | 588 | buildActionMask 589 | 2147483647 590 | files 591 | 592 | C535328A597012FA05C2BCA9 593 | 5ADDE4D00B98B2B14EA3B1EE 594 | 29DD0EFCE35AA997A2E4932C 595 | 596 | isa 597 | PBXSourcesBuildPhase 598 | runOnlyForDeploymentPostprocessing 599 | 0 600 | 601 | A0FB8DEFAF6EDDCEA89C5B3D 602 | 603 | attributes 604 | 605 | LastUpgradeCheck 606 | 0510 607 | 608 | buildConfigurationList 609 | F386243CCC2ACADE36B31AC1 610 | compatibilityVersion 611 | Xcode 3.2 612 | developmentRegion 613 | English 614 | hasScannedForEncodings 615 | 0 616 | isa 617 | PBXProject 618 | knownRegions 619 | 620 | en 621 | 622 | mainGroup 623 | 401A6117FE1D46601D8EBC3C 624 | productRefGroup 625 | ACA28C7D21BCC056685A2730 626 | projectDirPath 627 | 628 | projectReferences 629 | 630 | projectRoot 631 | 632 | targets 633 | 634 | 24F78B0225FFC702E5C6049E 635 | ADF6A21E721B1E942B1E23A3 636 | 637 | 638 | AC9B40FF275BF36C01C870F9 639 | 640 | fileRef 641 | B645C9F4B01DCBD256320BA1 642 | isa 643 | PBXBuildFile 644 | 645 | ACA28C7D21BCC056685A2730 646 | 647 | children 648 | 649 | 0247B84460F21A4EBAE23C7E 650 | CBF865614C2493E0BDE7835C 651 | 652 | isa 653 | PBXGroup 654 | name 655 | Products 656 | sourceTree 657 | <group> 658 | 659 | ADF5E177A15C438D3FF81211 660 | 661 | children 662 | 663 | 240D581572D6B6270DAEE0FD 664 | E89E759046BCA2CEB7464CC0 665 | 5C9F49FE1FA393D730F85BB0 666 | BD7DC84BCE67ED5BA53F4C79 667 | FA726866A79F6D05E5CC6CBC 668 | 80624D291E19359B2FE191C0 669 | 80C8CEC9328338B095382496 670 | 671 | isa 672 | PBXGroup 673 | name 674 | Support Files 675 | path 676 | Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView 677 | sourceTree 678 | <group> 679 | 680 | ADF6A21E721B1E942B1E23A3 681 | 682 | buildConfigurationList 683 | 5DA928EDB53915AE049B5B33 684 | buildPhases 685 | 686 | 9EB0B268F7714A5496155D55 687 | E186795543198F4F85D60A0A 688 | 40C52BBFA39357D27A10704B 689 | 690 | buildRules 691 | 692 | dependencies 693 | 694 | isa 695 | PBXNativeTarget 696 | name 697 | Pods-LoadingImageView Example-LoadingImageView 698 | productName 699 | Pods-LoadingImageView Example-LoadingImageView 700 | productReference 701 | 0247B84460F21A4EBAE23C7E 702 | productType 703 | com.apple.product-type.framework 704 | 705 | B0955F807F6722910A156DC8 706 | 707 | baseConfigurationReference 708 | 807FCBBAF08ACE7490104C8D 709 | buildSettings 710 | 711 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 712 | iPhone Developer 713 | CURRENT_PROJECT_VERSION 714 | 1 715 | DEFINES_MODULE 716 | YES 717 | DYLIB_COMPATIBILITY_VERSION 718 | 1 719 | DYLIB_CURRENT_VERSION 720 | 1 721 | DYLIB_INSTALL_NAME_BASE 722 | @rpath 723 | ENABLE_STRICT_OBJC_MSGSEND 724 | YES 725 | INFOPLIST_FILE 726 | Target Support Files/Pods-LoadingImageView Example/Info.plist 727 | INSTALL_PATH 728 | $(LOCAL_LIBRARY_DIR)/Frameworks 729 | IPHONEOS_DEPLOYMENT_TARGET 730 | 8.0 731 | LD_RUNPATH_SEARCH_PATHS 732 | 733 | $(inherited) 734 | @executable_path/Frameworks 735 | @loader_path/Frameworks 736 | 737 | MODULEMAP_FILE 738 | Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.modulemap 739 | MTL_ENABLE_DEBUG_INFO 740 | YES 741 | OTHER_LDFLAGS 742 | 743 | OTHER_LIBTOOLFLAGS 744 | 745 | PODS_ROOT 746 | $(SRCROOT) 747 | PRODUCT_NAME 748 | Pods_LoadingImageView_Example 749 | SDKROOT 750 | iphoneos 751 | SKIP_INSTALL 752 | YES 753 | TARGETED_DEVICE_FAMILY 754 | 1,2 755 | VERSIONING_SYSTEM 756 | apple-generic 757 | VERSION_INFO_PREFIX 758 | 759 | 760 | isa 761 | XCBuildConfiguration 762 | name 763 | Debug 764 | 765 | B645C9F4B01DCBD256320BA1 766 | 767 | isa 768 | PBXFileReference 769 | lastKnownFileType 770 | wrapper.framework 771 | name 772 | UIKit.framework 773 | path 774 | Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/UIKit.framework 775 | sourceTree 776 | DEVELOPER_DIR 777 | 778 | BB4751B8F772E4FD5B4330EC 779 | 780 | buildConfigurations 781 | 782 | B0955F807F6722910A156DC8 783 | F82605413D41D9E38F55D190 784 | 785 | defaultConfigurationIsVisible 786 | 0 787 | defaultConfigurationName 788 | Release 789 | isa 790 | XCConfigurationList 791 | 792 | BCFC8944E20F95CC940A7CDF 793 | 794 | children 795 | 796 | 86ECCD49C9548AF1575E384C 797 | 798 | isa 799 | PBXGroup 800 | name 801 | Development Pods 802 | sourceTree 803 | <group> 804 | 805 | BD7DC84BCE67ED5BA53F4C79 806 | 807 | includeInIndex 808 | 1 809 | isa 810 | PBXFileReference 811 | lastKnownFileType 812 | text.xcconfig 813 | path 814 | Pods-LoadingImageView Example-LoadingImageView-Private.xcconfig 815 | sourceTree 816 | <group> 817 | 818 | C535328A597012FA05C2BCA9 819 | 820 | fileRef 821 | 2725CE92BF7854F0B4678E51 822 | isa 823 | PBXBuildFile 824 | 825 | CBF865614C2493E0BDE7835C 826 | 827 | explicitFileType 828 | wrapper.framework 829 | includeInIndex 830 | 0 831 | isa 832 | PBXFileReference 833 | name 834 | Pods_LoadingImageView_Example.framework 835 | path 836 | Pods_LoadingImageView_Example.framework 837 | sourceTree 838 | BUILT_PRODUCTS_DIR 839 | 840 | CF243DBD1CCA9EA83DCF1690 841 | 842 | buildSettings 843 | 844 | ALWAYS_SEARCH_USER_PATHS 845 | NO 846 | CLANG_CXX_LANGUAGE_STANDARD 847 | gnu++0x 848 | CLANG_CXX_LIBRARY 849 | libc++ 850 | CLANG_ENABLE_MODULES 851 | YES 852 | CLANG_ENABLE_OBJC_ARC 853 | YES 854 | CLANG_WARN_BOOL_CONVERSION 855 | YES 856 | CLANG_WARN_CONSTANT_CONVERSION 857 | YES 858 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE 859 | YES 860 | CLANG_WARN_EMPTY_BODY 861 | YES 862 | CLANG_WARN_ENUM_CONVERSION 863 | YES 864 | CLANG_WARN_INT_CONVERSION 865 | YES 866 | CLANG_WARN_OBJC_ROOT_CLASS 867 | YES 868 | CLANG_WARN_UNREACHABLE_CODE 869 | YES 870 | CLANG_WARN__DUPLICATE_METHOD_MATCH 871 | YES 872 | COPY_PHASE_STRIP 873 | YES 874 | GCC_C_LANGUAGE_STANDARD 875 | gnu99 876 | GCC_DYNAMIC_NO_PIC 877 | NO 878 | GCC_OPTIMIZATION_LEVEL 879 | 0 880 | GCC_PREPROCESSOR_DEFINITIONS 881 | 882 | DEBUG=1 883 | $(inherited) 884 | 885 | GCC_SYMBOLS_PRIVATE_EXTERN 886 | NO 887 | GCC_WARN_64_TO_32_BIT_CONVERSION 888 | YES 889 | GCC_WARN_ABOUT_RETURN_TYPE 890 | YES 891 | GCC_WARN_UNDECLARED_SELECTOR 892 | YES 893 | GCC_WARN_UNINITIALIZED_AUTOS 894 | YES 895 | GCC_WARN_UNUSED_FUNCTION 896 | YES 897 | GCC_WARN_UNUSED_VARIABLE 898 | YES 899 | IPHONEOS_DEPLOYMENT_TARGET 900 | 8.0 901 | ONLY_ACTIVE_ARCH 902 | YES 903 | STRIP_INSTALLED_PRODUCT 904 | NO 905 | 906 | isa 907 | XCBuildConfiguration 908 | name 909 | Debug 910 | 911 | D6C14AA164B32EC199D5527B 912 | 913 | buildActionMask 914 | 2147483647 915 | files 916 | 917 | EEE44ACD34A691D2C402537F 918 | 919 | isa 920 | PBXHeadersBuildPhase 921 | runOnlyForDeploymentPostprocessing 922 | 0 923 | 924 | DC1D71E3C2F3F46FCA431441 925 | 926 | includeInIndex 927 | 1 928 | isa 929 | PBXFileReference 930 | lastKnownFileType 931 | text.xcconfig 932 | path 933 | Pods-LoadingImageView Example.release.xcconfig 934 | sourceTree 935 | <group> 936 | 937 | E0C05FE1AF707250D871EB1F 938 | 939 | baseConfigurationReference 940 | BD7DC84BCE67ED5BA53F4C79 941 | buildSettings 942 | 943 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 944 | iPhone Developer 945 | CURRENT_PROJECT_VERSION 946 | 1 947 | DEFINES_MODULE 948 | YES 949 | DYLIB_COMPATIBILITY_VERSION 950 | 1 951 | DYLIB_CURRENT_VERSION 952 | 1 953 | DYLIB_INSTALL_NAME_BASE 954 | @rpath 955 | ENABLE_STRICT_OBJC_MSGSEND 956 | YES 957 | GCC_PREFIX_HEADER 958 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-prefix.pch 959 | INFOPLIST_FILE 960 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Info.plist 961 | INSTALL_PATH 962 | $(LOCAL_LIBRARY_DIR)/Frameworks 963 | IPHONEOS_DEPLOYMENT_TARGET 964 | 8.0 965 | LD_RUNPATH_SEARCH_PATHS 966 | 967 | $(inherited) 968 | @executable_path/Frameworks 969 | @loader_path/Frameworks 970 | 971 | MODULEMAP_FILE 972 | Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView.modulemap 973 | MTL_ENABLE_DEBUG_INFO 974 | NO 975 | PRODUCT_NAME 976 | LoadingImageView 977 | SDKROOT 978 | iphoneos 979 | SKIP_INSTALL 980 | YES 981 | TARGETED_DEVICE_FAMILY 982 | 1,2 983 | VERSIONING_SYSTEM 984 | apple-generic 985 | VERSION_INFO_PREFIX 986 | 987 | 988 | isa 989 | XCBuildConfiguration 990 | name 991 | Release 992 | 993 | E186795543198F4F85D60A0A 994 | 995 | buildActionMask 996 | 2147483647 997 | files 998 | 999 | 610669DA8D32810FFBE53231 1000 | AC9B40FF275BF36C01C870F9 1001 | 1002 | isa 1003 | PBXFrameworksBuildPhase 1004 | runOnlyForDeploymentPostprocessing 1005 | 0 1006 | 1007 | E89E759046BCA2CEB7464CC0 1008 | 1009 | includeInIndex 1010 | 1 1011 | isa 1012 | PBXFileReference 1013 | path 1014 | Pods-LoadingImageView Example-LoadingImageView.modulemap 1015 | sourceTree 1016 | <group> 1017 | 1018 | EA1B8ACF2854D5874C8F6416 1019 | 1020 | children 1021 | 1022 | 0E937777F078160339D5062F 1023 | 589C84D0F9C153E2EF9227CF 1024 | 0818E6CDA8FE490466745A0B 1025 | 4B8E611AA3CBCB79E4650B04 1026 | 2974E3D07B320CD52C9CEB06 1027 | 6D1ACB8C96DAE39ABC47D9DD 1028 | 5A8517EE0A3A2547E6AF40F8 1029 | 350F0A137DB1414FED44D882 1030 | 041D3F0BAAACFE94E19B414F 1031 | 807FCBBAF08ACE7490104C8D 1032 | DC1D71E3C2F3F46FCA431441 1033 | 1034 | isa 1035 | PBXGroup 1036 | name 1037 | Pods-LoadingImageView Example 1038 | path 1039 | Target Support Files/Pods-LoadingImageView Example 1040 | sourceTree 1041 | <group> 1042 | 1043 | EC1869C32B3945A694CCDDBD 1044 | 1045 | children 1046 | 1047 | 2725CE92BF7854F0B4678E51 1048 | 24C2820841B2066AD27060AD 1049 | 1050 | isa 1051 | PBXGroup 1052 | name 1053 | Source 1054 | path 1055 | Source 1056 | sourceTree 1057 | <group> 1058 | 1059 | EEE44ACD34A691D2C402537F 1060 | 1061 | fileRef 1062 | 041D3F0BAAACFE94E19B414F 1063 | isa 1064 | PBXBuildFile 1065 | settings 1066 | 1067 | ATTRIBUTES 1068 | 1069 | Public 1070 | 1071 | 1072 | 1073 | F386243CCC2ACADE36B31AC1 1074 | 1075 | buildConfigurations 1076 | 1077 | CF243DBD1CCA9EA83DCF1690 1078 | 4F3BFA05FD93D7F81684DCCF 1079 | 1080 | defaultConfigurationIsVisible 1081 | 0 1082 | defaultConfigurationName 1083 | Release 1084 | isa 1085 | XCConfigurationList 1086 | 1087 | F82605413D41D9E38F55D190 1088 | 1089 | baseConfigurationReference 1090 | DC1D71E3C2F3F46FCA431441 1091 | buildSettings 1092 | 1093 | CODE_SIGN_IDENTITY[sdk=iphoneos*] 1094 | iPhone Developer 1095 | CURRENT_PROJECT_VERSION 1096 | 1 1097 | DEFINES_MODULE 1098 | YES 1099 | DYLIB_COMPATIBILITY_VERSION 1100 | 1 1101 | DYLIB_CURRENT_VERSION 1102 | 1 1103 | DYLIB_INSTALL_NAME_BASE 1104 | @rpath 1105 | ENABLE_STRICT_OBJC_MSGSEND 1106 | YES 1107 | INFOPLIST_FILE 1108 | Target Support Files/Pods-LoadingImageView Example/Info.plist 1109 | INSTALL_PATH 1110 | $(LOCAL_LIBRARY_DIR)/Frameworks 1111 | IPHONEOS_DEPLOYMENT_TARGET 1112 | 8.0 1113 | LD_RUNPATH_SEARCH_PATHS 1114 | 1115 | $(inherited) 1116 | @executable_path/Frameworks 1117 | @loader_path/Frameworks 1118 | 1119 | MODULEMAP_FILE 1120 | Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.modulemap 1121 | MTL_ENABLE_DEBUG_INFO 1122 | NO 1123 | OTHER_LDFLAGS 1124 | 1125 | OTHER_LIBTOOLFLAGS 1126 | 1127 | PODS_ROOT 1128 | $(SRCROOT) 1129 | PRODUCT_NAME 1130 | Pods_LoadingImageView_Example 1131 | SDKROOT 1132 | iphoneos 1133 | SKIP_INSTALL 1134 | YES 1135 | TARGETED_DEVICE_FAMILY 1136 | 1,2 1137 | VERSIONING_SYSTEM 1138 | apple-generic 1139 | VERSION_INFO_PREFIX 1140 | 1141 | 1142 | isa 1143 | XCBuildConfiguration 1144 | name 1145 | Release 1146 | 1147 | FA726866A79F6D05E5CC6CBC 1148 | 1149 | includeInIndex 1150 | 1 1151 | isa 1152 | PBXFileReference 1153 | lastKnownFileType 1154 | sourcecode.c.objc 1155 | path 1156 | Pods-LoadingImageView Example-LoadingImageView-dummy.m 1157 | sourceTree 1158 | <group> 1159 | 1160 | FB4256E781D4B3F5CF42027A 1161 | 1162 | children 1163 | 1164 | 2BA17FD8813DDAA7E3E3033D 1165 | 1166 | isa 1167 | PBXGroup 1168 | name 1169 | Frameworks 1170 | sourceTree 1171 | <group> 1172 | 1173 | FDDEBC422B400D500EE745E9 1174 | 1175 | isa 1176 | PBXTargetDependency 1177 | name 1178 | Pods-LoadingImageView Example-LoadingImageView 1179 | target 1180 | ADF6A21E721B1E942B1E23A3 1181 | targetProxy 1182 | 5C6818B9DC84352DC9D53559 1183 | 1184 | 1185 | rootObject 1186 | A0FB8DEFAF6EDDCEA89C5B3D 1187 | 1188 | 1189 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-Private.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods-LoadingImageView Example-LoadingImageView.xcconfig" 2 | CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH 3 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/LoadingImageView" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/LoadingImageView" 6 | OTHER_LDFLAGS = ${PODS_LOADINGIMAGEVIEW_EXAMPLE_LOADINGIMAGEVIEW_OTHER_LDFLAGS} -ObjC 7 | OTHER_SWIFT_FLAGS = "-D COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LoadingImageView Example 9 | PODS_ROOT = ${SRCROOT} -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LoadingImageView_Example_LoadingImageView : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LoadingImageView_Example_LoadingImageView 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #endif 4 | 5 | #import "Pods-LoadingImageView Example-environment.h" 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double LoadingImageViewVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char LoadingImageViewVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView.modulemap: -------------------------------------------------------------------------------- 1 | framework module LoadingImageView { 2 | umbrella header "Pods-LoadingImageView Example-LoadingImageView-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example-LoadingImageView/Pods-LoadingImageView Example-LoadingImageView.xcconfig: -------------------------------------------------------------------------------- 1 | PODS_LOADINGIMAGEVIEW_EXAMPLE_LOADINGIMAGEVIEW_OTHER_LDFLAGS = -framework "UIKit" -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 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 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## LoadingImageView 5 | 6 | Copyright (c) 2015 Cezar Cocu 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 - http://cocoapods.org 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView 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) 2015 Cezar Cocu 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 | LoadingImageView 39 | Type 40 | PSGroupSpecifier 41 | 42 | 43 | FooterText 44 | Generated by CocoaPods - http://cocoapods.org 45 | Title 46 | 47 | Type 48 | PSGroupSpecifier 49 | 50 | 51 | StringsTable 52 | Acknowledgements 53 | Title 54 | Acknowledgements 55 | 56 | 57 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_LoadingImageView_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_LoadingImageView_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-environment.h: -------------------------------------------------------------------------------- 1 | 2 | // To check if a library is compiled with CocoaPods you 3 | // can use the `COCOAPODS` macro definition which is 4 | // defined in the xcconfigs so it is available in 5 | // headers also when they are imported in the client 6 | // project. 7 | 8 | 9 | // LoadingImageView 10 | #define COCOAPODS_POD_AVAILABLE_LoadingImageView 11 | #define COCOAPODS_VERSION_MAJOR_LoadingImageView 0 12 | #define COCOAPODS_VERSION_MINOR_LoadingImageView 1 13 | #define COCOAPODS_VERSION_PATCH_LoadingImageView 2 14 | 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView 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 | local source="${BUILT_PRODUCTS_DIR}/Pods-LoadingImageView Example/$1" 12 | local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | 14 | if [ -L ${source} ]; then 15 | echo "Symlinked..." 16 | source=$(readlink "${source}") 17 | fi 18 | 19 | # use filter instead of exclude so missing patterns dont' throw errors 20 | echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" ${source} ${destination}" 21 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" "${source}" "${destination}" 22 | # Resign the code if required by the build settings to avoid unstable apps 23 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 24 | code_sign "${destination}/$1" 25 | fi 26 | 27 | # Embed linked Swift runtime libraries 28 | local basename 29 | basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) 30 | local swift_runtime_libs 31 | swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 32 | for lib in $swift_runtime_libs; do 33 | echo "rsync -av \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 34 | rsync -av "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 35 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 36 | code_sign "${destination}/${lib}" 37 | fi 38 | done 39 | } 40 | 41 | # Signs a framework with the provided identity 42 | code_sign() { 43 | # Use the current code_sign_identitiy 44 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 45 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" 46 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 47 | } 48 | 49 | 50 | if [[ "$CONFIGURATION" == "Debug" ]]; then 51 | install_framework 'LoadingImageView.framework' 52 | fi 53 | if [[ "$CONFIGURATION" == "Release" ]]; then 54 | install_framework 'LoadingImageView.framework' 55 | fi 56 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | install_resource() 10 | { 11 | case $1 in 12 | *.storyboard) 13 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 14 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 15 | ;; 16 | *.xib) 17 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" 18 | ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" 19 | ;; 20 | *.framework) 21 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 22 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 23 | echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 24 | rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 25 | ;; 26 | *.xcdatamodel) 27 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" 28 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" 29 | ;; 30 | *.xcdatamodeld) 31 | echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" 32 | xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" 33 | ;; 34 | *.xcmappingmodel) 35 | echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" 36 | xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" 37 | ;; 38 | *.xcassets) 39 | ;; 40 | /*) 41 | echo "$1" 42 | echo "$1" >> "$RESOURCES_TO_COPY" 43 | ;; 44 | *) 45 | echo "${PODS_ROOT}/$1" 46 | echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" 47 | ;; 48 | esac 49 | } 50 | 51 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 52 | if [[ "${ACTION}" == "install" ]]; then 53 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 54 | fi 55 | rm -f "$RESOURCES_TO_COPY" 56 | 57 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ] 58 | then 59 | case "${TARGETED_DEVICE_FAMILY}" in 60 | 1,2) 61 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 62 | ;; 63 | 1) 64 | TARGET_DEVICE_ARGS="--target-device iphone" 65 | ;; 66 | 2) 67 | TARGET_DEVICE_ARGS="--target-device ipad" 68 | ;; 69 | *) 70 | TARGET_DEVICE_ARGS="--target-device mac" 71 | ;; 72 | esac 73 | find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 74 | fi 75 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | FOUNDATION_EXPORT double Pods_LoadingImageView_ExampleVersionNumber; 5 | FOUNDATION_EXPORT const unsigned char Pods_LoadingImageView_ExampleVersionString[]; 6 | 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/LoadingImageView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "LoadingImageView" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = "-D COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LoadingImageView Example 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_LoadingImageView_Example { 2 | umbrella header "Pods-LoadingImageView Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-LoadingImageView Example/Pods-LoadingImageView Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" 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_FRAMEWORK_BUILD_PATH/LoadingImageView.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -framework "LoadingImageView" 6 | OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) 7 | OTHER_SWIFT_FLAGS = "-D COCOAPODS" 8 | PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LoadingImageView Example 9 | PODS_ROOT = ${SRCROOT}/Pods -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LoadingImageView 2 | ================ 3 | 4 | Loading Indicator for UIImageView written in Swift. 5 | 6 | - [x] Simple to use 7 | - [x] Handles network calls and background image decoding. 8 | - [x] Background decoding of Images 9 | - [x] Handles Error states and retrying download. 10 | - [ ] Handles offline caching. Coming soon. 11 | 12 | ![demo](https://raw.githubusercontent.com/ggamecrazy/LoadingImageView/master/Screenshots/LoadingImageShowcase.gif) 13 | 14 | ###Cocoapod 15 | 16 | ``` ruby 17 | pod 'LoadingImageView' 18 | 19 | ``` 20 | 21 | ###USAGE 22 | 23 | As simple as 24 | ``` swift 25 | import LoadingImageView 26 | 27 | let imageView = LoadingImageView() 28 | view.addSubview(imageView) 29 | let imageURL = NSURL(string: "https://catfishes.files.wordpress.com/2013/03/cat-breaded.jpg") 30 | imageView.downloadImage(imageURL, placeholder: nil) 31 | ``` 32 | ####API 33 | ``` swift 34 | var state: LoadingImageState 35 | weak var delegate: LoadingImageViewDelegate? 36 | var inset: Float 37 | var lineWidth: Float 38 | var lineColor: UIColor 39 | var reloadImage: UIImage 40 | 41 | func downloadImage(URL: NSURL, placeholder:UIImage?)->NSURLSessionDownloadTask 42 | ``` 43 | 44 | ####Delegate and State 45 | ``` swift 46 | enum LoadingImageState { 47 | case Idle 48 | case Downloading(NSURLSessionDownloadTask) 49 | case Errored(NSURLSessionDownloadTask, NSError) 50 | } 51 | 52 | protocol LoadingImageViewDelegate : NSObjectProtocol { 53 | func loadingImageViewStateChanged(imageView: LoadingImageView, state: LoadingImageState) 54 | func shouldAttemptRetry(imageView: LoadingImageView)->Bool 55 | func imageForReloadState(imageView: LoadingImageView)->UIImage 56 | } 57 | ``` 58 | ####Storyboard, Support for IBInspectable 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Screenshots/IBInspectableSupport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cezarc1/LoadingImageView/9f8ff2da26925a0eb81e28d8f93144a0d650b5e5/Screenshots/IBInspectableSupport.jpg -------------------------------------------------------------------------------- /Screenshots/LoadingImageShowcase.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cezarc1/LoadingImageView/9f8ff2da26925a0eb81e28d8f93144a0d650b5e5/Screenshots/LoadingImageShowcase.gif -------------------------------------------------------------------------------- /Source/BezierPath.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BezierPath.swift 3 | // LoadingImageView 4 | // 5 | // Created by Cezar Cocu on 1/2/15. 6 | // Copyright (c) 2015 Cezar Cocu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIBezierPath { 12 | 13 | convenience init(semiCircleInRect rect: CGRect, inset: CGFloat) { 14 | self.init() 15 | let center = CGPointMake(CGRectGetWidth(rect) / CGFloat(2.0), 16 | CGRectGetHeight(rect) / CGFloat(2.0)) 17 | let minSize = min(CGRectGetWidth(rect), CGRectGetHeight(rect)) 18 | let radius = minSize / CGFloat(2.0) - inset 19 | let PI2 = CGFloat(2.0 * M_PI) 20 | self.addArcWithCenter(center, radius: radius, startAngle: CGFloat(0.0), endAngle: PI2, clockwise: true) 21 | } 22 | } -------------------------------------------------------------------------------- /Source/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | com.alamofire.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Source/LoadingImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoadingImageView.swift 3 | // LoadingImageView 4 | // 5 | // Created by Cezar Cocu on 1/2/15. 6 | // Copyright (c) 2015 Cezar Cocu. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import QuartzCore 11 | 12 | public enum LoadingImageState { 13 | case Idle 14 | case Downloading(NSURLSessionDownloadTask) 15 | case Errored(NSURLSessionDownloadTask, NSError) 16 | } 17 | 18 | public final class LoadingImageView : UIView, NSURLSessionDownloadDelegate { 19 | 20 | public var state: LoadingImageState = .Idle { 21 | didSet { 22 | updateUI() 23 | delegate?.loadingImageViewStateChanged(self, state: self.state) 24 | 25 | switch state { 26 | case .Downloading(_): 27 | reloadImageView.removeFromSuperview() 28 | if let link = displayLink { 29 | link.paused = false 30 | link.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode) 31 | } 32 | case .Errored(_, _): 33 | if let link = displayLink { 34 | link.paused = true 35 | } 36 | progressLayer.hidden = true 37 | addSubview(reloadImageView) 38 | if let image = delegate?.imageForReloadState(self) { 39 | reloadImage = image 40 | } 41 | case .Idle: 42 | reloadImageView.removeFromSuperview() 43 | if let link = displayLink { 44 | link.paused = true 45 | } 46 | } 47 | } 48 | } 49 | 50 | public weak var delegate: LoadingImageViewDelegate? 51 | 52 | public var operationQueue : NSOperationQueue = LoadingImageView.operationQueue 53 | 54 | public let imageView: UIImageView = UIImageView() 55 | 56 | public var tapGestureRecognizer: UITapGestureRecognizer { 57 | return UITapGestureRecognizer(target: self, action: "tapOccured:") 58 | } 59 | 60 | @IBInspectable public var inset: Float = 10.0 61 | 62 | @IBInspectable public var lineWidth: Float = 10.0 63 | 64 | @IBInspectable public var lineColor: UIColor = UIColor.grayColor() 65 | 66 | @IBInspectable public var reloadImage: UIImage = UIImage() { 67 | didSet { 68 | self.reloadImageView.image = reloadImage 69 | } 70 | } 71 | 72 | public var progress: Float = 0.0 73 | 74 | private lazy var progressLayer: CAShapeLayer = { 75 | let shape = CAShapeLayer() 76 | shape.strokeStart = CGFloat(0.0) 77 | shape.strokeEnd = CGFloat(0.0) 78 | shape.fillColor = UIColor.clearColor().CGColor 79 | return shape 80 | }() 81 | 82 | private lazy var reloadImageView: UIImageView = { 83 | let image = UIImageView() 84 | image.contentMode = .ScaleAspectFit 85 | return image 86 | }() 87 | 88 | private lazy var displayLink: CADisplayLink? = { 89 | #if !TARGET_INTERFACE_BUILDER 90 | let link = CADisplayLink(target: self, selector: "updateUI") 91 | link.frameInterval = 30 // twice every second 92 | return link 93 | #else 94 | return nil 95 | #endif 96 | }() 97 | 98 | 99 | private class var operationQueue : NSOperationQueue { 100 | struct Static { 101 | static let instance : NSOperationQueue = { 102 | let queue = NSOperationQueue() 103 | queue.qualityOfService = .UserInitiated 104 | queue.name = "LoadingImageViewQueue" 105 | return queue 106 | }() 107 | } 108 | return Static.instance 109 | } 110 | 111 | public override init(frame: CGRect) { 112 | super.init(frame: frame) 113 | self.commonInit() 114 | } 115 | 116 | required public init(coder aDecoder: NSCoder) { 117 | super.init(coder: aDecoder) 118 | self.commonInit() 119 | } 120 | 121 | private func commonInit() { 122 | #if TARGET_INTERFACE_BUILDER 123 | backgroundColor = UIColor.redColor() 124 | #else 125 | clipsToBounds = true 126 | backgroundColor = UIColor.whiteColor() 127 | addGestureRecognizer(tapGestureRecognizer) 128 | 129 | addSubview(imageView) 130 | imageView.contentMode = contentMode 131 | layer.addSublayer(progressLayer) 132 | #endif 133 | } 134 | 135 | //MARK: AutoLayout 136 | 137 | public override func intrinsicContentSize()->CGSize { 138 | return imageView.intrinsicContentSize() 139 | } 140 | 141 | //MARK: Lifecycle 142 | public override func layoutSubviews() { 143 | super.layoutSubviews() 144 | 145 | imageView.frame = bounds 146 | reloadImageView.frame = bounds 147 | } 148 | 149 | override public func didMoveToSuperview() { 150 | super.didMoveToSuperview() 151 | 152 | if let view = superview { 153 | if let link = displayLink { 154 | link.paused = false 155 | 156 | } 157 | } else { 158 | if let link = displayLink { 159 | link.paused = true 160 | } 161 | } 162 | } 163 | 164 | //MARK: UI Sync 165 | func updateUI() { 166 | dispatch_async(dispatch_get_main_queue()) { 167 | self.updateProgressLayer(forState: self.state, progress: self.progress) 168 | 169 | println("\(self.progress * 100)%") 170 | } 171 | } 172 | 173 | func updateProgressLayer(forState state: LoadingImageState, progress: Float) { 174 | switch state { 175 | case .Downloading(_): 176 | progressLayer.hidden = false 177 | progressLayer.path = UIBezierPath(semiCircleInRect: bounds, inset: CGFloat(inset)).CGPath 178 | progressLayer.strokeColor = lineColor.CGColor 179 | progressLayer.lineWidth = CGFloat(lineWidth) 180 | progressLayer.strokeEnd = max(CGFloat(progress), CGFloat(0.05)) 181 | default: 182 | break 183 | } 184 | } 185 | 186 | //MARK: Network Calls 187 | public func downloadImage(URL: NSURL, placeholder:UIImage?)->NSURLSessionDownloadTask { 188 | let config = NSURLSessionConfiguration.defaultSessionConfiguration() 189 | var session = NSURLSession(configuration: config, delegate: self, delegateQueue: NSOperationQueue()) 190 | return downloadImage(URL, placeholder: placeholder, session: session) 191 | } 192 | 193 | public func downloadImage(URL: NSURL, placeholder:UIImage?, session: NSURLSession)->NSURLSessionDownloadTask { 194 | switch state { 195 | case .Downloading(let task): 196 | task.cancel() 197 | default: 198 | break 199 | } 200 | 201 | self.imageView.image = placeholder ?? nil 202 | let request = NSMutableURLRequest(URL: URL) 203 | request.timeoutInterval = 20.0 204 | let downloadTask = session.downloadTaskWithRequest(request) 205 | progress = 0.0 206 | state = .Downloading(downloadTask) 207 | downloadTask.resume() 208 | return downloadTask 209 | } 210 | 211 | //MARK: - Actions 212 | 213 | func tapOccured(sender: AnyObject) { 214 | switch state { 215 | case .Errored(let task, _): 216 | let maybeAttemptReload = delegate?.shouldAttemptRetry(self) 217 | if let attemptReload = maybeAttemptReload { 218 | if attemptReload { 219 | self.downloadImage(task.originalRequest.URL!, placeholder: nil) 220 | } 221 | } else { 222 | self.downloadImage(task.originalRequest.URL!, placeholder: nil) 223 | } 224 | fallthrough 225 | default: 226 | #if DEBUG 227 | println("tap occured") 228 | #endif 229 | break 230 | } 231 | } 232 | 233 | deinit { 234 | if let link = displayLink { 235 | link.invalidate() 236 | } 237 | } 238 | } 239 | 240 | extension LoadingImageView : NSURLSessionDownloadDelegate { 241 | 242 | public func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) { 243 | dispatch_async(dispatch_get_main_queue()) { 244 | if let err = error { 245 | println("error: \(err)") 246 | self.state = .Errored(task as! NSURLSessionDownloadTask, err) 247 | } else { 248 | self.progress = 1.0 249 | self.state = .Idle 250 | } 251 | } 252 | } 253 | 254 | public func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) { 255 | if let image = UIImage.decompressedImage(location) { 256 | dispatch_async(dispatch_get_main_queue()) { 257 | if downloadTask.state == .Canceling { 258 | return 259 | } 260 | let delay = 0.20 261 | let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))) 262 | dispatch_after(delayTime, dispatch_get_main_queue()) { 263 | self.progressLayer.hidden = true 264 | self.imageView.image = image 265 | self.invalidateIntrinsicContentSize() 266 | let fadeInAnimation = CABasicAnimation(keyPath: "opacity") 267 | fadeInAnimation.fromValue = 0.0 268 | fadeInAnimation.toValue = self.imageView.layer.opacity 269 | fadeInAnimation.duration = delay 270 | self.imageView.layer.addAnimation(fadeInAnimation, forKey: "fadeIn") 271 | } 272 | self.updateProgressLayer(forState: self.state, progress: 1.0) 273 | 274 | } 275 | } else { 276 | dispatch_async(dispatch_get_main_queue()) { 277 | let err = NSError(domain: "Invalid Image", code: 400, userInfo: nil) 278 | self.state = .Errored(downloadTask, err) 279 | } 280 | } 281 | } 282 | 283 | public func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) { 284 | dispatch_async(dispatch_get_main_queue()) { 285 | let progress:Float = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite) 286 | self.progress = progress 287 | } 288 | } 289 | } 290 | 291 | public protocol LoadingImageViewDelegate : NSObjectProtocol { 292 | func loadingImageViewStateChanged(imageView: LoadingImageView, state: LoadingImageState) 293 | func shouldAttemptRetry(imageView: LoadingImageView)->Bool 294 | func imageForReloadState(imageView: LoadingImageView)->UIImage 295 | } 296 | 297 | extension UIImage { 298 | 299 | class func decompressedImage(imageURL: NSURL)->UIImage? { 300 | if let data = NSData(contentsOfURL: imageURL) { 301 | if let image = UIImage(data: data) { 302 | UIGraphicsBeginImageContext(image.size) 303 | image.drawAtPoint(CGPointZero) 304 | let decompressedImage = UIGraphicsGetImageFromCurrentImageContext(); 305 | UIGraphicsEndImageContext(); 306 | return decompressedImage 307 | } 308 | } 309 | return nil 310 | } 311 | } --------------------------------------------------------------------------------