From aed03fb4fd7c833602467fa2083c00b58cc5bfe3 Mon Sep 17 00:00:00 2001 From: Felipe Antonio Cardoso Date: Sun, 3 Feb 2019 12:20:37 -0200 Subject: [PATCH 1/3] Update version --- UILoadControl.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UILoadControl.podspec b/UILoadControl.podspec index 9ef588f..a47b65b 100644 --- a/UILoadControl.podspec +++ b/UILoadControl.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "UILoadControl" - s.version = "2.1.0" + s.version = "2.2.0" s.summary = "Add a PushToLoad control to any UIScrollView, UICollectionView or UITableView" # This description is used to generate tags and improve search results. From 9f70b4ddaa912d9a8f4fc746b332090065d53ee1 Mon Sep 17 00:00:00 2001 From: Felipe Antonio Cardoso Date: Sun, 3 Feb 2019 12:34:47 -0200 Subject: [PATCH 2/3] Update to swift 4.2 --- .travis.yml | 8 +- Example/Podfile | 2 + Example/Podfile.lock | 16 + .../Local Podspecs/UILoadControl.podspec.json | 4 +- Example/Pods/Manifest.lock | 10 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 735 ++++++++++-------- .../Pods-UILoadControl_Example-frameworks.sh | 76 +- .../Pods-UILoadControl_Example-resources.sh | 43 +- .../Pods-UILoadControl_Example.debug.xcconfig | 9 +- ...ods-UILoadControl_Example.release.xcconfig | 9 +- .../Pods-UILoadControl_Tests-frameworks.sh | 72 +- .../Pods-UILoadControl_Tests-resources.sh | 43 +- .../Pods-UILoadControl_Tests.debug.xcconfig | 9 +- .../Pods-UILoadControl_Tests.release.xcconfig | 9 +- .../UILoadControl/Info.plist | 2 +- .../UILoadControl/UILoadControl.xcconfig | 7 +- .../UILoadControl.xcodeproj/project.pbxproj | 67 +- Example/UILoadControl/AppDelegate.swift | 2 +- Pod/Classes/UILoadControl.swift | 6 +- 19 files changed, 665 insertions(+), 464 deletions(-) create mode 100644 Example/Podfile.lock diff --git a/.travis.yml b/.travis.yml index ee2f101..9272cc7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,13 +3,13 @@ # * https://github.com/supermarin/xcpretty#usage language: objective-c -osx_image: xcode7.3 +osx_image: xcode10.1 cache: cocoapods podfile: Example/Podfile before_install: - - gem install cocoapods # Since Travis is not always on latest version - - pod install --project-directory=Example + - gem install cocoapods # Since Travis is not always on latest version + - pod install --project-directory=Example script: - - set -e && xcodebuild -workspace Example/UILoadControl.xcworkspace -scheme UILoadControl-Example -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=9.1,name=iPhone 6' ONLY_ACTIVE_ARCH=NO clean build + - set -e && xcodebuild -workspace Example/UILoadControl.xcworkspace -scheme UILoadControl-Example -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=12.1,name=iPhone 8' ONLY_ACTIVE_ARCH=NO clean build diff --git a/Example/Podfile b/Example/Podfile index 134a004..ab6b1f1 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,4 +1,6 @@ source 'https://github.com/CocoaPods/Specs.git' +platform :ios, '8.0' + use_frameworks! target 'UILoadControl_Example' do diff --git a/Example/Podfile.lock b/Example/Podfile.lock new file mode 100644 index 0000000..ca2835f --- /dev/null +++ b/Example/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - UILoadControl (2.2.0) + +DEPENDENCIES: + - UILoadControl (from `../`) + +EXTERNAL SOURCES: + UILoadControl: + :path: "../" + +SPEC CHECKSUMS: + UILoadControl: 48ed8c4b1bb94a481a56ecab2d66229a4ff30cfe + +PODFILE CHECKSUM: 2bf7feadd90cb7c3fd55d9efb926f415e9a533e6 + +COCOAPODS: 1.5.3 diff --git a/Example/Pods/Local Podspecs/UILoadControl.podspec.json b/Example/Pods/Local Podspecs/UILoadControl.podspec.json index 6bb8aee..46cd545 100644 --- a/Example/Pods/Local Podspecs/UILoadControl.podspec.json +++ b/Example/Pods/Local Podspecs/UILoadControl.podspec.json @@ -1,6 +1,6 @@ { "name": "UILoadControl", - "version": "2.1.0", + "version": "2.2.0", "summary": "Add a PushToLoad control to any UIScrollView, UICollectionView or UITableView", "description": "UILoadControl is like UIRefreshControl, but its placed at the bottom of any UIScrollView.\nThe UILoadControl can be used as a trigger to load next page of a paginated UICollectionView or UITableView.", "homepage": "https://github.com/FelipeCardoso89/UILoadControl", @@ -10,7 +10,7 @@ }, "source": { "git": "https://github.com/FelipeCardoso89/UILoadControl.git", - "tag": "2.1.0" + "tag": "2.2.0" }, "social_media_url": "https://twitter.com/FelipeCardoso89", "platforms": { diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index d75c2b1..ca2835f 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,16 +1,16 @@ PODS: - - UILoadControl (2.1.0) + - UILoadControl (2.2.0) DEPENDENCIES: - UILoadControl (from `../`) EXTERNAL SOURCES: UILoadControl: - :path: ../ + :path: "../" SPEC CHECKSUMS: - UILoadControl: 536677e39e84778a37f9acfc4a7b48419969c9d2 + UILoadControl: 48ed8c4b1bb94a481a56ecab2d66229a4ff30cfe -PODFILE CHECKSUM: 4906d2c3233e7d372a46389b45bda014a239200c +PODFILE CHECKSUM: 2bf7feadd90cb7c3fd55d9efb926f415e9a533e6 -COCOAPODS: 1.2.0.beta.3 +COCOAPODS: 1.5.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 4620f44..7cc841e 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,302 +7,309 @@ objects = { /* Begin PBXBuildFile section */ - 10C0D865D6302DF509B0FCB33882FE05 /* Pods-UILoadControl_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 611C06B15337220644BEA3D1FD27A04E /* Pods-UILoadControl_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1AA2674DE174FA32B8F16B19A60B8EB3 /* Pods-UILoadControl_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EDB9144BFC775876DEFAE4412C0EA65C /* Pods-UILoadControl_Tests-dummy.m */; }; - 29DC0E3D95612520F7A471A961F1A9EC /* Pods-UILoadControl_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BD2F43B63BD84CF58C93C6E0DC0F0048 /* Pods-UILoadControl_Example-dummy.m */; }; - 307B12C5636EA651605B8DFB406EACFF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */; }; - 370C06A0BF78120A73770FA9E4369D31 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; - 3BF68CB0507921CC46D9598BAF51A233 /* UILoadControl-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5089216A8112DF3BD531BB4F9F94A1E9 /* UILoadControl-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F8B2C28A1EF7C4E3BAD402E4E791F13 /* Pods-UILoadControl_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A83839AE3EB77A022C24B3DDCCC79228 /* Pods-UILoadControl_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 97A3587569EE8B78395B9A43FC328877 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; - 98401D0CF44D9C8ADEAB49E0D7C82B85 /* UILoadControl-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0375C6349CCC2A97FD05A160CE9BB48E /* UILoadControl-dummy.m */; }; - D7C73E4C3684C4DC17380E02B110833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; - DE02C91566ED3F0A540811397F65336C /* UILoadControl_UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7FD3C7C3F18936C1BA285AB4CD1D24 /* UILoadControl_UIScrollView.swift */; }; - DF3EBE388D4FCEB66D4124608C30265C /* UILoadControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195D1ED92B079A2259C04DDC97ABD2F3 /* UILoadControl.swift */; }; + 08847FFB9CB27EBB9143F36A1C42CE6F /* Pods-UILoadControl_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E5B873C60488493417A79DD8C100250 /* Pods-UILoadControl_Example-dummy.m */; }; + 1B5A00E3E0E04B72CC5A245A7A684288 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + 68C0F8D44CA9D6AD87233001AE8B49ED /* UILoadControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F3162673F86F2A29D3E8436BC4028A /* UILoadControl.swift */; }; + 89666303777696517F69E811CDDACE0E /* Pods-UILoadControl_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EFBE2809B5ECDBCED11BDB6BABF6C077 /* Pods-UILoadControl_Tests-dummy.m */; }; + 95A16598F603DB43C4C24236B31AA8BC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */; }; + ABDBED930A6D488D74ECA012EEBD05E1 /* Pods-UILoadControl_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F8E7BA60A2E2240F3B55D8A2E14B1191 /* Pods-UILoadControl_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9644314B9A630DF2A9ECFF837B222A8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + C725D86DEED20D17B84A5CCFA2E38604 /* UILoadControl-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3959B27AB8E9E5E6EF86035CFB3AA847 /* UILoadControl-dummy.m */; }; + D4D85AEB5A9B0A47117BE0287FB75FE3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + D78EC54E6718DAF34F025AA91F7ADCF0 /* UILoadControl-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EFF8211EE6C514D2A805C030174D6523 /* UILoadControl-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB481BD8E715E2BB4D448A47497A8E0 /* Pods-UILoadControl_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 397C76EB67C564E01AD71A7BDD983F83 /* Pods-UILoadControl_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F209C00F3638E9C6003D1030948064D4 /* UILoadControl_UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E749FFF4FE342537F6045A97F84BB50 /* UILoadControl_UIScrollView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 9614178B1BC2DEDF504E44D654628E29 /* PBXContainerItemProxy */ = { + 76B04DAC14CF62E9324FFBC91E67196E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = FBAE5BFD09EAB530CC394EBB9737DDE8; + remoteGlobalIDString = 7B52490DEEE406E5761BA0E07B0CB764; + remoteInfo = "Pods-UILoadControl_Example"; + }; + DBF180C809019EE22051172FAC4576CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F0079BE25D4402D4B2F1B1443D1CE6C8; remoteInfo = UILoadControl; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0375C6349CCC2A97FD05A160CE9BB48E /* UILoadControl-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UILoadControl-dummy.m"; sourceTree = ""; }; - 0DBED988CC319814FBDFBCFE323A3718 /* UILoadControl.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = UILoadControl.modulemap; sourceTree = ""; }; - 0E894C5DD522263710360729A860EF2E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 195D1ED92B079A2259C04DDC97ABD2F3 /* UILoadControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UILoadControl.swift; sourceTree = ""; }; - 21019CCF620888EFBADFCEC052480EE5 /* Pods-UILoadControl_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Example.debug.xcconfig"; sourceTree = ""; }; - 238E4DBF909FCD332B580CCB89D636C0 /* Pods-UILoadControl_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Example-frameworks.sh"; sourceTree = ""; }; - 29A87496D92CD2453172D1EE8B1AB9CF /* Pods-UILoadControl_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-UILoadControl_Tests-acknowledgements.plist"; sourceTree = ""; }; - 2DCE926ED348D476CBEAFFD12CB6B32F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 30C570EBF82BAACE1C35ABDB747D4569 /* Pods_UILoadControl_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_UILoadControl_Example.framework; path = "Pods-UILoadControl_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4394A09EDBD5B777AEDA26CBB721724C /* Pods-UILoadControl_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Example-resources.sh"; sourceTree = ""; }; - 5089216A8112DF3BD531BB4F9F94A1E9 /* UILoadControl-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-umbrella.h"; sourceTree = ""; }; - 611C06B15337220644BEA3D1FD27A04E /* Pods-UILoadControl_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-UILoadControl_Tests-umbrella.h"; sourceTree = ""; }; - 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 734A240478E8510E7503E1C1919E3019 /* Pods_UILoadControl_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_UILoadControl_Tests.framework; path = "Pods-UILoadControl_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7C1C918894A13A12D0C8D51E99D46A11 /* Pods-UILoadControl_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-UILoadControl_Example-acknowledgements.plist"; sourceTree = ""; }; - 7D261C878AC735D40BB9679FD4E47EE0 /* Pods-UILoadControl_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Tests-resources.sh"; sourceTree = ""; }; - 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 854B4DB97707A1E87723FC194ECB42BB /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 88E98CCC98D431CD1A9B86433461E479 /* Pods-UILoadControl_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-UILoadControl_Example.modulemap"; sourceTree = ""; }; - 8C718728CB54CC1AA79296D5D8A72229 /* Pods-UILoadControl_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Example.release.xcconfig"; sourceTree = ""; }; - 9019F4E7AD6AED10A9413A2617C82366 /* Pods-UILoadControl_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Tests.release.xcconfig"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 991C333FA4B6A6C07CE51B157008EF38 /* Pods-UILoadControl_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Tests-frameworks.sh"; sourceTree = ""; }; - 9A839FAFCAC6D15C89CFC22D87093CD1 /* Pods-UILoadControl_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Tests.debug.xcconfig"; sourceTree = ""; }; - A7B010E6F51C3DB0DBC2F9D5F0161F19 /* Pods-UILoadControl_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-UILoadControl_Tests-acknowledgements.markdown"; sourceTree = ""; }; - A83839AE3EB77A022C24B3DDCCC79228 /* Pods-UILoadControl_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-UILoadControl_Example-umbrella.h"; sourceTree = ""; }; - BB8AB0BC0EC7813F40BF330F86503C63 /* UILoadControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = UILoadControl.framework; path = UILoadControl.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BD2F43B63BD84CF58C93C6E0DC0F0048 /* Pods-UILoadControl_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-UILoadControl_Example-dummy.m"; sourceTree = ""; }; - CD244D64C6F2B4AC704725B516EA14A0 /* UILoadControl.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UILoadControl.xcconfig; sourceTree = ""; }; - D7A4EECC90A913A03E3377E5C40C963D /* Pods-UILoadControl_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-UILoadControl_Example-acknowledgements.markdown"; sourceTree = ""; }; - D9380A8E1DDD2AB4415D67B71F11A126 /* Pods-UILoadControl_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-UILoadControl_Tests.modulemap"; sourceTree = ""; }; - DE7FD3C7C3F18936C1BA285AB4CD1D24 /* UILoadControl_UIScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UILoadControl_UIScrollView.swift; sourceTree = ""; }; - EDB9144BFC775876DEFAE4412C0EA65C /* Pods-UILoadControl_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-UILoadControl_Tests-dummy.m"; sourceTree = ""; }; - FBC136129D3A6F8E9F4A624BDDD3B6D1 /* UILoadControl-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-prefix.pch"; sourceTree = ""; }; + 04E811F0BA2E26EECBED10C648E51A02 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0B5F7E9B04DD63BE1A28797165B05B5A /* Pods-UILoadControl_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Example.debug.xcconfig"; sourceTree = ""; }; + 1721C405C62110E1A76E803541F39A4C /* UILoadControl-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-prefix.pch"; sourceTree = ""; }; + 24390EFD555DD124430DFF9724065945 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 25B39C0A394294CB654E5868B50B9B8D /* Pods-UILoadControl_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Tests-frameworks.sh"; sourceTree = ""; }; + 2AF68900FF67AE421D81F2E7F87F9A3C /* Pods-UILoadControl_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-UILoadControl_Tests-acknowledgements.plist"; sourceTree = ""; }; + 3959B27AB8E9E5E6EF86035CFB3AA847 /* UILoadControl-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UILoadControl-dummy.m"; sourceTree = ""; }; + 397C76EB67C564E01AD71A7BDD983F83 /* Pods-UILoadControl_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-UILoadControl_Example-umbrella.h"; sourceTree = ""; }; + 3B11583DFC3BEA84406FB74AB738F1D9 /* Pods-UILoadControl_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-UILoadControl_Tests.modulemap"; sourceTree = ""; }; + 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 4D1FCE40B8DA8BB96AFC7973994A3164 /* UILoadControl.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = UILoadControl.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 4E5B873C60488493417A79DD8C100250 /* Pods-UILoadControl_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-UILoadControl_Example-dummy.m"; sourceTree = ""; }; + 55033BCD86A1E83561E69D2BDA9827DB /* Pods_UILoadControl_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_UILoadControl_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 61E05F6A0477AFC39E42BA7D28F4B362 /* Pods-UILoadControl_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-UILoadControl_Example-acknowledgements.markdown"; sourceTree = ""; }; + 64D82514248F634DA43F46F65A84DB3A /* Pods-UILoadControl_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Example-frameworks.sh"; sourceTree = ""; }; + 68A89CF359A9AB0466198621AFD3F7CC /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 69962CBD0AEED097397B4D4FC4A95B2A /* Pods-UILoadControl_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Example-resources.sh"; sourceTree = ""; }; + 6B3A966DFB51BC25A1FC25DE4FED8456 /* Pods-UILoadControl_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Tests.release.xcconfig"; sourceTree = ""; }; + 70662E859A148ED59EF2B5969544CC2C /* Pods-UILoadControl_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Tests.debug.xcconfig"; sourceTree = ""; }; + 7C82C38C62254E69B78425BBD25F20D5 /* UILoadControl.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = UILoadControl.modulemap; sourceTree = ""; }; + 83A42A971459F89AC52005913E438BC2 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 893B5DDA3F3BD7A39BC9B24B52C308F8 /* Pods-UILoadControl_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-UILoadControl_Example.release.xcconfig"; sourceTree = ""; }; + 8FF4C76AE25626C438D3068CF9D355FE /* Pods-UILoadControl_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-UILoadControl_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UILoadControl.xcconfig; sourceTree = ""; }; + 95F3162673F86F2A29D3E8436BC4028A /* UILoadControl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl.swift; path = Pod/Classes/UILoadControl.swift; sourceTree = ""; }; + 9D99E85D988D71D8E04A6BECF550CDB2 /* Pods-UILoadControl_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-UILoadControl_Example-acknowledgements.plist"; sourceTree = ""; }; + 9E749FFF4FE342537F6045A97F84BB50 /* UILoadControl_UIScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UILoadControl_UIScrollView.swift; path = Pod/Classes/UILoadControl_UIScrollView.swift; sourceTree = ""; }; + B203BC5B0F34BCA6415D26259D74BA6F /* Pods-UILoadControl_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-UILoadControl_Tests-resources.sh"; sourceTree = ""; }; + B3FB10F3C55B9A72F07F09F79741931E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + EFBE2809B5ECDBCED11BDB6BABF6C077 /* Pods-UILoadControl_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-UILoadControl_Tests-dummy.m"; sourceTree = ""; }; + EFF8211EE6C514D2A805C030174D6523 /* UILoadControl-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UILoadControl-umbrella.h"; sourceTree = ""; }; + F7E896796148A79E36E1B9E21465ED87 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + F85688A8148B3E7FD684ADEF8A11C8CC /* UILoadControl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = UILoadControl.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F8E7BA60A2E2240F3B55D8A2E14B1191 /* Pods-UILoadControl_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-UILoadControl_Tests-umbrella.h"; sourceTree = ""; }; + FD3A484DE4EAB16AC9FD8E40EA4CB10F /* Pods_UILoadControl_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_UILoadControl_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FE10922E42D12FC526DAE881431254EA /* Pods-UILoadControl_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-UILoadControl_Example.modulemap"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1D5CFFBD534505F514965F64019B42DA /* Frameworks */ = { + 49E992AFB569FB691E2E9AC94EFA931D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 370C06A0BF78120A73770FA9E4369D31 /* Foundation.framework in Frameworks */, + D4D85AEB5A9B0A47117BE0287FB75FE3 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9A34E1296F69BEEC5CFD83A848B04B72 /* Frameworks */ = { + A74F1468820D8330052CD3857CFE05F6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 97A3587569EE8B78395B9A43FC328877 /* Foundation.framework in Frameworks */, - 307B12C5636EA651605B8DFB406EACFF /* UIKit.framework in Frameworks */, + 1B5A00E3E0E04B72CC5A245A7A684288 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D9F766A14D072612561D35F150ABA28B /* Frameworks */ = { + AAD4989CEE172CC55057F2ACE5A0D271 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D7C73E4C3684C4DC17380E02B110833B /* Foundation.framework in Frameworks */, + B9644314B9A630DF2A9ECFF837B222A8 /* Foundation.framework in Frameworks */, + 95A16598F603DB43C4C24236B31AA8BC /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1286F64DD2D948E464B8F494AB2ECB22 /* Pod */ = { + 109C0969E558B98FB3E75C8973FCAD65 /* Support Files */ = { isa = PBXGroup; children = ( - F95CCBE8090AC21B5A0B3BC2790B3B55 /* Classes */, + 04E811F0BA2E26EECBED10C648E51A02 /* Info.plist */, + 7C82C38C62254E69B78425BBD25F20D5 /* UILoadControl.modulemap */, + 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */, + 3959B27AB8E9E5E6EF86035CFB3AA847 /* UILoadControl-dummy.m */, + 1721C405C62110E1A76E803541F39A4C /* UILoadControl-prefix.pch */, + EFF8211EE6C514D2A805C030174D6523 /* UILoadControl-umbrella.h */, ); - name = Pod; - path = Pod; + name = "Support Files"; + path = "Example/Pods/Target Support Files/UILoadControl"; sourceTree = ""; }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - E6EE98446B568159EE277B68FD442AF0 /* iOS */, + E169A450ED27AC725DF52953F66D11E0 /* iOS */, ); name = Frameworks; sourceTree = ""; }; - 4D8454BE3EDF96780655AE60CCA96E7C /* Pods-UILoadControl_Tests */ = { - isa = PBXGroup; - children = ( - 854B4DB97707A1E87723FC194ECB42BB /* Info.plist */, - D9380A8E1DDD2AB4415D67B71F11A126 /* Pods-UILoadControl_Tests.modulemap */, - A7B010E6F51C3DB0DBC2F9D5F0161F19 /* Pods-UILoadControl_Tests-acknowledgements.markdown */, - 29A87496D92CD2453172D1EE8B1AB9CF /* Pods-UILoadControl_Tests-acknowledgements.plist */, - EDB9144BFC775876DEFAE4412C0EA65C /* Pods-UILoadControl_Tests-dummy.m */, - 991C333FA4B6A6C07CE51B157008EF38 /* Pods-UILoadControl_Tests-frameworks.sh */, - 7D261C878AC735D40BB9679FD4E47EE0 /* Pods-UILoadControl_Tests-resources.sh */, - 611C06B15337220644BEA3D1FD27A04E /* Pods-UILoadControl_Tests-umbrella.h */, - 9A839FAFCAC6D15C89CFC22D87093CD1 /* Pods-UILoadControl_Tests.debug.xcconfig */, - 9019F4E7AD6AED10A9413A2617C82366 /* Pods-UILoadControl_Tests.release.xcconfig */, - ); - name = "Pods-UILoadControl_Tests"; - path = "Target Support Files/Pods-UILoadControl_Tests"; - sourceTree = ""; - }; - 6102CE81BF42CF7D24FB8914919484AD /* Targets Support Files */ = { + 3C829CA0AB419845A0FB24AF803B3900 /* Targets Support Files */ = { isa = PBXGroup; children = ( - EF1E570A72554A409FF90A74E06EC8E7 /* Pods-UILoadControl_Example */, - 4D8454BE3EDF96780655AE60CCA96E7C /* Pods-UILoadControl_Tests */, + 46D8C5AA8EB2FCBBABF84B6C51A8D445 /* Pods-UILoadControl_Example */, + 8E521D2ECB165547E46B8E2726D60048 /* Pods-UILoadControl_Tests */, ); name = "Targets Support Files"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 46D8C5AA8EB2FCBBABF84B6C51A8D445 /* Pods-UILoadControl_Example */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - A2528C0D98E813B968998528877D6D99 /* Development Pods */, - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - E005A0283571B010BCF77C1A4E379F85 /* Products */, - 6102CE81BF42CF7D24FB8914919484AD /* Targets Support Files */, + 83A42A971459F89AC52005913E438BC2 /* Info.plist */, + FE10922E42D12FC526DAE881431254EA /* Pods-UILoadControl_Example.modulemap */, + 61E05F6A0477AFC39E42BA7D28F4B362 /* Pods-UILoadControl_Example-acknowledgements.markdown */, + 9D99E85D988D71D8E04A6BECF550CDB2 /* Pods-UILoadControl_Example-acknowledgements.plist */, + 4E5B873C60488493417A79DD8C100250 /* Pods-UILoadControl_Example-dummy.m */, + 64D82514248F634DA43F46F65A84DB3A /* Pods-UILoadControl_Example-frameworks.sh */, + 69962CBD0AEED097397B4D4FC4A95B2A /* Pods-UILoadControl_Example-resources.sh */, + 397C76EB67C564E01AD71A7BDD983F83 /* Pods-UILoadControl_Example-umbrella.h */, + 0B5F7E9B04DD63BE1A28797165B05B5A /* Pods-UILoadControl_Example.debug.xcconfig */, + 893B5DDA3F3BD7A39BC9B24B52C308F8 /* Pods-UILoadControl_Example.release.xcconfig */, ); + name = "Pods-UILoadControl_Example"; + path = "Target Support Files/Pods-UILoadControl_Example"; sourceTree = ""; }; - 85A7FAE36A577119D8D349315EF4B1CE /* Support Files */ = { + 5BCC24E0F029205171C19A38A01397DB /* Pod */ = { isa = PBXGroup; children = ( - 2DCE926ED348D476CBEAFFD12CB6B32F /* Info.plist */, - 0DBED988CC319814FBDFBCFE323A3718 /* UILoadControl.modulemap */, - CD244D64C6F2B4AC704725B516EA14A0 /* UILoadControl.xcconfig */, - 0375C6349CCC2A97FD05A160CE9BB48E /* UILoadControl-dummy.m */, - FBC136129D3A6F8E9F4A624BDDD3B6D1 /* UILoadControl-prefix.pch */, - 5089216A8112DF3BD531BB4F9F94A1E9 /* UILoadControl-umbrella.h */, + B3FB10F3C55B9A72F07F09F79741931E /* LICENSE */, + 68A89CF359A9AB0466198621AFD3F7CC /* README.md */, + 4D1FCE40B8DA8BB96AFC7973994A3164 /* UILoadControl.podspec */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/UILoadControl"; + name = Pod; sourceTree = ""; }; - 9298AED95AAA2413732F32F523E7C409 /* UILoadControl */ = { + 8E521D2ECB165547E46B8E2726D60048 /* Pods-UILoadControl_Tests */ = { isa = PBXGroup; children = ( - 1286F64DD2D948E464B8F494AB2ECB22 /* Pod */, - 85A7FAE36A577119D8D349315EF4B1CE /* Support Files */, + F7E896796148A79E36E1B9E21465ED87 /* Info.plist */, + 3B11583DFC3BEA84406FB74AB738F1D9 /* Pods-UILoadControl_Tests.modulemap */, + 8FF4C76AE25626C438D3068CF9D355FE /* Pods-UILoadControl_Tests-acknowledgements.markdown */, + 2AF68900FF67AE421D81F2E7F87F9A3C /* Pods-UILoadControl_Tests-acknowledgements.plist */, + EFBE2809B5ECDBCED11BDB6BABF6C077 /* Pods-UILoadControl_Tests-dummy.m */, + 25B39C0A394294CB654E5868B50B9B8D /* Pods-UILoadControl_Tests-frameworks.sh */, + B203BC5B0F34BCA6415D26259D74BA6F /* Pods-UILoadControl_Tests-resources.sh */, + F8E7BA60A2E2240F3B55D8A2E14B1191 /* Pods-UILoadControl_Tests-umbrella.h */, + 70662E859A148ED59EF2B5969544CC2C /* Pods-UILoadControl_Tests.debug.xcconfig */, + 6B3A966DFB51BC25A1FC25DE4FED8456 /* Pods-UILoadControl_Tests.release.xcconfig */, ); - name = UILoadControl; - path = ../..; + name = "Pods-UILoadControl_Tests"; + path = "Target Support Files/Pods-UILoadControl_Tests"; sourceTree = ""; }; - A2528C0D98E813B968998528877D6D99 /* Development Pods */ = { + 93390BB89CAE8F4D05D94D74775EDA1E /* Development Pods */ = { isa = PBXGroup; children = ( - 9298AED95AAA2413732F32F523E7C409 /* UILoadControl */, + E7B3A3998C538998A7F09F5B4099A71E /* UILoadControl */, ); name = "Development Pods"; sourceTree = ""; }; - E005A0283571B010BCF77C1A4E379F85 /* Products */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 30C570EBF82BAACE1C35ABDB747D4569 /* Pods_UILoadControl_Example.framework */, - 734A240478E8510E7503E1C1919E3019 /* Pods_UILoadControl_Tests.framework */, - BB8AB0BC0EC7813F40BF330F86503C63 /* UILoadControl.framework */, + 24390EFD555DD124430DFF9724065945 /* Podfile */, + 93390BB89CAE8F4D05D94D74775EDA1E /* Development Pods */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + EFBE2BB5E6499636AEF13D7484184A32 /* Products */, + 3C829CA0AB419845A0FB24AF803B3900 /* Targets Support Files */, ); - name = Products; sourceTree = ""; }; - E6EE98446B568159EE277B68FD442AF0 /* iOS */ = { + E169A450ED27AC725DF52953F66D11E0 /* iOS */ = { isa = PBXGroup; children = ( - 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */, - 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */, + 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */, + ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */, ); name = iOS; sourceTree = ""; }; - EF1E570A72554A409FF90A74E06EC8E7 /* Pods-UILoadControl_Example */ = { + E7B3A3998C538998A7F09F5B4099A71E /* UILoadControl */ = { isa = PBXGroup; children = ( - 0E894C5DD522263710360729A860EF2E /* Info.plist */, - 88E98CCC98D431CD1A9B86433461E479 /* Pods-UILoadControl_Example.modulemap */, - D7A4EECC90A913A03E3377E5C40C963D /* Pods-UILoadControl_Example-acknowledgements.markdown */, - 7C1C918894A13A12D0C8D51E99D46A11 /* Pods-UILoadControl_Example-acknowledgements.plist */, - BD2F43B63BD84CF58C93C6E0DC0F0048 /* Pods-UILoadControl_Example-dummy.m */, - 238E4DBF909FCD332B580CCB89D636C0 /* Pods-UILoadControl_Example-frameworks.sh */, - 4394A09EDBD5B777AEDA26CBB721724C /* Pods-UILoadControl_Example-resources.sh */, - A83839AE3EB77A022C24B3DDCCC79228 /* Pods-UILoadControl_Example-umbrella.h */, - 21019CCF620888EFBADFCEC052480EE5 /* Pods-UILoadControl_Example.debug.xcconfig */, - 8C718728CB54CC1AA79296D5D8A72229 /* Pods-UILoadControl_Example.release.xcconfig */, + 95F3162673F86F2A29D3E8436BC4028A /* UILoadControl.swift */, + 9E749FFF4FE342537F6045A97F84BB50 /* UILoadControl_UIScrollView.swift */, + 5BCC24E0F029205171C19A38A01397DB /* Pod */, + 109C0969E558B98FB3E75C8973FCAD65 /* Support Files */, ); - name = "Pods-UILoadControl_Example"; - path = "Target Support Files/Pods-UILoadControl_Example"; + name = UILoadControl; + path = ../..; sourceTree = ""; }; - F95CCBE8090AC21B5A0B3BC2790B3B55 /* Classes */ = { + EFBE2BB5E6499636AEF13D7484184A32 /* Products */ = { isa = PBXGroup; children = ( - 195D1ED92B079A2259C04DDC97ABD2F3 /* UILoadControl.swift */, - DE7FD3C7C3F18936C1BA285AB4CD1D24 /* UILoadControl_UIScrollView.swift */, + 55033BCD86A1E83561E69D2BDA9827DB /* Pods_UILoadControl_Example.framework */, + FD3A484DE4EAB16AC9FD8E40EA4CB10F /* Pods_UILoadControl_Tests.framework */, + F85688A8148B3E7FD684ADEF8A11C8CC /* UILoadControl.framework */, ); - name = Classes; - path = Classes; + name = Products; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 2152497526EE558F3E497FBA13912C36 /* Headers */ = { + 3851879E0091947446D2E695011D8C9C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7F8B2C28A1EF7C4E3BAD402E4E791F13 /* Pods-UILoadControl_Example-umbrella.h in Headers */, + EDB481BD8E715E2BB4D448A47497A8E0 /* Pods-UILoadControl_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5D81673CBA468A1059A032275D5B693B /* Headers */ = { + 9E8014DCC605BD87BB850DDD4A920CFF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 3BF68CB0507921CC46D9598BAF51A233 /* UILoadControl-umbrella.h in Headers */, + D78EC54E6718DAF34F025AA91F7ADCF0 /* UILoadControl-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EEDDE1FB509E78C55024AFFEE1B6AE08 /* Headers */ = { + AAECE64781C1871299EDDB2AC2139FF6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 10C0D865D6302DF509B0FCB33882FE05 /* Pods-UILoadControl_Tests-umbrella.h in Headers */, + ABDBED930A6D488D74ECA012EEBD05E1 /* Pods-UILoadControl_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 05E510919ACBA847D215DE69BC4C4A43 /* Pods-UILoadControl_Tests */ = { + 4D2E138C49D283DE0F2123FDBC8C8A73 /* Pods-UILoadControl_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = F264D7402AB75214967B0FBD4A8979AD /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Tests" */; + buildConfigurationList = E136E3E06F2FF417DA27A282F996B770 /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Tests" */; buildPhases = ( - C89FB2218C6FD62C50C800A36C53C896 /* Sources */, - D9F766A14D072612561D35F150ABA28B /* Frameworks */, - EEDDE1FB509E78C55024AFFEE1B6AE08 /* Headers */, + AAECE64781C1871299EDDB2AC2139FF6 /* Headers */, + 44CBC5700A70CD0A4FB203331B6C3323 /* Sources */, + A74F1468820D8330052CD3857CFE05F6 /* Frameworks */, + 986DBF54F3DF4AB2E9813623F93B01C8 /* Resources */, ); buildRules = ( ); dependencies = ( + 43EAA64F28B46B9A69428B7994F2ADF3 /* PBXTargetDependency */, ); name = "Pods-UILoadControl_Tests"; productName = "Pods-UILoadControl_Tests"; - productReference = 734A240478E8510E7503E1C1919E3019 /* Pods_UILoadControl_Tests.framework */; + productReference = FD3A484DE4EAB16AC9FD8E40EA4CB10F /* Pods_UILoadControl_Tests.framework */; productType = "com.apple.product-type.framework"; }; - 136EEEE0B78FC84223111536AEE2A634 /* Pods-UILoadControl_Example */ = { + 7B52490DEEE406E5761BA0E07B0CB764 /* Pods-UILoadControl_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 4C6D471BB0CE4D0FBD164D080C79F9BB /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Example" */; + buildConfigurationList = 5769C52DE6598420AD056AE1678FA32F /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Example" */; buildPhases = ( - 1C45D876EE93FB6981872EB8C2D7EA96 /* Sources */, - 1D5CFFBD534505F514965F64019B42DA /* Frameworks */, - 2152497526EE558F3E497FBA13912C36 /* Headers */, + 3851879E0091947446D2E695011D8C9C /* Headers */, + 648BC8651784494CF3C921BECD085759 /* Sources */, + 49E992AFB569FB691E2E9AC94EFA931D /* Frameworks */, + 47C46B31B3658066C74144AAAFA593B6 /* Resources */, ); buildRules = ( ); dependencies = ( - 551E495AC667803D0A7F1CFBE1B14E2B /* PBXTargetDependency */, + FF8D88FC8B08219910F249F839688092 /* PBXTargetDependency */, ); name = "Pods-UILoadControl_Example"; productName = "Pods-UILoadControl_Example"; - productReference = 30C570EBF82BAACE1C35ABDB747D4569 /* Pods_UILoadControl_Example.framework */; + productReference = 55033BCD86A1E83561E69D2BDA9827DB /* Pods_UILoadControl_Example.framework */; productType = "com.apple.product-type.framework"; }; - FBAE5BFD09EAB530CC394EBB9737DDE8 /* UILoadControl */ = { + F0079BE25D4402D4B2F1B1443D1CE6C8 /* UILoadControl */ = { isa = PBXNativeTarget; - buildConfigurationList = 7705D5069133533D1DFD347ADF8D8E20 /* Build configuration list for PBXNativeTarget "UILoadControl" */; + buildConfigurationList = DB767A5B1744C498EAB6DC6147C3D7F1 /* Build configuration list for PBXNativeTarget "UILoadControl" */; buildPhases = ( - D2DF14B47B92E91E4478D375B6B9E9FB /* Sources */, - 9A34E1296F69BEEC5CFD83A848B04B72 /* Frameworks */, - 5D81673CBA468A1059A032275D5B693B /* Headers */, + 9E8014DCC605BD87BB850DDD4A920CFF /* Headers */, + 05ABF097142BC226726F70113E56DE93 /* Sources */, + AAD4989CEE172CC55057F2ACE5A0D271 /* Frameworks */, + 946F3AE6B3B10C3C4170898D361C9736 /* Resources */, ); buildRules = ( ); @@ -310,406 +317,470 @@ ); name = UILoadControl; productName = UILoadControl; - productReference = BB8AB0BC0EC7813F40BF330F86503C63 /* UILoadControl.framework */; + productReference = F85688A8148B3E7FD684ADEF8A11C8CC /* UILoadControl.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = E005A0283571B010BCF77C1A4E379F85 /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = EFBE2BB5E6499636AEF13D7484184A32 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 136EEEE0B78FC84223111536AEE2A634 /* Pods-UILoadControl_Example */, - 05E510919ACBA847D215DE69BC4C4A43 /* Pods-UILoadControl_Tests */, - FBAE5BFD09EAB530CC394EBB9737DDE8 /* UILoadControl */, + 7B52490DEEE406E5761BA0E07B0CB764 /* Pods-UILoadControl_Example */, + 4D2E138C49D283DE0F2123FDBC8C8A73 /* Pods-UILoadControl_Tests */, + F0079BE25D4402D4B2F1B1443D1CE6C8 /* UILoadControl */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 47C46B31B3658066C74144AAAFA593B6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 946F3AE6B3B10C3C4170898D361C9736 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 986DBF54F3DF4AB2E9813623F93B01C8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 1C45D876EE93FB6981872EB8C2D7EA96 /* Sources */ = { + 05ABF097142BC226726F70113E56DE93 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 29DC0E3D95612520F7A471A961F1A9EC /* Pods-UILoadControl_Example-dummy.m in Sources */, + C725D86DEED20D17B84A5CCFA2E38604 /* UILoadControl-dummy.m in Sources */, + 68C0F8D44CA9D6AD87233001AE8B49ED /* UILoadControl.swift in Sources */, + F209C00F3638E9C6003D1030948064D4 /* UILoadControl_UIScrollView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C89FB2218C6FD62C50C800A36C53C896 /* Sources */ = { + 44CBC5700A70CD0A4FB203331B6C3323 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1AA2674DE174FA32B8F16B19A60B8EB3 /* Pods-UILoadControl_Tests-dummy.m in Sources */, + 89666303777696517F69E811CDDACE0E /* Pods-UILoadControl_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D2DF14B47B92E91E4478D375B6B9E9FB /* Sources */ = { + 648BC8651784494CF3C921BECD085759 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 98401D0CF44D9C8ADEAB49E0D7C82B85 /* UILoadControl-dummy.m in Sources */, - DF3EBE388D4FCEB66D4124608C30265C /* UILoadControl.swift in Sources */, - DE02C91566ED3F0A540811397F65336C /* UILoadControl_UIScrollView.swift in Sources */, + 08847FFB9CB27EBB9143F36A1C42CE6F /* Pods-UILoadControl_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 551E495AC667803D0A7F1CFBE1B14E2B /* PBXTargetDependency */ = { + 43EAA64F28B46B9A69428B7994F2ADF3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-UILoadControl_Example"; + target = 7B52490DEEE406E5761BA0E07B0CB764 /* Pods-UILoadControl_Example */; + targetProxy = 76B04DAC14CF62E9324FFBC91E67196E /* PBXContainerItemProxy */; + }; + FF8D88FC8B08219910F249F839688092 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UILoadControl; - target = FBAE5BFD09EAB530CC394EBB9737DDE8 /* UILoadControl */; - targetProxy = 9614178B1BC2DEDF504E44D654628E29 /* PBXContainerItemProxy */; + target = F0079BE25D4402D4B2F1B1443D1CE6C8 /* UILoadControl */; + targetProxy = DBF180C809019EE22051172FAC4576CB /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { + 4FB248FF6686A338B4C7BE2FA9B3388A /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 70662E859A148ED59EF2B5969544CC2C /* Pods-UILoadControl_Tests.debug.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 49D176DE6F16AE8DAAB480A878156B5B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9019F4E7AD6AED10A9413A2617C82366 /* Pods-UILoadControl_Tests.release.xcconfig */; - buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-UILoadControl_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_UILoadControl_Tests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 5344808575F57ACE70BEFCBD00FB978D /* Debug */ = { + 5047397DA2BAF09312489803B611BB93 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9A839FAFCAC6D15C89CFC22D87093CD1 /* Pods-UILoadControl_Tests.debug.xcconfig */; + baseConfigurationReference = 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-UILoadControl_Tests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/UILoadControl/UILoadControl-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/UILoadControl/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_UILoadControl_Tests; + MODULEMAP_FILE = "Target Support Files/UILoadControl/UILoadControl.modulemap"; + PRODUCT_MODULE_NAME = UILoadControl; + PRODUCT_NAME = UILoadControl; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 6CF8032BBE842311FBD26A742A4C1663 /* Debug */ = { + 5EA5006381E12BC9AA7DEEBC8BCE4905 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CD244D64C6F2B4AC704725B516EA14A0 /* UILoadControl.xcconfig */; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + AB93AA242429B19CBE5C8DB3F1BB4C48 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/UILoadControl/UILoadControl-prefix.pch"; INFOPLIST_FILE = "Target Support Files/UILoadControl/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/UILoadControl/UILoadControl.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_MODULE_NAME = UILoadControl; PRODUCT_NAME = UILoadControl; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 8363CDCC6D9E25A0C90E511FAB2DCA64 /* Debug */ = { + B64E2C722A3EAD054D380F489370F012 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 21019CCF620888EFBADFCEC052480EE5 /* Pods-UILoadControl_Example.debug.xcconfig */; buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + CC79581823C925349342A816CAA239C3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 893B5DDA3F3BD7A39BC9B24B52C308F8 /* Pods-UILoadControl_Example.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-UILoadControl_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_UILoadControl_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - B5945F5FB543575C24433887812F5E30 /* Release */ = { + D27950BC366AF3ECBFD13003BD818E00 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CD244D64C6F2B4AC704725B516EA14A0 /* UILoadControl.xcconfig */; + baseConfigurationReference = 6B3A966DFB51BC25A1FC25DE4FED8456 /* Pods-UILoadControl_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/UILoadControl/UILoadControl-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/UILoadControl/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-UILoadControl_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/UILoadControl/UILoadControl.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = UILoadControl; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - EA95781C5BA1F870512643A9ADD228A9 /* Release */ = { + FB7675C014C5756824935104E3D9E731 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C718728CB54CC1AA79296D5D8A72229 /* Pods-UILoadControl_Example.release.xcconfig */; + baseConfigurationReference = 0B5F7E9B04DD63BE1A28797165B05B5A /* Pods-UILoadControl_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-UILoadControl_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_UILoadControl_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, + B64E2C722A3EAD054D380F489370F012 /* Debug */, + 5EA5006381E12BC9AA7DEEBC8BCE4905 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4C6D471BB0CE4D0FBD164D080C79F9BB /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Example" */ = { + 5769C52DE6598420AD056AE1678FA32F /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8363CDCC6D9E25A0C90E511FAB2DCA64 /* Debug */, - EA95781C5BA1F870512643A9ADD228A9 /* Release */, + FB7675C014C5756824935104E3D9E731 /* Debug */, + CC79581823C925349342A816CAA239C3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7705D5069133533D1DFD347ADF8D8E20 /* Build configuration list for PBXNativeTarget "UILoadControl" */ = { + DB767A5B1744C498EAB6DC6147C3D7F1 /* Build configuration list for PBXNativeTarget "UILoadControl" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6CF8032BBE842311FBD26A742A4C1663 /* Debug */, - B5945F5FB543575C24433887812F5E30 /* Release */, + AB93AA242429B19CBE5C8DB3F1BB4C48 /* Debug */, + 5047397DA2BAF09312489803B611BB93 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F264D7402AB75214967B0FBD4A8979AD /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Tests" */ = { + E136E3E06F2FF417DA27A282F996B770 /* Build configuration list for PBXNativeTarget "Pods-UILoadControl_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5344808575F57ACE70BEFCBD00FB978D /* Debug */, - 49D176DE6F16AE8DAAB480A878156B5B /* Release */, + 4FB248FF6686A338B4C7BE2FA9B3388A /* Debug */, + D27950BC366AF3ECBFD13003BD818E00 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh index a4c934b..f6ba9b2 100755 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh @@ -1,11 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +40,9 @@ install_framework() source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,12 +71,40 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" @@ -72,11 +117,19 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -85,14 +138,15 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/UILoadControl/UILoadControl.framework" + install_framework "${BUILT_PRODUCTS_DIR}/UILoadControl/UILoadControl.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/UILoadControl/UILoadControl.framework" + install_framework "${BUILT_PRODUCTS_DIR}/UILoadControl/UILoadControl.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-resources.sh b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-resources.sh index 4602c68..345301f 100755 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-resources.sh +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -8,7 +16,11 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() -case "${TARGETED_DEVICE_FAMILY}" in +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -21,6 +33,9 @@ case "${TARGETED_DEVICE_FAMILY}" in 3) TARGET_DEVICE_ARGS="--target-device tv" ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -41,29 +56,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - 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}" + 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}" || true 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} ;; *.xib) - 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} ${TARGET_DEVICE_ARGS}" + 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} ${TARGET_DEVICE_ARGS}" || true 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}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -71,7 +86,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac @@ -85,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -95,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - 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}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + 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}" + else + 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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi fi diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.debug.xcconfig index a69152e..1a9afd2 100644 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.debug.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl/UILoadControl.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "UILoadControl" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.release.xcconfig index a69152e..1a9afd2 100644 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example.release.xcconfig @@ -1,10 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl/UILoadControl.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "UILoadControl" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-frameworks.sh index 0f29f13..08e3eaa 100755 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-frameworks.sh @@ -1,11 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +40,9 @@ install_framework() source="$(readlink "${source}")" fi - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,12 +71,40 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" @@ -72,11 +117,19 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -85,6 +138,7 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-resources.sh index 4602c68..345301f 100755 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-resources.sh +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -8,7 +16,11 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() -case "${TARGETED_DEVICE_FAMILY}" in +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -21,6 +33,9 @@ case "${TARGETED_DEVICE_FAMILY}" in 3) TARGET_DEVICE_ARGS="--target-device tv" ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -41,29 +56,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - 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}" + 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}" || true 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} ;; *.xib) - 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} ${TARGET_DEVICE_ARGS}" + 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} ${TARGET_DEVICE_ARGS}" || true 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}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -71,7 +86,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac @@ -85,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -95,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - 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}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + 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}" + else + 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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi fi diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.debug.xcconfig index 7afc3c6..f184e63 100644 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.debug.xcconfig @@ -1,7 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl/UILoadControl.framework/Headers" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.release.xcconfig index 7afc3c6..f184e63 100644 --- a/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests.release.xcconfig @@ -1,7 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/UILoadControl/UILoadControl.framework/Headers" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl/UILoadControl.framework/Headers" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/UILoadControl/Info.plist b/Example/Pods/Target Support Files/UILoadControl/Info.plist index 7f71fff..c054f9c 100644 --- a/Example/Pods/Target Support Files/UILoadControl/Info.plist +++ b/Example/Pods/Target Support Files/UILoadControl/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1.0 + 2.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/UILoadControl/UILoadControl.xcconfig b/Example/Pods/Target Support Files/UILoadControl/UILoadControl.xcconfig index 264a90c..f340283 100644 --- a/Example/Pods/Target Support Files/UILoadControl/UILoadControl.xcconfig +++ b/Example/Pods/Target Support Files/UILoadControl/UILoadControl.xcconfig @@ -1,10 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/UILoadControl +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/UILoadControl GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/UILoadControl.xcodeproj/project.pbxproj b/Example/UILoadControl.xcodeproj/project.pbxproj index bac5196..d5d9a1c 100644 --- a/Example/UILoadControl.xcodeproj/project.pbxproj +++ b/Example/UILoadControl.xcodeproj/project.pbxproj @@ -215,8 +215,6 @@ 15EDE1971CC298060051895A /* Sources */, 15EDE1981CC298060051895A /* Frameworks */, 15EDE1991CC298060051895A /* Resources */, - FF1F55A555D7D21CAD85FD15 /* [CP] Embed Pods Frameworks */, - AED8C6FBBD70FE0654956F72 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -237,7 +235,6 @@ 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, 5B2F42756A4F2EF6B9515B1D /* [CP] Embed Pods Frameworks */, - 6ADFB66E8867A8AFAE8C8528 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -315,13 +312,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-UILoadControl_Example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; 5B2F42756A4F2EF6B9515B1D /* [CP] Embed Pods Frameworks */ = { @@ -330,73 +330,34 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/UILoadControl/UILoadControl.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/UILoadControl.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6ADFB66E8867A8AFAE8C8528 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-UILoadControl_Example/Pods-UILoadControl_Example-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - AED8C6FBBD70FE0654956F72 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; B9C398D506EA231AF4A81092 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-UILoadControl_Tests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - FF1F55A555D7D21CAD85FD15 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-UILoadControl_Tests/Pods-UILoadControl_Tests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -531,6 +492,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -570,6 +532,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; VALIDATE_PRODUCT = YES; }; name = Release; @@ -586,7 +549,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -602,7 +565,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/Example/UILoadControl/AppDelegate.swift b/Example/UILoadControl/AppDelegate.swift index 1b76fc4..7860650 100644 --- a/Example/UILoadControl/AppDelegate.swift +++ b/Example/UILoadControl/AppDelegate.swift @@ -13,7 +13,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { + private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { return true } diff --git a/Pod/Classes/UILoadControl.swift b/Pod/Classes/UILoadControl.swift index fb0b5ce..bf757b4 100644 --- a/Pod/Classes/UILoadControl.swift +++ b/Pod/Classes/UILoadControl.swift @@ -25,7 +25,7 @@ public class UILoadControl: UIControl { override public var frame: CGRect { didSet{ if (frame.size.height > heightLimit) && !loading { - self.sendActions(for: UIControlEvents.valueChanged) + self.sendActions(for: UIControl.Event.valueChanged) } } } @@ -145,13 +145,13 @@ extension UILoadControl { return } - self.activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray) + self.activityIndicatorView = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray) self.activityIndicatorView.hidesWhenStopped = false self.activityIndicatorView.color = UIColor.darkGray self.activityIndicatorView.transform = CGAffineTransform(scaleX: 1.4, y: 1.4) addSubview(self.activityIndicatorView) - bringSubview(toFront: self.activityIndicatorView) + bringSubviewToFront(self.activityIndicatorView) } @objc fileprivate func didValueChange(sender: AnyObject?){ From e11668611182487a750ed7c8778ffa8df2480dcb Mon Sep 17 00:00:00 2001 From: Felipe Antonio Cardoso Date: Sun, 3 Feb 2019 17:11:28 -0200 Subject: [PATCH 3/3] minor changes --- Example/Pods/Pods.xcodeproj/project.pbxproj | 86 ++++++++++-------- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ Pod/Classes/Object+Extensions.swift | 32 +++++++ Pod/Classes/UILoadControl.swift | 87 ++++++++++--------- Pod/Classes/UILoadControl_UIScrollView.swift | 2 + 5 files changed, 140 insertions(+), 75 deletions(-) create mode 100644 Example/UILoadControl.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Pod/Classes/Object+Extensions.swift diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 7cc841e..3cf748f 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 08847FFB9CB27EBB9143F36A1C42CE6F /* Pods-UILoadControl_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E5B873C60488493417A79DD8C100250 /* Pods-UILoadControl_Example-dummy.m */; }; 1B5A00E3E0E04B72CC5A245A7A684288 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */; }; + 3E06EC192207646600D8E065 /* Object+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E06EC182207646600D8E065 /* Object+Extensions.swift */; }; 68C0F8D44CA9D6AD87233001AE8B49ED /* UILoadControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F3162673F86F2A29D3E8436BC4028A /* UILoadControl.swift */; }; 89666303777696517F69E811CDDACE0E /* Pods-UILoadControl_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EFBE2809B5ECDBCED11BDB6BABF6C077 /* Pods-UILoadControl_Tests-dummy.m */; }; 95A16598F603DB43C4C24236B31AA8BC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF2A2B0720AE923C22BED3192888BE0 /* UIKit.framework */; }; @@ -48,6 +49,7 @@ 3959B27AB8E9E5E6EF86035CFB3AA847 /* UILoadControl-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UILoadControl-dummy.m"; sourceTree = ""; }; 397C76EB67C564E01AD71A7BDD983F83 /* Pods-UILoadControl_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-UILoadControl_Example-umbrella.h"; sourceTree = ""; }; 3B11583DFC3BEA84406FB74AB738F1D9 /* Pods-UILoadControl_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-UILoadControl_Tests.modulemap"; sourceTree = ""; }; + 3E06EC182207646600D8E065 /* Object+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Object+Extensions.swift"; path = "Pod/Classes/Object+Extensions.swift"; sourceTree = ""; }; 40CB39E715FBCDAA142E6513E126200A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 4D1FCE40B8DA8BB96AFC7973994A3164 /* UILoadControl.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = UILoadControl.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 4E5B873C60488493417A79DD8C100250 /* Pods-UILoadControl_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-UILoadControl_Example-dummy.m"; sourceTree = ""; }; @@ -217,6 +219,7 @@ children = ( 95F3162673F86F2A29D3E8436BC4028A /* UILoadControl.swift */, 9E749FFF4FE342537F6045A97F84BB50 /* UILoadControl_UIScrollView.swift */, + 3E06EC182207646600D8E065 /* Object+Extensions.swift */, 5BCC24E0F029205171C19A38A01397DB /* Pod */, 109C0969E558B98FB3E75C8973FCAD65 /* Support Files */, ); @@ -328,6 +331,11 @@ attributes = { LastSwiftUpdateCheck = 0930; LastUpgradeCheck = 0930; + TargetAttributes = { + 7B52490DEEE406E5761BA0E07B0CB764 = { + LastSwiftMigration = 1010; + }; + }; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -377,6 +385,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3E06EC192207646600D8E065 /* Object+Extensions.swift in Sources */, C725D86DEED20D17B84A5CCFA2E38604 /* UILoadControl-dummy.m in Sources */, 68C0F8D44CA9D6AD87233001AE8B49ED /* UILoadControl.swift in Sources */, F209C00F3638E9C6003D1030948064D4 /* UILoadControl_UIScrollView.swift in Sources */, @@ -450,38 +459,6 @@ }; name = Debug; }; - 5047397DA2BAF09312489803B611BB93 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/UILoadControl/UILoadControl-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/UILoadControl/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/UILoadControl/UILoadControl.modulemap"; - PRODUCT_MODULE_NAME = UILoadControl; - PRODUCT_NAME = UILoadControl; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 5EA5006381E12BC9AA7DEEBC8BCE4905 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -543,7 +520,7 @@ }; name = Release; }; - AB93AA242429B19CBE5C8DB3F1BB4C48 /* Debug */ = { + 7FDF227E89EE69C4408A4ADEF96917D4 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */; buildSettings = { @@ -569,10 +546,11 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; B64E2C722A3EAD054D380F489370F012 /* Debug */ = { isa = XCBuildConfiguration; @@ -640,11 +618,43 @@ }; name = Debug; }; + B9CA0C42A080104801B591C2FB130A9B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 94C5B922B4A175DDE784DBF042CC8205 /* UILoadControl.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/UILoadControl/UILoadControl-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/UILoadControl/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/UILoadControl/UILoadControl.modulemap"; + PRODUCT_MODULE_NAME = UILoadControl; + PRODUCT_NAME = UILoadControl; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; CC79581823C925349342A816CAA239C3 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 893B5DDA3F3BD7A39BC9B24B52C308F8 /* Pods-UILoadControl_Example.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -667,6 +677,7 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -713,6 +724,7 @@ baseConfigurationReference = 0B5F7E9B04DD63BE1A28797165B05B5A /* Pods-UILoadControl_Example.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -735,6 +747,8 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -765,8 +779,8 @@ DB767A5B1744C498EAB6DC6147C3D7F1 /* Build configuration list for PBXNativeTarget "UILoadControl" */ = { isa = XCConfigurationList; buildConfigurations = ( - AB93AA242429B19CBE5C8DB3F1BB4C48 /* Debug */, - 5047397DA2BAF09312489803B611BB93 /* Release */, + B9CA0C42A080104801B591C2FB130A9B /* Debug */, + 7FDF227E89EE69C4408A4ADEF96917D4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/UILoadControl.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/UILoadControl.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/UILoadControl.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Pod/Classes/Object+Extensions.swift b/Pod/Classes/Object+Extensions.swift new file mode 100644 index 0000000..c014d9a --- /dev/null +++ b/Pod/Classes/Object+Extensions.swift @@ -0,0 +1,32 @@ +// +// Object+Extensions.swift +// Pods-UILoadControl_Example +// +// Created by Henrique Cardoso on 03/02/2019. +// + +import Foundation + + +extension UIView { + + public func swizzleMethod(from original: Selector, with method: Selector) { + + guard let thisClass = object_getClass(self) else { + return + } + + guard + let originalMethod: Method = class_getInstanceMethod(thisClass, original), + let newMethod: Method = class_getInstanceMethod(thisClass, method) + else { + return + } + + if class_addMethod(thisClass, original, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)) { + class_replaceMethod(thisClass, method, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)) + } else { + method_exchangeImplementations(originalMethod, newMethod) + } + } +} diff --git a/Pod/Classes/UILoadControl.swift b/Pod/Classes/UILoadControl.swift index bf757b4..7748dee 100644 --- a/Pod/Classes/UILoadControl.swift +++ b/Pod/Classes/UILoadControl.swift @@ -11,11 +11,15 @@ import Foundation public class UILoadControl: UIControl { - fileprivate var activityIndicatorView: UIActivityIndicatorView! - private var originalDelegate: UIScrollViewDelegate? + private var activityIndicatorView: UIActivityIndicatorView = { + let indicatorView = UIActivityIndicatorView(style: .gray) + indicatorView.hidesWhenStopped = false + indicatorView.color = .darkGray + indicatorView.transform = CGAffineTransform(scaleX: 1.4, y: 1.4) + return indicatorView + }() - internal var target: AnyObject? - internal var action: Selector! + private var originalDelegate: UIScrollViewDelegate? public var heightLimit: CGFloat = 80.0 public fileprivate (set) var loading: Bool = false @@ -24,9 +28,13 @@ public class UILoadControl: UIControl { override public var frame: CGRect { didSet{ - if (frame.size.height > heightLimit) && !loading { - self.sendActions(for: UIControl.Event.valueChanged) + + guard (frame.size.height > heightLimit), !loading else { + return } + + self.setLoading(isLoading: true) + self.sendActions(for: .valueChanged) } } @@ -43,9 +51,7 @@ public class UILoadControl: UIControl { public init(target: AnyObject?, action: Selector) { self.init() self.initialize() - self.target = target - self.action = action - addTarget(self.target, action: self.action, for: .valueChanged) + addTarget(target, action: action, for: .valueChanged) } override public func awakeFromNib() { @@ -75,7 +81,6 @@ extension UILoadControl { Initilize the control */ fileprivate func initialize(){ - self.addTarget(self, action: #selector(UILoadControl.didValueChange(sender:)), for: .valueChanged) setupActivityIndicator() } @@ -84,13 +89,22 @@ extension UILoadControl { This method is called after user hits the end of the scrollView */ func updateUI(){ - if self.scrollView.contentSize.height < self.scrollView.bounds.size.height { + + guard scrollView.contentSize.height > scrollView.bounds.size.height else { return } let contentOffSetBottom = max(0, ((scrollView.contentOffset.y + scrollView.frame.size.height) - scrollView.contentSize.height)) if (contentOffSetBottom >= 0 && !loading) || (contentOffSetBottom >= heightLimit && loading) { - self.updateFrame(rect: CGRect(x:0.0, y:scrollView.contentSize.height, width:scrollView.frame.size.width, height:contentOffSetBottom)) + + let newRect = CGRect( + x:0.0, + y: scrollView.contentSize.height, + width: scrollView.frame.size.width, + height: contentOffSetBottom + ) + + self.updateFrame(rect: newRect) } } @@ -98,6 +112,7 @@ extension UILoadControl { Update layout after user scroll the scrollView */ private func updateFrame(rect: CGRect){ + guard let superview = self.superview else { return } @@ -111,28 +126,37 @@ extension UILoadControl { /* Place control at the scrollView bottom */ - fileprivate func fixPosition(){ - self.updateFrame(rect: CGRect(x:0.0, y:scrollView.contentSize.height, width:scrollView.frame.size.width, height:0.0)) + private func fixPosition(){ + self.updateFrame(rect: CGRect( + x: 0.0, + y: scrollView.contentSize.height, + width: scrollView.frame.size.width, + height: 0.0 + )) } /* Set layout to a "loading" or "not loading" state */ - fileprivate func setLoading(isLoading: Bool){ + private func setLoading(isLoading: Bool){ loading = isLoading - DispatchQueue.main.async { [unowned self] in + DispatchQueue.main.async { [weak self] in + + guard let strongSelf = self else { + return + } - var contentInset = self.scrollView.contentInset + var contentInset = strongSelf.scrollView.contentInset - if self.loading { - contentInset.bottom = self.heightLimit - self.activityIndicatorView.startAnimating() + if strongSelf.loading { + contentInset.bottom = strongSelf.heightLimit + strongSelf.activityIndicatorView.startAnimating() }else{ contentInset.bottom = 0.0 - self.activityIndicatorView.stopAnimating() + strongSelf.activityIndicatorView.stopAnimating() } - self.scrollView.contentInset = contentInset + strongSelf.scrollView.contentInset = contentInset } } @@ -140,22 +164,7 @@ extension UILoadControl { Prepare activityIndicator */ private func setupActivityIndicator(){ - - if self.activityIndicatorView != nil { - return - } - - self.activityIndicatorView = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray) - self.activityIndicatorView.hidesWhenStopped = false - self.activityIndicatorView.color = UIColor.darkGray - self.activityIndicatorView.transform = CGAffineTransform(scaleX: 1.4, y: 1.4) - - addSubview(self.activityIndicatorView) - bringSubviewToFront(self.activityIndicatorView) - } - - @objc fileprivate func didValueChange(sender: AnyObject?){ - setLoading(isLoading: true) + addSubview(activityIndicatorView) + bringSubviewToFront(activityIndicatorView) } - } diff --git a/Pod/Classes/UILoadControl_UIScrollView.swift b/Pod/Classes/UILoadControl_UIScrollView.swift index e6a4eac..58d50be 100644 --- a/Pod/Classes/UILoadControl_UIScrollView.swift +++ b/Pod/Classes/UILoadControl_UIScrollView.swift @@ -56,6 +56,8 @@ extension UIScrollView { } } + + extension UIScrollView { public func setValue(value: AnyObject?, forKey key: String) {