diff --git a/Example/LiquidButton.xcodeproj/project.pbxproj b/Example/LiquidButton.xcodeproj/project.pbxproj index b618de5..b833584 100644 --- a/Example/LiquidButton.xcodeproj/project.pbxproj +++ b/Example/LiquidButton.xcodeproj/project.pbxproj @@ -29,7 +29,7 @@ /* Begin PBXFileReference section */ 0355A06D94D9D905F732E7C1 /* Pods-LiquidButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidButton_Tests.release.xcconfig"; path = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.release.xcconfig"; sourceTree = ""; }; - 1E9CE5D40B86C99FBC8A1734 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; + 1E9CE5D40B86C99FBC8A1734 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 36BC64EB8F908BFC4679BA05 /* Pods-LiquidButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidButton_Example.debug.xcconfig"; path = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.debug.xcconfig"; sourceTree = ""; }; 607FACD01AFB9204008FA782 /* LiquidButton_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LiquidButton_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -41,10 +41,10 @@ 607FACE51AFB9204008FA782 /* LiquidButton_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LiquidButton_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; - 624C439F74AE611EA910CC57 /* LiquidButton.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = LiquidButton.podspec; path = ../LiquidButton.podspec; sourceTree = ""; }; + 624C439F74AE611EA910CC57 /* LiquidButton.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LiquidButton.podspec; path = ../LiquidButton.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6DEDC3D57877642E36D263F8 /* Pods-LiquidButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidButton_Tests.debug.xcconfig"; path = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.debug.xcconfig"; sourceTree = ""; }; 866C0E6FD135672F5276901B /* Pods_LiquidButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D690D4CFCA479FF9E3B1EEB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = ""; }; + 8D690D4CFCA479FF9E3B1EEB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; AE5EF34FF5DF51603AB07BDD /* Pods_LiquidButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E6FD80D5EC7A767B603E8939 /* Pods-LiquidButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidButton_Example.release.xcconfig"; path = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -147,7 +147,6 @@ 6DEDC3D57877642E36D263F8 /* Pods-LiquidButton_Tests.debug.xcconfig */, 0355A06D94D9D905F732E7C1 /* Pods-LiquidButton_Tests.release.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -213,10 +212,12 @@ TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = SF6R5X4246; LastSwiftMigration = 0900; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = SF6R5X4246; LastSwiftMigration = 0900; TestTargetID = 607FACCF1AFB9204008FA782; }; @@ -227,6 +228,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -478,6 +480,7 @@ baseConfigurationReference = 36BC64EB8F908BFC4679BA05 /* Pods-LiquidButton_Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = SF6R5X4246; INFOPLIST_FILE = LiquidButton/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; @@ -493,6 +496,7 @@ baseConfigurationReference = E6FD80D5EC7A767B603E8939 /* Pods-LiquidButton_Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = SF6R5X4246; INFOPLIST_FILE = LiquidButton/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; @@ -507,6 +511,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 6DEDC3D57877642E36D263F8 /* Pods-LiquidButton_Tests.debug.xcconfig */; buildSettings = { + DEVELOPMENT_TEAM = SF6R5X4246; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks", "$(inherited)", @@ -529,6 +534,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 0355A06D94D9D905F732E7C1 /* Pods-LiquidButton_Tests.release.xcconfig */; buildSettings = { + DEVELOPMENT_TEAM = SF6R5X4246; FRAMEWORK_SEARCH_PATHS = ( "$(PLATFORM_DIR)/Developer/Library/Frameworks", "$(inherited)", diff --git a/Example/LiquidButton.xcworkspace/contents.xcworkspacedata b/Example/LiquidButton.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..082c19f --- /dev/null +++ b/Example/LiquidButton.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Example/LiquidButton.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/LiquidButton.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/LiquidButton.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Podfile.lock b/Example/Podfile.lock new file mode 100644 index 0000000..8659af6 --- /dev/null +++ b/Example/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - LiquidButton (0.1.0) + +DEPENDENCIES: + - LiquidButton (from `../`) + +EXTERNAL SOURCES: + LiquidButton: + :path: "../" + +SPEC CHECKSUMS: + LiquidButton: 85fcac9ad5c6c40a901d45c1f7eebd20b715364d + +PODFILE CHECKSUM: 19cb93ac2ee10e29c26229791977fc4f9443b6b2 + +COCOAPODS: 1.7.4 diff --git a/Example/Pods/Local Podspecs/LiquidButton.podspec.json b/Example/Pods/Local Podspecs/LiquidButton.podspec.json new file mode 100644 index 0000000..a10e409 --- /dev/null +++ b/Example/Pods/Local Podspecs/LiquidButton.podspec.json @@ -0,0 +1,22 @@ +{ + "name": "LiquidButton", + "version": "0.1.0", + "summary": "A short description of LiquidButton.", + "description": "TODO: Add long description of the pod here.", + "homepage": "https://github.com/trungnguyen1791/LiquidButton", + "license": { + "type": "MIT", + "file": "LICENSE" + }, + "authors": { + "trungnguyen1791": "trungnguyen.1791@gmail.com" + }, + "source": { + "git": "https://github.com/trungnguyen1791/LiquidButton.git", + "tag": "0.1.0" + }, + "platforms": { + "ios": "8.0" + }, + "source_files": "LiquidButton/Classes/**/*" +} diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock new file mode 100644 index 0000000..8659af6 --- /dev/null +++ b/Example/Pods/Manifest.lock @@ -0,0 +1,16 @@ +PODS: + - LiquidButton (0.1.0) + +DEPENDENCIES: + - LiquidButton (from `../`) + +EXTERNAL SOURCES: + LiquidButton: + :path: "../" + +SPEC CHECKSUMS: + LiquidButton: 85fcac9ad5c6c40a901d45c1f7eebd20b715364d + +PODFILE CHECKSUM: 19cb93ac2ee10e29c26229791977fc4f9443b6b2 + +COCOAPODS: 1.7.4 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..64e05d8 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,804 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 06088C43783C1624E3AF23ACEED4D5DC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; + 40DED04A8DD410944D45D98DB1EA0C4B /* Pods-LiquidButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6982E877B6D04A9F50B3B0B0C513E1F1 /* Pods-LiquidButton_Example-dummy.m */; }; + 5EC50BA9ED3C30F2CD43EF99D78B074A /* Pods-LiquidButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B54FF2C89F19229057746842007815D /* Pods-LiquidButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7735F7755A52ED037A01DC23C07BAE9A /* LiquidButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F9740E9B27568250E0E643FFF4BEA899 /* LiquidButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84AFBAB622DC4BDE007E6F9F /* LiquidFloatingActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAAE22DC4BDE007E6F9F /* LiquidFloatingActionButton.swift */; }; + 84AFBAB722DC4BDE007E6F9F /* LiquittableCircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAAF22DC4BDE007E6F9F /* LiquittableCircle.swift */; }; + 84AFBAB822DC4BDE007E6F9F /* LiquidUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB022DC4BDE007E6F9F /* LiquidUtil.swift */; }; + 84AFBAB922DC4BDE007E6F9F /* SimpleCircleLiquidEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB122DC4BDE007E6F9F /* SimpleCircleLiquidEngine.swift */; }; + 84AFBABA22DC4BDE007E6F9F /* CGPointEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB222DC4BDE007E6F9F /* CGPointEx.swift */; }; + 84AFBABB22DC4BDE007E6F9F /* CGRectEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB322DC4BDE007E6F9F /* CGRectEx.swift */; }; + 84AFBABC22DC4BDE007E6F9F /* UIColorEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB422DC4BDE007E6F9F /* UIColorEx.swift */; }; + 84AFBABD22DC4BDE007E6F9F /* ArrayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AFBAB522DC4BDE007E6F9F /* ArrayEx.swift */; }; + A0384C23AB0C68A3B5C97CE352ACE26E /* LiquidButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E412A2D965A0CF5636158C1CB76E4DF6 /* LiquidButton-dummy.m */; }; + A26031DF4E3405E98354005B402E6701 /* Pods-LiquidButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 94E2BD46628CF05C53111E8A362C9A2D /* Pods-LiquidButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8512A18CC13E85B61049EC7F7731ECB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; + ACFCDABC2AC9FF9850555AF16EA7E5F6 /* Pods-LiquidButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9CF46B1C65BBF5B1FE9BAA1D527B707 /* Pods-LiquidButton_Tests-dummy.m */; }; + C15CC2468F21AF34C16989D2CC30002A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331006EF273D1682704744A486572308 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F9644B83E35DA737B095BDA5291E6ED; + remoteInfo = "Pods-LiquidButton_Example"; + }; + F1E05CF486F41569897181813FF90277 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8335CDC4E6DF5983A6857EADDE5EEAE1; + remoteInfo = LiquidButton; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 06CC17C8AFE9F0CF2B53063F411E74AF /* LiquidButton-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LiquidButton-Info.plist"; sourceTree = ""; }; + 14A38330C8CE716CF744E358651362D8 /* Pods-LiquidButton_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidButton_Tests-Info.plist"; sourceTree = ""; }; + 151DE16C4C782DDC1BEA49B4EC6633D2 /* Pods_LiquidButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A4822E382A5AA33570C9E9AFC06AC8E /* Pods-LiquidButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidButton_Example.release.xcconfig"; sourceTree = ""; }; + 1F328DD72D71F7B16E399642052B1BD8 /* Pods_LiquidButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2B18E346396CF233853062A2634A7F6D /* LiquidButton.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LiquidButton.xcconfig; sourceTree = ""; }; + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 3A8695E74C1D2F044F0A377D2DE12780 /* LiquidButton-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LiquidButton-prefix.pch"; sourceTree = ""; }; + 48FD26548A290D42E28C83437FAE4531 /* LiquidButton.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LiquidButton.modulemap; sourceTree = ""; }; + 5C3372A54F0DD541500FB08AB9BAD7ED /* Pods-LiquidButton_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LiquidButton_Example.modulemap"; sourceTree = ""; }; + 6982E877B6D04A9F50B3B0B0C513E1F1 /* Pods-LiquidButton_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LiquidButton_Example-dummy.m"; sourceTree = ""; }; + 6E16D31DF90DB4D127AF23F5B9E97292 /* Pods-LiquidButton_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LiquidButton_Example-frameworks.sh"; sourceTree = ""; }; + 70AA12A60D02DA638F400CEA20352D62 /* Pods-LiquidButton_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidButton_Tests-acknowledgements.plist"; sourceTree = ""; }; + 83C69409DACC44DB38B8642B33E43E25 /* Pods-LiquidButton_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidButton_Example-Info.plist"; sourceTree = ""; }; + 84AFBAAE22DC4BDE007E6F9F /* LiquidFloatingActionButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LiquidFloatingActionButton.swift; path = LiquidButton/Classes/LiquidFloatingActionButton.swift; sourceTree = ""; }; + 84AFBAAF22DC4BDE007E6F9F /* LiquittableCircle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LiquittableCircle.swift; path = LiquidButton/Classes/LiquittableCircle.swift; sourceTree = ""; }; + 84AFBAB022DC4BDE007E6F9F /* LiquidUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LiquidUtil.swift; path = LiquidButton/Classes/LiquidUtil.swift; sourceTree = ""; }; + 84AFBAB122DC4BDE007E6F9F /* SimpleCircleLiquidEngine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SimpleCircleLiquidEngine.swift; path = LiquidButton/Classes/SimpleCircleLiquidEngine.swift; sourceTree = ""; }; + 84AFBAB222DC4BDE007E6F9F /* CGPointEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CGPointEx.swift; path = LiquidButton/Classes/CGPointEx.swift; sourceTree = ""; }; + 84AFBAB322DC4BDE007E6F9F /* CGRectEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CGRectEx.swift; path = LiquidButton/Classes/CGRectEx.swift; sourceTree = ""; }; + 84AFBAB422DC4BDE007E6F9F /* UIColorEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIColorEx.swift; path = LiquidButton/Classes/UIColorEx.swift; sourceTree = ""; }; + 84AFBAB522DC4BDE007E6F9F /* ArrayEx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ArrayEx.swift; path = LiquidButton/Classes/ArrayEx.swift; sourceTree = ""; }; + 8B54FF2C89F19229057746842007815D /* Pods-LiquidButton_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LiquidButton_Tests-umbrella.h"; sourceTree = ""; }; + 94E2BD46628CF05C53111E8A362C9A2D /* Pods-LiquidButton_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LiquidButton_Example-umbrella.h"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9E82CF3FE567E0778A7D4C870BF48599 /* Pods-LiquidButton_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidButton_Example-acknowledgements.plist"; sourceTree = ""; }; + A005E615ECF7516F96EFD3FD22039BD3 /* LiquidButton.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = LiquidButton.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A78EF8A14D1AE88ECCBC0190510F7742 /* Pods-LiquidButton_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LiquidButton_Example-acknowledgements.markdown"; sourceTree = ""; }; + A950B987162BD9815093F53156E5A53D /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + B7D094072B9BC3197C1F69CEDF77E42B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + C6376827ADCB78C50F23D821A2680D02 /* LiquidButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LiquidButton.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CA0F4D73694EFF6F527C0F518945E975 /* Pods-LiquidButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidButton_Example.debug.xcconfig"; sourceTree = ""; }; + CF93697CA2CE929E1BB20076F331C88C /* Pods-LiquidButton_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-LiquidButton_Tests.modulemap"; sourceTree = ""; }; + D92634B6B541E4DC8341FEB4BB04FD1C /* Pods-LiquidButton_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LiquidButton_Tests-acknowledgements.markdown"; sourceTree = ""; }; + E412A2D965A0CF5636158C1CB76E4DF6 /* LiquidButton-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LiquidButton-dummy.m"; sourceTree = ""; }; + EA0EDAD0ACC4C12A69860D99CBC16388 /* Pods-LiquidButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidButton_Tests.debug.xcconfig"; sourceTree = ""; }; + F9740E9B27568250E0E643FFF4BEA899 /* LiquidButton-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LiquidButton-umbrella.h"; sourceTree = ""; }; + F9CF46B1C65BBF5B1FE9BAA1D527B707 /* Pods-LiquidButton_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LiquidButton_Tests-dummy.m"; sourceTree = ""; }; + FBEDD473AA760ACC734A0506B0758F83 /* Pods-LiquidButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidButton_Tests.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2F810F78834CAC0FDF062917CB72DF62 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 06088C43783C1624E3AF23ACEED4D5DC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 518DBAFDC2B5A2737BFA5707DA298776 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C15CC2468F21AF34C16989D2CC30002A /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9D1139C6336FA5639D44EDDEDB0D0A5D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A8512A18CC13E85B61049EC7F7731ECB /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0D09428D817C50663AB426EFF8343D22 /* Pod */ = { + isa = PBXGroup; + children = ( + B7D094072B9BC3197C1F69CEDF77E42B /* LICENSE */, + A005E615ECF7516F96EFD3FD22039BD3 /* LiquidButton.podspec */, + A950B987162BD9815093F53156E5A53D /* README.md */, + ); + name = Pod; + sourceTree = ""; + }; + 18F50C2FE8360522ED0DF74E95D01BCF /* Pods-LiquidButton_Tests */ = { + isa = PBXGroup; + children = ( + CF93697CA2CE929E1BB20076F331C88C /* Pods-LiquidButton_Tests.modulemap */, + D92634B6B541E4DC8341FEB4BB04FD1C /* Pods-LiquidButton_Tests-acknowledgements.markdown */, + 70AA12A60D02DA638F400CEA20352D62 /* Pods-LiquidButton_Tests-acknowledgements.plist */, + F9CF46B1C65BBF5B1FE9BAA1D527B707 /* Pods-LiquidButton_Tests-dummy.m */, + 14A38330C8CE716CF744E358651362D8 /* Pods-LiquidButton_Tests-Info.plist */, + 8B54FF2C89F19229057746842007815D /* Pods-LiquidButton_Tests-umbrella.h */, + EA0EDAD0ACC4C12A69860D99CBC16388 /* Pods-LiquidButton_Tests.debug.xcconfig */, + FBEDD473AA760ACC734A0506B0758F83 /* Pods-LiquidButton_Tests.release.xcconfig */, + ); + name = "Pods-LiquidButton_Tests"; + path = "Target Support Files/Pods-LiquidButton_Tests"; + sourceTree = ""; + }; + 2B62F92FCF378AB5E50A26BE845A68EF /* Products */ = { + isa = PBXGroup; + children = ( + C6376827ADCB78C50F23D821A2680D02 /* LiquidButton.framework */, + 1F328DD72D71F7B16E399642052B1BD8 /* Pods_LiquidButton_Example.framework */, + 151DE16C4C782DDC1BEA49B4EC6633D2 /* Pods_LiquidButton_Tests.framework */, + ); + name = Products; + sourceTree = ""; + }; + 3D14726AB89C9EF0AB11BEEC6D020EDD /* LiquidButton */ = { + isa = PBXGroup; + children = ( + 84AFBAB522DC4BDE007E6F9F /* ArrayEx.swift */, + 84AFBAB222DC4BDE007E6F9F /* CGPointEx.swift */, + 84AFBAB322DC4BDE007E6F9F /* CGRectEx.swift */, + 84AFBAAE22DC4BDE007E6F9F /* LiquidFloatingActionButton.swift */, + 84AFBAB022DC4BDE007E6F9F /* LiquidUtil.swift */, + 84AFBAAF22DC4BDE007E6F9F /* LiquittableCircle.swift */, + 84AFBAB122DC4BDE007E6F9F /* SimpleCircleLiquidEngine.swift */, + 84AFBAB422DC4BDE007E6F9F /* UIColorEx.swift */, + 0D09428D817C50663AB426EFF8343D22 /* Pod */, + 8FB8DC4800997231F026C91511FE990E /* Support Files */, + ); + name = LiquidButton; + path = ../..; + sourceTree = ""; + }; + 438E5A178A70590BAA5B9754DCCA15AE /* Development Pods */ = { + isa = PBXGroup; + children = ( + 3D14726AB89C9EF0AB11BEEC6D020EDD /* LiquidButton */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + 8FB8DC4800997231F026C91511FE990E /* Support Files */ = { + isa = PBXGroup; + children = ( + 48FD26548A290D42E28C83437FAE4531 /* LiquidButton.modulemap */, + 2B18E346396CF233853062A2634A7F6D /* LiquidButton.xcconfig */, + E412A2D965A0CF5636158C1CB76E4DF6 /* LiquidButton-dummy.m */, + 06CC17C8AFE9F0CF2B53063F411E74AF /* LiquidButton-Info.plist */, + 3A8695E74C1D2F044F0A377D2DE12780 /* LiquidButton-prefix.pch */, + F9740E9B27568250E0E643FFF4BEA899 /* LiquidButton-umbrella.h */, + ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/LiquidButton"; + sourceTree = ""; + }; + C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { + isa = PBXGroup; + children = ( + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 438E5A178A70590BAA5B9754DCCA15AE /* Development Pods */, + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, + 2B62F92FCF378AB5E50A26BE845A68EF /* Products */, + E7B04C80CF0A384FD0478EF8F89A6BFC /* Targets Support Files */, + ); + sourceTree = ""; + }; + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C0834CEBB1379A84116EF29F93051C60 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + E7B04C80CF0A384FD0478EF8F89A6BFC /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + FC02CD35B025791E9E2C72E1545076AB /* Pods-LiquidButton_Example */, + 18F50C2FE8360522ED0DF74E95D01BCF /* Pods-LiquidButton_Tests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + FC02CD35B025791E9E2C72E1545076AB /* Pods-LiquidButton_Example */ = { + isa = PBXGroup; + children = ( + 5C3372A54F0DD541500FB08AB9BAD7ED /* Pods-LiquidButton_Example.modulemap */, + A78EF8A14D1AE88ECCBC0190510F7742 /* Pods-LiquidButton_Example-acknowledgements.markdown */, + 9E82CF3FE567E0778A7D4C870BF48599 /* Pods-LiquidButton_Example-acknowledgements.plist */, + 6982E877B6D04A9F50B3B0B0C513E1F1 /* Pods-LiquidButton_Example-dummy.m */, + 6E16D31DF90DB4D127AF23F5B9E97292 /* Pods-LiquidButton_Example-frameworks.sh */, + 83C69409DACC44DB38B8642B33E43E25 /* Pods-LiquidButton_Example-Info.plist */, + 94E2BD46628CF05C53111E8A362C9A2D /* Pods-LiquidButton_Example-umbrella.h */, + CA0F4D73694EFF6F527C0F518945E975 /* Pods-LiquidButton_Example.debug.xcconfig */, + 1A4822E382A5AA33570C9E9AFC06AC8E /* Pods-LiquidButton_Example.release.xcconfig */, + ); + name = "Pods-LiquidButton_Example"; + path = "Target Support Files/Pods-LiquidButton_Example"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 402E622C9F6D3F418EF02240CA39A3BB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7735F7755A52ED037A01DC23C07BAE9A /* LiquidButton-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5101BCA61E5222CF43353E4F5FF0E4C6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A26031DF4E3405E98354005B402E6701 /* Pods-LiquidButton_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8046424A6D1EBDA30A719D3E30CBCD2E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5EC50BA9ED3C30F2CD43EF99D78B074A /* Pods-LiquidButton_Tests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 4F9644B83E35DA737B095BDA5291E6ED /* Pods-LiquidButton_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3DE63F7CA449CDE47FAC9F3E41AFBD3E /* Build configuration list for PBXNativeTarget "Pods-LiquidButton_Example" */; + buildPhases = ( + 5101BCA61E5222CF43353E4F5FF0E4C6 /* Headers */, + C6DA24916F211449812C2436738853C6 /* Sources */, + 518DBAFDC2B5A2737BFA5707DA298776 /* Frameworks */, + 352ADE71A63200A4047C7D1E884F918F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 74898620651BC66D1748078018324F38 /* PBXTargetDependency */, + ); + name = "Pods-LiquidButton_Example"; + productName = "Pods-LiquidButton_Example"; + productReference = 1F328DD72D71F7B16E399642052B1BD8 /* Pods_LiquidButton_Example.framework */; + productType = "com.apple.product-type.framework"; + }; + 8335CDC4E6DF5983A6857EADDE5EEAE1 /* LiquidButton */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3FB1D3849B1A11CE4BDFC620886B8EDA /* Build configuration list for PBXNativeTarget "LiquidButton" */; + buildPhases = ( + 402E622C9F6D3F418EF02240CA39A3BB /* Headers */, + CC1497496FFF0E4C9A195D454FA61F45 /* Sources */, + 2F810F78834CAC0FDF062917CB72DF62 /* Frameworks */, + 4C59E029DE6C41BEA0E6E27B2A7E0887 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LiquidButton; + productName = LiquidButton; + productReference = C6376827ADCB78C50F23D821A2680D02 /* LiquidButton.framework */; + productType = "com.apple.product-type.framework"; + }; + AE74F566B2C9915D7825090BEE84F28C /* Pods-LiquidButton_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3EB16E5A3F0A9207BF3BFE2C80235E2E /* Build configuration list for PBXNativeTarget "Pods-LiquidButton_Tests" */; + buildPhases = ( + 8046424A6D1EBDA30A719D3E30CBCD2E /* Headers */, + BB5693D846A3198B919F46813FA4AFD6 /* Sources */, + 9D1139C6336FA5639D44EDDEDB0D0A5D /* Frameworks */, + B871B4F74FE221964C9B73F88FB3A086 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8399377A5E9E5835390AB57469E0567B /* PBXTargetDependency */, + ); + name = "Pods-LiquidButton_Tests"; + productName = "Pods-LiquidButton_Tests"; + productReference = 151DE16C4C782DDC1BEA49B4EC6633D2 /* Pods_LiquidButton_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + TargetAttributes = { + 8335CDC4E6DF5983A6857EADDE5EEAE1 = { + LastSwiftMigration = 1020; + }; + }; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 2B62F92FCF378AB5E50A26BE845A68EF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8335CDC4E6DF5983A6857EADDE5EEAE1 /* LiquidButton */, + 4F9644B83E35DA737B095BDA5291E6ED /* Pods-LiquidButton_Example */, + AE74F566B2C9915D7825090BEE84F28C /* Pods-LiquidButton_Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 352ADE71A63200A4047C7D1E884F918F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C59E029DE6C41BEA0E6E27B2A7E0887 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B871B4F74FE221964C9B73F88FB3A086 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BB5693D846A3198B919F46813FA4AFD6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ACFCDABC2AC9FF9850555AF16EA7E5F6 /* Pods-LiquidButton_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C6DA24916F211449812C2436738853C6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40DED04A8DD410944D45D98DB1EA0C4B /* Pods-LiquidButton_Example-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CC1497496FFF0E4C9A195D454FA61F45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84AFBAB722DC4BDE007E6F9F /* LiquittableCircle.swift in Sources */, + 84AFBAB822DC4BDE007E6F9F /* LiquidUtil.swift in Sources */, + 84AFBAB622DC4BDE007E6F9F /* LiquidFloatingActionButton.swift in Sources */, + 84AFBABD22DC4BDE007E6F9F /* ArrayEx.swift in Sources */, + 84AFBABA22DC4BDE007E6F9F /* CGPointEx.swift in Sources */, + 84AFBABC22DC4BDE007E6F9F /* UIColorEx.swift in Sources */, + 84AFBAB922DC4BDE007E6F9F /* SimpleCircleLiquidEngine.swift in Sources */, + A0384C23AB0C68A3B5C97CE352ACE26E /* LiquidButton-dummy.m in Sources */, + 84AFBABB22DC4BDE007E6F9F /* CGRectEx.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 74898620651BC66D1748078018324F38 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LiquidButton; + target = 8335CDC4E6DF5983A6857EADDE5EEAE1 /* LiquidButton */; + targetProxy = F1E05CF486F41569897181813FF90277 /* PBXContainerItemProxy */; + }; + 8399377A5E9E5835390AB57469E0567B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-LiquidButton_Example"; + target = 4F9644B83E35DA737B095BDA5291E6ED /* Pods-LiquidButton_Example */; + targetProxy = 331006EF273D1682704744A486572308 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3A37BCAAF3D8A364B7F12533AEC89ED4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FBEDD473AA760ACC734A0506B0758F83 /* Pods-LiquidButton_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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_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; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 5AB0CC99DD60653319C86464868F278E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B18E346396CF233853062A2634A7F6D /* LiquidButton.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + 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/LiquidButton/LiquidButton-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LiquidButton/LiquidButton-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/LiquidButton/LiquidButton.modulemap"; + PRODUCT_MODULE_NAME = LiquidButton; + PRODUCT_NAME = LiquidButton; + 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; + }; + 6F9F2B5B07F235E91BAE29C299301E96 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1A4822E382A5AA33570C9E9AFC06AC8E /* Pods-LiquidButton_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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.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; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B0087CB4594321EF41619F3181FE120E /* Release */ = { + isa = XCBuildConfiguration; + 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; + 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 = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + B1ADA1525D9D51FC514FBCA5FED927F0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B18E346396CF233853062A2634A7F6D /* LiquidButton.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + 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/LiquidButton/LiquidButton-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LiquidButton/LiquidButton-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/LiquidButton/LiquidButton.modulemap"; + PRODUCT_MODULE_NAME = LiquidButton; + PRODUCT_NAME = LiquidButton; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */ = { + isa = XCBuildConfiguration; + 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; + 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 = 9.3; + 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 = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + CA889306ACAE6998FF3C8C3DF2FC34FE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CA0F4D73694EFF6F527C0F518945E975 /* Pods-LiquidButton_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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.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; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + DC3720A8CBC80186E061BECB7F8CB32C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EA0EDAD0ACC4C12A69860D99CBC16388 /* Pods-LiquidButton_Tests.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; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_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; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3DE63F7CA449CDE47FAC9F3E41AFBD3E /* Build configuration list for PBXNativeTarget "Pods-LiquidButton_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CA889306ACAE6998FF3C8C3DF2FC34FE /* Debug */, + 6F9F2B5B07F235E91BAE29C299301E96 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3EB16E5A3F0A9207BF3BFE2C80235E2E /* Build configuration list for PBXNativeTarget "Pods-LiquidButton_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DC3720A8CBC80186E061BECB7F8CB32C /* Debug */, + 3A37BCAAF3D8A364B7F12533AEC89ED4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3FB1D3849B1A11CE4BDFC620886B8EDA /* Build configuration list for PBXNativeTarget "LiquidButton" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B1ADA1525D9D51FC514FBCA5FED927F0 /* Debug */, + 5AB0CC99DD60653319C86464868F278E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */, + B0087CB4594321EF41619F3181FE120E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton-Info.plist b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-Info.plist new file mode 100644 index 0000000..161a9d3 --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton-dummy.m b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-dummy.m new file mode 100644 index 0000000..83e96af --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_LiquidButton : NSObject +@end +@implementation PodsDummy_LiquidButton +@end diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton-prefix.pch b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton-umbrella.h b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-umbrella.h new file mode 100644 index 0000000..9cc85b4 --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double LiquidButtonVersionNumber; +FOUNDATION_EXPORT const unsigned char LiquidButtonVersionString[]; + diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton.modulemap b/Example/Pods/Target Support Files/LiquidButton/LiquidButton.modulemap new file mode 100644 index 0000000..6a41af6 --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton.modulemap @@ -0,0 +1,6 @@ +framework module LiquidButton { + umbrella header "LiquidButton-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/LiquidButton/LiquidButton.xcconfig b/Example/Pods/Target Support Files/LiquidButton/LiquidButton.xcconfig new file mode 100644 index 0000000..2a9cdd6 --- /dev/null +++ b/Example/Pods/Target Support Files/LiquidButton/LiquidButton.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +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} +SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-Info.plist b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.markdown new file mode 100644 index 0000000..fbe368d --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## LiquidButton + +Copyright (c) 2019 trungnguyen1791 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.plist new file mode 100644 index 0000000..b2663d3 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-acknowledgements.plist @@ -0,0 +1,58 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2019 trungnguyen1791 <trungnguyen.1791@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + LiquidButton + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-dummy.m b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-dummy.m new file mode 100644 index 0000000..f4a0343 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_LiquidButton_Example : NSObject +@end +@implementation PodsDummy_Pods_LiquidButton_Example +@end diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-frameworks.sh new file mode 100755 index 0000000..313adee --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-frameworks.sh @@ -0,0 +1,171 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +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 + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # 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")" + binary="${destination}/${basename}.framework/${basename}" + + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + 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 +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + +# 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 + # Use the current code_sign_identity + 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'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # 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 $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/LiquidButton/LiquidButton.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/LiquidButton/LiquidButton.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-umbrella.h new file mode 100644 index 0000000..113305d --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_LiquidButton_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_LiquidButton_ExampleVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.debug.xcconfig new file mode 100644 index 0000000..aa4913e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.debug.xcconfig @@ -0,0 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton/LiquidButton.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "LiquidButton" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +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-LiquidButton_Example/Pods-LiquidButton_Example.modulemap b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.modulemap new file mode 100644 index 0000000..f7adc7d --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.modulemap @@ -0,0 +1,6 @@ +framework module Pods_LiquidButton_Example { + umbrella header "Pods-LiquidButton_Example-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.release.xcconfig new file mode 100644 index 0000000..aa4913e --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Example/Pods-LiquidButton_Example.release.xcconfig @@ -0,0 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton/LiquidButton.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "LiquidButton" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +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-LiquidButton_Tests/Pods-LiquidButton_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-dummy.m new file mode 100644 index 0000000..62eacb2 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_LiquidButton_Tests : NSObject +@end +@implementation PodsDummy_Pods_LiquidButton_Tests +@end diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-umbrella.h new file mode 100644 index 0000000..9a6f75a --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_LiquidButton_TestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_LiquidButton_TestsVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.debug.xcconfig new file mode 100644 index 0000000..3f776e8 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.debug.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton/LiquidButton.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "LiquidButton" +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-LiquidButton_Tests/Pods-LiquidButton_Tests.modulemap b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.modulemap new file mode 100644 index 0000000..6083d39 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_LiquidButton_Tests { + umbrella header "Pods-LiquidButton_Tests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.release.xcconfig new file mode 100644 index 0000000..3f776e8 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-LiquidButton_Tests/Pods-LiquidButton_Tests.release.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LiquidButton/LiquidButton.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "LiquidButton" +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/LiquidButton.podspec b/LiquidButton.podspec index 314b85e..7e98619 100644 --- a/LiquidButton.podspec +++ b/LiquidButton.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.name = 'LiquidButton' s.version = '0.1.0' - s.summary = 'A short description of LiquidButton.' + s.summary = 'An alternative version of LiquidFloatingActionButton. Just because of its abadonned for a long time....' # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? @@ -17,9 +17,7 @@ Pod::Spec.new do |s| # * Write the description between the DESC delimiters below. # * Finally, don't worry about the indent, CocoaPods strips it! - s.description = <<-DESC -TODO: Add long description of the pod here. - DESC + s.homepage = 'https://github.com/trungnguyen1791/LiquidButton' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' @@ -28,8 +26,9 @@ TODO: Add long description of the pod here. s.source = { :git => 'https://github.com/trungnguyen1791/LiquidButton.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/' - s.ios.deployment_target = '8.0' - + s.ios.deployment_target = '9.0' + s.swift_version = '4.2' + s.platform = :ios, '9.0' s.source_files = 'LiquidButton/Classes/**/*' # s.resource_bundles = { diff --git a/LiquidButton/Classes/ArrayEx.swift b/LiquidButton/Classes/ArrayEx.swift new file mode 100644 index 0000000..cf3e5be --- /dev/null +++ b/LiquidButton/Classes/ArrayEx.swift @@ -0,0 +1,19 @@ +// +// ArrayEx.swift +// Ampdot +// +// Created by Takuma Yoshida on 2015/06/02. +// Copyright (c) 2015年 yoavlt All rights reserved. +// + +import Foundation + +extension Array { + + func each(_ f: (Element) -> ()) { + for item in self { + f(item) + } + } + +} diff --git a/LiquidButton/Classes/CGPointEx.swift b/LiquidButton/Classes/CGPointEx.swift new file mode 100644 index 0000000..eaee8ff --- /dev/null +++ b/LiquidButton/Classes/CGPointEx.swift @@ -0,0 +1,88 @@ +// +// CGPointEx.swift +// LiquidLoading +// +// Created by Takuma Yoshida on 2015/08/17. +// Copyright (c) 2015年 yoavlt. All rights reserved. +// + +import Foundation +import UIKit + +extension CGPoint { + + // 足し算 + func plus(_ point: CGPoint) -> CGPoint { + return CGPoint(x: self.x + point.x, y: self.y + point.y) + } + + // 引き算 + func minus(_ point: CGPoint) -> CGPoint { + return CGPoint(x: self.x - point.x, y: self.y - point.y) + } + + func minusX(_ dx: CGFloat) -> CGPoint { + return CGPoint(x: self.x - dx, y: self.y) + } + + func minusY(_ dy: CGFloat) -> CGPoint { + return CGPoint(x: self.x, y: self.y - dy) + } + + // 掛け算 + func mul(_ rhs: CGFloat) -> CGPoint { + return CGPoint(x: self.x * rhs, y: self.y * rhs) + } + + // 割り算 + func div(_ rhs: CGFloat) -> CGPoint { + return CGPoint(x: self.x / rhs, y: self.y / rhs) + } + + // 長さ + func length() -> CGFloat { + return sqrt(self.x * self.x + self.y * self.y) + } + + // 正規化 + func normalized() -> CGPoint { + return self.div(self.length()) + } + + // 内積 + func dot(_ point: CGPoint) -> CGFloat { + return self.x * point.x + self.y * point.y + } + + // 外積 + func cross(_ point: CGPoint) -> CGFloat { + return self.x * point.y - self.y * point.x + } + + func split(_ point: CGPoint, ratio: CGFloat) -> CGPoint { + return self.mul(ratio).plus(point.mul(1.0 - ratio)) + } + + func mid(_ point: CGPoint) -> CGPoint { + return split(point, ratio: 0.5) + } + + static func intersection(_ from: CGPoint, to: CGPoint, from2: CGPoint, to2: CGPoint) -> CGPoint? { + let ac = CGPoint(x: to.x - from.x, y: to.y - from.y) + let bd = CGPoint(x: to2.x - from2.x, y: to2.y - from2.y) + let ab = CGPoint(x: from2.x - from.x, y: from2.y - from.y) + let bc = CGPoint(x: to.x - from2.x, y: to.y - from2.y) + + let area = bd.cross(ab) + let area2 = bd.cross(bc) + + if abs(area + area2) >= 0.1 { + let ratio = area / (area + area2) + return CGPoint(x: from.x + ratio * ac.x, y: from.y + ratio * ac.y) + } + + return nil + } + + +} diff --git a/LiquidButton/Classes/CGRectEx.swift b/LiquidButton/Classes/CGRectEx.swift new file mode 100644 index 0000000..1cad800 --- /dev/null +++ b/LiquidButton/Classes/CGRectEx.swift @@ -0,0 +1,26 @@ +// +// CGRectEx.swift +// LiquidLoading +// +// Created by Takuma Yoshida on 2015/08/20. +// Copyright (c) 2015年 yoavlt. All rights reserved. +// + +import Foundation +import UIKit + +extension CGRect { + + var rightBottom: CGPoint { + get { + return CGPoint(x: origin.x + width, y: origin.y + height) + } + } + + var center: CGPoint { + get { + return origin.plus(rightBottom).mul(0.5) + } + } + +} diff --git a/LiquidButton/Classes/LiquidFloatingActionButton.swift b/LiquidButton/Classes/LiquidFloatingActionButton.swift new file mode 100644 index 0000000..e97947c --- /dev/null +++ b/LiquidButton/Classes/LiquidFloatingActionButton.swift @@ -0,0 +1,538 @@ +// +// LiquidFloatingActionButton.swift +// Pods +// +// Created by Takuma Yoshida on 2015/08/25. +// +// + +import Foundation +import QuartzCore +import UIKit + +// LiquidFloatingButton DataSource methods +@objc public protocol LiquidFloatingActionButtonDataSource { + func numberOfCells(_ liquidFloatingActionButton: LiquidFloatingActionButton) -> Int + func cellForIndex(_ index: Int) -> LiquidFloatingCell +} + +@objc public protocol LiquidFloatingActionButtonDelegate { + // selected method + @objc optional func liquidFloatingActionButton(_ liquidFloatingActionButton: LiquidFloatingActionButton, didSelectItemAtIndex index: Int) + @objc optional func liquidFloatingActionButtonWillOpenDrawer(_ liquidFloatingActionButton: LiquidFloatingActionButton) + @objc optional func liquidFloatingActionButtonWillCloseDrawer(_ liquidFloatingActionButton: LiquidFloatingActionButton) +} + +public enum LiquidFloatingActionButtonAnimateStyle : Int { + case up + case right + case left + case down +} + +@IBDesignable +open class LiquidFloatingActionButton : UIView { + + fileprivate let internalRadiusRatio: CGFloat = 20.0 / 56.0 + open var cellRadiusRatio: CGFloat = 0.38 + open var animateStyle: LiquidFloatingActionButtonAnimateStyle = .up { + didSet { + baseView.animateStyle = animateStyle + } + } + open var enableShadow = true { + didSet { + setNeedsDisplay() + } + } + + weak open var delegate: LiquidFloatingActionButtonDelegate? + weak open var dataSource: LiquidFloatingActionButtonDataSource? + + open var responsible = true + open var isOpening: Bool { + get { + return !baseView.openingCells.isEmpty + } + } + open fileprivate(set) var isClosed: Bool = true + + @IBInspectable open var color: UIColor = UIColor(red: 82 / 255.0, green: 112 / 255.0, blue: 235 / 255.0, alpha: 1.0) { + didSet { + baseView.color = color + } + } + + @IBInspectable open var image: UIImage? { + didSet { + if image != nil { + plusLayer.contents = image!.cgImage + plusLayer.path = nil + } + } + } + + @IBInspectable open var rotationDegrees: CGFloat = 45.0 + + fileprivate var plusLayer = CAShapeLayer() + fileprivate let circleLayer = CAShapeLayer() + + fileprivate var touching = false + + fileprivate var baseView = CircleLiquidBaseView() + fileprivate let liquidView = UIView() + + public override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + fileprivate func insertCell(_ cell: LiquidFloatingCell) { + cell.color = self.color + cell.radius = self.frame.width * cellRadiusRatio + cell.center = self.center.minus(self.frame.origin) + cell.actionButton = self + insertSubview(cell, aboveSubview: baseView) + } + + fileprivate func cellArray() -> [LiquidFloatingCell] { + var result: [LiquidFloatingCell] = [] + if let source = dataSource { + for i in 0.. CAShapeLayer { + + // draw plus shape + let plusLayer = CAShapeLayer() + plusLayer.lineCap = .round + plusLayer.strokeColor = UIColor.white.cgColor + plusLayer.lineWidth = 3.0 + + let path = UIBezierPath() + path.move(to: CGPoint(x: frame.width * internalRadiusRatio, y: frame.height * 0.5)) + path.addLine(to: CGPoint(x: frame.width * (1 - internalRadiusRatio), y: frame.height * 0.5)) + path.move(to: CGPoint(x: frame.width * 0.5, y: frame.height * internalRadiusRatio)) + path.addLine(to: CGPoint(x: frame.width * 0.5, y: frame.height * (1 - internalRadiusRatio))) + + plusLayer.path = path.cgPath + return plusLayer + } + + fileprivate func drawCircle() { + self.circleLayer.cornerRadius = self.frame.width * 0.5 + self.circleLayer.masksToBounds = true + if touching && responsible { + self.circleLayer.backgroundColor = self.color.white(0.5).cgColor + } else { + self.circleLayer.backgroundColor = self.color.cgColor + } + } + + fileprivate func drawShadow() { + if enableShadow { + circleLayer.appendShadow() + } + } + + // MARK: Events + open override func touchesBegan(_ touches: Set, with event: UIEvent?) { + self.touching = true + setNeedsDisplay() + } + + open override func touchesEnded(_ touches: Set, with event: UIEvent?) { + self.touching = false + setNeedsDisplay() + didTapped() + } + + open override func touchesCancelled(_ touches: Set?, with event: UIEvent?) { + self.touching = false + setNeedsDisplay() + } + + open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + for cell in cellArray() { + let pointForTargetView = cell.convert(point, from: self) + + if (cell.bounds.contains(pointForTargetView)) { + if cell.isUserInteractionEnabled { + return cell.hitTest(pointForTargetView, with: event) + } + } + } + + return super.hitTest(point, with: event) + } + + // MARK: private methods + fileprivate func setup() { + self.backgroundColor = UIColor.clear + self.clipsToBounds = false + + baseView.setup(self) + addSubview(baseView) + + liquidView.frame = baseView.frame + liquidView.isUserInteractionEnabled = false + addSubview(liquidView) + + liquidView.layer.addSublayer(circleLayer) + circleLayer.frame = liquidView.layer.bounds + + plusLayer = createPlusLayer(circleLayer.bounds) + circleLayer.addSublayer(plusLayer) + plusLayer.frame = circleLayer.bounds + } + + fileprivate func didTapped() { + if isClosed { + open() + } else { + close() + } + } + + open func didTappedCell(_ target: LiquidFloatingCell) { + if let _ = dataSource { + let cells = cellArray() + for i in 0.. ()) { + let translate = CABasicAnimation(keyPath: "transform.translation.y") + f(translate) + + translate.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + translate.isRemovedOnCompletion = false + + translate.fillMode = .forwards + translate.duration = duration + layer.add(translate, forKey: "transYAnim") + } +} + +class CircleLiquidBaseView : ActionBarBaseView { + + let openDuration: CGFloat = 0.6 + let closeDuration: CGFloat = 0.2 + let viscosity: CGFloat = 0.65 + var animateStyle: LiquidFloatingActionButtonAnimateStyle = .up + var color: UIColor = UIColor(red: 82 / 255.0, green: 112 / 255.0, blue: 235 / 255.0, alpha: 1.0) { + didSet { + engine?.color = color + bigEngine?.color = color + } + } + + var baseLiquid: LiquittableCircle? + var engine: SimpleCircleLiquidEngine? + var bigEngine: SimpleCircleLiquidEngine? + var enableShadow = true + + fileprivate var openingCells: [LiquidFloatingCell] = [] + fileprivate var keyDuration: CGFloat = 0 + fileprivate var displayLink: CADisplayLink? + + override func setup(_ actionButton: LiquidFloatingActionButton) { + self.frame = actionButton.frame + self.center = actionButton.center.minus(actionButton.frame.origin) + self.animateStyle = actionButton.animateStyle + let radius = min(self.frame.width, self.frame.height) * 0.5 + self.engine = SimpleCircleLiquidEngine(radiusThresh: radius * 0.73, angleThresh: 0.45) + engine?.viscosity = viscosity + self.bigEngine = SimpleCircleLiquidEngine(radiusThresh: radius, angleThresh: 0.55) + bigEngine?.viscosity = viscosity + self.engine?.color = actionButton.color + self.bigEngine?.color = actionButton.color + + baseLiquid = LiquittableCircle(center: self.center.minus(self.frame.origin), radius: radius, color: actionButton.color) + baseLiquid?.clipsToBounds = false + baseLiquid?.layer.masksToBounds = false + + clipsToBounds = false + layer.masksToBounds = false + addSubview(baseLiquid!) + } + + func open(_ cells: [LiquidFloatingCell]) { + stop() + displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh(_:))) + displayLink?.add(to: RunLoop.current, forMode: RunLoop.Mode.common) + opening = true + for cell in cells { + cell.layer.removeAllAnimations() + cell.layer.eraseShadow() + openingCells.append(cell) + } + } + + func close(_ cells: [LiquidFloatingCell]) { + stop() + opening = false + displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh(_:))) + displayLink?.add(to: RunLoop.current, forMode: RunLoop.Mode.common) + for cell in cells { + cell.layer.removeAllAnimations() + cell.layer.eraseShadow() + openingCells.append(cell) + cell.isUserInteractionEnabled = false + } + } + + func didFinishUpdate() { + if opening { + for cell in openingCells { + cell.isUserInteractionEnabled = true + } + } else { + for cell in openingCells { + cell.removeFromSuperview() + } + } + } + + func update(_ delay: CGFloat, duration: CGFloat, f: (LiquidFloatingCell, Int, CGFloat) -> ()) { + if openingCells.isEmpty { + return + } + + let maxDuration = duration + CGFloat(openingCells.count) * CGFloat(delay) + let t = keyDuration + let allRatio = easeInEaseOut(t / maxDuration) + + if allRatio >= 1.0 { + didFinishUpdate() + stop() + return + } + + engine?.clear() + bigEngine?.clear() + for i in 0.. CGFloat(i) / CGFloat(self.openingCells.count) ? ratio : 0 + let distance = (cell.frame.height * 0.5 + CGFloat(i + 1) * cell.frame.height * 1.5) * posRatio + cell.center = self.center.plus(self.differencePoint(distance)) + cell.update(ratio, open: true) + } + } + + func updateClose() { + update(0, duration: closeDuration) { cell, i, ratio in + let distance = (cell.frame.height * 0.5 + CGFloat(i + 1) * cell.frame.height * 1.5) * (1 - ratio) + cell.center = self.center.plus(self.differencePoint(distance)) + cell.update(ratio, open: false) + } + } + + func differencePoint(_ distance: CGFloat) -> CGPoint { + switch animateStyle { + case .up: + return CGPoint(x: 0, y: -distance) + case .right: + return CGPoint(x: distance, y: 0) + case .left: + return CGPoint(x: -distance, y: 0) + case .down: + return CGPoint(x: 0, y: distance) + } + } + + func stop() { + for cell in openingCells { + if enableShadow { + cell.layer.appendShadow() + } + } + openingCells = [] + keyDuration = 0 + displayLink?.invalidate() + } + + func easeInEaseOut(_ t: CGFloat) -> CGFloat { + if t >= 1.0 { + return 1.0 + } + if t < 0 { + return 0 + } + return -1 * t * (t - 2) + } + + @objc func didDisplayRefresh(_ displayLink: CADisplayLink) { + if opening { + keyDuration += CGFloat(displayLink.duration) + updateOpen() + } else { + keyDuration += CGFloat(displayLink.duration) + updateClose() + } + } + +} + +open class LiquidFloatingCell : LiquittableCircle { + + let internalRatio: CGFloat = 0.75 + + open var responsible = true + open var imageView = UIImageView() + weak var actionButton: LiquidFloatingActionButton? + + // for implement responsible color + fileprivate var originalColor: UIColor + + open override var frame: CGRect { + didSet { + resizeSubviews() + } + } + + init(center: CGPoint, radius: CGFloat, color: UIColor, icon: UIImage) { + self.originalColor = color + super.init(center: center, radius: radius, color: color) + setup(icon) + } + + init(center: CGPoint, radius: CGFloat, color: UIColor, view: UIView) { + self.originalColor = color + super.init(center: center, radius: radius, color: color) + setupView(view) + } + + public init(icon: UIImage) { + self.originalColor = UIColor.clear + super.init() + setup(icon) + } + + required public init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func setup(_ image: UIImage, tintColor: UIColor = UIColor.white) { + imageView.image = image.withRenderingMode(UIImage.RenderingMode.alwaysTemplate) + imageView.tintColor = tintColor + setupView(imageView) + } + + open func setupView(_ view: UIView) { + isUserInteractionEnabled = false + addSubview(view) + resizeSubviews() + } + + fileprivate func resizeSubviews() { + let size = CGSize(width: frame.width * 0.5, height: frame.height * 0.5) + imageView.frame = CGRect(x: frame.width - frame.width * internalRatio, y: frame.height - frame.height * internalRatio, width: size.width, height: size.height) + } + + func update(_ key: CGFloat, open: Bool) { + for subview in self.subviews { + let ratio = max(2 * (key * key - 0.5), 0) + subview.alpha = open ? ratio : -ratio + } + } + + open override func touchesBegan(_ touches: Set, with event: UIEvent?) { + if responsible { + originalColor = color + color = originalColor.white(0.5) + setNeedsDisplay() + } + } + + open override func touchesCancelled(_ touches: Set?, with event: UIEvent?) { + if responsible { + color = originalColor + setNeedsDisplay() + } + } + + override open func touchesEnded(_ touches: Set, with event: UIEvent?) { + color = originalColor + actionButton?.didTappedCell(self) + } + +} diff --git a/LiquidButton/Classes/LiquidUtil.swift b/LiquidButton/Classes/LiquidUtil.swift new file mode 100644 index 0000000..d56c832 --- /dev/null +++ b/LiquidButton/Classes/LiquidUtil.swift @@ -0,0 +1,59 @@ +// +// LiquidUtil.swift +// LiquidLoading +// +// Created by Takuma Yoshida on 2015/08/17. +// Copyright (c) 2015年 yoavlt. All rights reserved. +// + +import Foundation +import UIKit + +func withBezier(_ f: (UIBezierPath) -> ()) -> UIBezierPath { + let bezierPath = UIBezierPath() + f(bezierPath) + bezierPath.close() + return bezierPath +} + +extension CALayer { + + func appendShadow() { + shadowColor = UIColor.black.cgColor + shadowRadius = 2.0 + shadowOpacity = 0.1 + shadowOffset = CGSize(width: 4, height: 4) + masksToBounds = false + } + + func eraseShadow() { + shadowRadius = 0.0 + shadowColor = UIColor.clear.cgColor + } + +} + +class CGMath { + + static func radToDeg(_ rad: CGFloat) -> CGFloat { + return rad * 180 / CGFloat(Double.pi) + } + + static func degToRad(_ deg: CGFloat) -> CGFloat { + return deg * CGFloat(Double.pi) / 180 + } + + static func circlePoint(_ center: CGPoint, radius: CGFloat, rad: CGFloat) -> CGPoint { + let x = center.x + radius * cos(rad) + let y = center.y + radius * sin(rad) + return CGPoint(x: x, y: y) + } + + static func linSpace(_ from: CGFloat, to: CGFloat, n: Int) -> [CGFloat] { + var values: [CGFloat] = [] + for i in 0.. CAShapeLayer { + circleLayer.lineWidth = 3.0 + circleLayer.fillColor = self.color.cgColor + circleLayer.path = path.cgPath + return circleLayer + } + + func circlePoint(_ rad: CGFloat) -> CGPoint { + return CGMath.circlePoint(center, radius: radius, rad: rad) + } + + open override func draw(_ rect: CGRect) { + drawCircle() + } + + +} diff --git a/LiquidButton/Classes/SimpleCircleLiquidEngine.swift b/LiquidButton/Classes/SimpleCircleLiquidEngine.swift new file mode 100644 index 0000000..dd9108e --- /dev/null +++ b/LiquidButton/Classes/SimpleCircleLiquidEngine.swift @@ -0,0 +1,152 @@ +// +// SimpleCircleLiquidEngine.swift +// LiquidLoading +// +// Created by Takuma Yoshida on 2015/08/19. +// Copyright (c) 2015年 yoavlt. All rights reserved. +// + +import Foundation +import UIKit + +/** + * This class is so fast, but allowed only same color. + */ +class SimpleCircleLiquidEngine { + + let radiusThresh: CGFloat + private var layer: CALayer = CAShapeLayer() + + var viscosity: CGFloat = 0.65 + var color = UIColor.blue + var angleOpen: CGFloat = 1.0 + + let ConnectThresh: CGFloat = 0.3 + var angleThresh: CGFloat = 0.5 + + init(radiusThresh: CGFloat, angleThresh: CGFloat) { + self.radiusThresh = radiusThresh + self.angleThresh = angleThresh + } + + func push(circle: LiquittableCircle, other: LiquittableCircle) -> [LiquittableCircle] { + if let paths = generateConnectedPath(circle: circle, other: other) { + let layers = paths.map(self.constructLayer) + layers.each(layer.addSublayer) + return [circle, other] + } + return [] + } + + func draw(parent: UIView) { + parent.layer.addSublayer(layer) + } + + func clear() { + layer.removeFromSuperlayer() + layer.sublayers?.each{ $0.removeFromSuperlayer() } + layer = CAShapeLayer() + } + + func constructLayer(path: UIBezierPath) -> CALayer { + let pathBounds = path.cgPath.boundingBox; + + let shape = CAShapeLayer() + shape.fillColor = self.color.cgColor + shape.path = path.cgPath + shape.frame = CGRect(x: 0, y: 0, width: pathBounds.width, height: pathBounds.height) + + return shape + } + + private func circleConnectedPoint(circle: LiquittableCircle, other: LiquittableCircle, angle: CGFloat) -> (CGPoint, CGPoint) { + let vec = other.center.minus(circle.center) + let radian = atan2(vec.y, vec.x) + let p1 = circle.circlePoint(radian + angle) + let p2 = circle.circlePoint(radian - angle) + return (p1, p2) + } + + private func circleConnectedPoint(circle: LiquittableCircle, other: LiquittableCircle) -> (CGPoint, CGPoint) { + var ratio = circleRatio(circle: circle, other: other) + ratio = (ratio + ConnectThresh) / (1.0 + ConnectThresh) + let angle = CGFloat(Double.pi/2.0) * angleOpen * ratio + return circleConnectedPoint(circle: circle, other: other, angle: angle) + } + + func generateConnectedPath(circle: LiquittableCircle, other: LiquittableCircle) -> [UIBezierPath]? { + if isConnected(circle: circle, other: other) { + let ratio = circleRatio(circle: circle, other: other) + switch ratio { + case angleThresh...1.0: + if let path = normalPath(circle: circle, other: other) { + return [path] + } + return nil + case 0.0.. UIBezierPath? { + let (p1, p2) = circleConnectedPoint(circle: circle, other: other) + let (p3, p4) = circleConnectedPoint(circle: other, other: circle) + if let crossed = CGPoint.intersection(p1, to: p3, from2: p2, to2: p4) { + return withBezier { path in + let r = self.circleRatio(circle: circle, other: other) + path.move(to: p1) + let r1 = p2.mid(p3) + let r2 = p1.mid(p4) + let rate = (1 - r) / (1 - self.angleThresh) * self.viscosity + let mul = r1.mid(crossed).split(r2, ratio: rate) + let mul2 = r2.mid(crossed).split(r1, ratio: rate) + path.addQuadCurve(to: p4, controlPoint: mul) + path.addLine(to: p3) + path.addQuadCurve(to: p2, controlPoint: mul2) + } + } + return nil + } + + private func splitPath(circle: LiquittableCircle, other: LiquittableCircle, ratio: CGFloat) -> [UIBezierPath] { + let (p1, p2) = circleConnectedPoint(circle: circle, other: other, angle: CGMath.degToRad(60)) + let (p3, p4) = circleConnectedPoint(circle: other, other: circle, angle: CGMath.degToRad(60)) + + if let crossed = CGPoint.intersection(p1, to: p3, from2: p2, to2: p4) { + let (d1, _) = self.circleConnectedPoint(circle: circle, other: other, angle: 0) + let (d2, _) = self.circleConnectedPoint(circle: other, other: circle, angle: 0) + let r = (ratio - ConnectThresh) / (angleThresh - ConnectThresh) + + let a1 = d2.split(crossed, ratio: (r * r)) + let part = withBezier { path in + path.move(to: p1) + path.addQuadCurve(to: p2, controlPoint: a1) + } + let a2 = d1.split(crossed, ratio: (r * r)) + let part2 = withBezier { path in + path.move(to: p3) + path.addQuadCurve(to: p4, controlPoint: a2) + } + return [part, part2] + } + return [] + } + + private func circleRatio(circle: LiquittableCircle, other: LiquittableCircle) -> CGFloat { + let distance = other.center.minus(circle.center).length() + let ratio = 1.0 - (distance - radiusThresh) / (circle.radius + other.radius + radiusThresh) + return min(max(ratio, 0.0), 1.0) + } + + func isConnected(circle: LiquittableCircle, other: LiquittableCircle) -> Bool { + let distance = circle.center.minus(other.center).length() + return distance - circle.radius - other.radius < radiusThresh + } + + +} diff --git a/LiquidButton/Classes/UIColorEx.swift b/LiquidButton/Classes/UIColorEx.swift new file mode 100644 index 0000000..e45a305 --- /dev/null +++ b/LiquidButton/Classes/UIColorEx.swift @@ -0,0 +1,54 @@ +// +// UIColorEx.swift +// LiquidLoading +// +// Created by Takuma Yoshida on 2015/08/21. +// Copyright (c) 2015年 yoavlt. All rights reserved. +// + +import Foundation +import UIKit + +extension UIColor { + + var redC: CGFloat { + get { + let components = self.cgColor.components + return components![0] + } + } + + var greenC: CGFloat { + get { + let components = self.cgColor.components + return components![1] + } + } + + var blueC: CGFloat { + get { + let components = self.cgColor.components + return components![2] + } + } + + var alpha: CGFloat { + get { + return self.cgColor.alpha + } + } + + func alpha(_ alpha: CGFloat) -> UIColor { + return UIColor(red: self.redC, green: self.greenC, blue: self.blueC, alpha: alpha) + } + + func white(_ scale: CGFloat) -> UIColor { + return UIColor( + red: self.redC + (1.0 - self.redC) * scale, + green: self.greenC + (1.0 - self.greenC) * scale, + blue: self.blueC + (1.0 - self.blueC) * scale, + alpha: 1.0 + ) + } + +}