diff --git a/Demo/colored_example.gif b/Demo/colored_example.gif new file mode 100644 index 0000000..f786adc Binary files /dev/null and b/Demo/colored_example.gif differ diff --git a/Example/LiquidFloatingActionButton.xcodeproj/project.pbxproj b/Example/LiquidFloatingActionButton.xcodeproj/project.pbxproj index f430e07..99f3a24 100644 --- a/Example/LiquidFloatingActionButton.xcodeproj/project.pbxproj +++ b/Example/LiquidFloatingActionButton.xcodeproj/project.pbxproj @@ -7,8 +7,8 @@ objects = { /* Begin PBXBuildFile section */ - 1DBCE28963DAD945FFD48B50 /* Pods_LiquidFloatingActionButton_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C3A86F9C536AF0FF2200223 /* Pods_LiquidFloatingActionButton_Example.framework */; }; - 49A475E961E793F7AF7E4ED6 /* Pods_LiquidFloatingActionButton_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 919BDD2D3636894AF8DB602C /* Pods_LiquidFloatingActionButton_Tests.framework */; }; + 20A615CBC395DA2FC6965BB9 /* Pods_LiquidFloatingActionButton_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 676DDE36E7D6ED6AB652A3FC /* Pods_LiquidFloatingActionButton_Tests.framework */; }; + 4A74E0FE474C72297A600B67 /* Pods_LiquidFloatingActionButton_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 774267DED010DFEBC398D44C /* Pods_LiquidFloatingActionButton_Example.framework */; }; 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; @@ -29,8 +29,8 @@ /* Begin PBXFileReference section */ 0A7C45BCBE46088A6384E50D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; - 2FFD9BFA534CFE054B05EADD /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig"; sourceTree = ""; }; - 34499971252776E4550A85C2 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig"; sourceTree = ""; }; + 0F7E7FC5246A093F646144E2 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig"; sourceTree = ""; }; + 4E8D9BBA96797E6E98FBF3E4 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig"; sourceTree = ""; }; 607FACD01AFB9204008FA782 /* LiquidFloatingActionButton_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LiquidFloatingActionButton_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -41,12 +41,12 @@ 607FACE51AFB9204008FA782 /* LiquidFloatingActionButton_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LiquidFloatingActionButton_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 = ""; }; - 6C3A86F9C536AF0FF2200223 /* Pods_LiquidFloatingActionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6C45C93E70CA4AE7D6FF98F1 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig"; sourceTree = ""; }; + 676DDE36E7D6ED6AB652A3FC /* Pods_LiquidFloatingActionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7544384970EC4D04EEF18E55 /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig"; sourceTree = ""; }; + 774267DED010DFEBC398D44C /* Pods_LiquidFloatingActionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 84FEE2CA65F767D51D7E5BC9 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 919BDD2D3636894AF8DB602C /* Pods_LiquidFloatingActionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8646031E07CFB5973A85169A /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig"; sourceTree = ""; }; E7B89F2AA109C6E37EA6ABDB /* LiquidFloatingActionButton.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LiquidFloatingActionButton.podspec; path = ../LiquidFloatingActionButton.podspec; sourceTree = ""; }; - EE0CB752BBF5F0D0BD0782BB /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LiquidFloatingActionButton_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1DBCE28963DAD945FFD48B50 /* Pods_LiquidFloatingActionButton_Example.framework in Frameworks */, + 4A74E0FE474C72297A600B67 /* Pods_LiquidFloatingActionButton_Example.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -62,20 +62,29 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 49A475E961E793F7AF7E4ED6 /* Pods_LiquidFloatingActionButton_Tests.framework in Frameworks */, + 20A615CBC395DA2FC6965BB9 /* Pods_LiquidFloatingActionButton_Tests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 18D97BE077AD2627163571A0 /* Pods */ = { + 0523CDEECB49717089A712FE /* Frameworks */ = { isa = PBXGroup; children = ( - 2FFD9BFA534CFE054B05EADD /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */, - 6C45C93E70CA4AE7D6FF98F1 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */, - 34499971252776E4550A85C2 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */, - EE0CB752BBF5F0D0BD0782BB /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */, + 774267DED010DFEBC398D44C /* Pods_LiquidFloatingActionButton_Example.framework */, + 676DDE36E7D6ED6AB652A3FC /* Pods_LiquidFloatingActionButton_Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5120A30F02F4C14242EB17F0 /* Pods */ = { + isa = PBXGroup; + children = ( + 7544384970EC4D04EEF18E55 /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */, + 0F7E7FC5246A093F646144E2 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */, + 4E8D9BBA96797E6E98FBF3E4 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */, + 8646031E07CFB5973A85169A /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -87,8 +96,8 @@ 607FACD21AFB9204008FA782 /* Example for LiquidFloatingActionButton */, 607FACE81AFB9204008FA782 /* Tests */, 607FACD11AFB9204008FA782 /* Products */, - 18D97BE077AD2627163571A0 /* Pods */, - EFC8F3C7198CEC45A1A27C06 /* Frameworks */, + 5120A30F02F4C14242EB17F0 /* Pods */, + 0523CDEECB49717089A712FE /* Frameworks */, ); sourceTree = ""; }; @@ -150,15 +159,6 @@ name = "Podspec Metadata"; sourceTree = ""; }; - EFC8F3C7198CEC45A1A27C06 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6C3A86F9C536AF0FF2200223 /* Pods_LiquidFloatingActionButton_Example.framework */, - 919BDD2D3636894AF8DB602C /* Pods_LiquidFloatingActionButton_Tests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -166,12 +166,12 @@ isa = PBXNativeTarget; buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton_Example" */; buildPhases = ( - 9005C960F5FF53205A4537B5 /* Check Pods Manifest.lock */, + A12519884D535E8C14C07949 /* [CP] Check Pods Manifest.lock */, 607FACCC1AFB9204008FA782 /* Sources */, 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, - 1115E3E00032A33C9C0DFF38 /* Embed Pods Frameworks */, - 91D07DB5AC1B3588361E14B1 /* Copy Pods Resources */, + 66F99919ACD3F386814BB452 /* [CP] Embed Pods Frameworks */, + A2EA3849E353196C377A4869 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -186,12 +186,12 @@ isa = PBXNativeTarget; buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton_Tests" */; buildPhases = ( - 23EC3336397C78AB2DC1C484 /* Check Pods Manifest.lock */, + 11801ACFCF6933D32461E3BE /* [CP] Check Pods Manifest.lock */, 607FACE11AFB9204008FA782 /* Sources */, 607FACE21AFB9204008FA782 /* Frameworks */, 607FACE31AFB9204008FA782 /* Resources */, - 7C65DA408226155A1317428A /* Embed Pods Frameworks */, - 12DDBEB12E77962ED088CEC8 /* Copy Pods Resources */, + C81DC5CC03F0BAF509432EEE /* [CP] Embed Pods Frameworks */, + C8426000DE3464F7C18C2CC3 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -211,14 +211,16 @@ attributes = { LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + LastSwiftMigration = 0800; }; 607FACE41AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; + LastSwiftMigration = 0800; TestTargetID = 607FACCF1AFB9204008FA782; }; }; @@ -263,94 +265,94 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 1115E3E00032A33C9C0DFF38 /* Embed Pods Frameworks */ = { + 11801ACFCF6933D32461E3BE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Embed Pods Frameworks"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - 12DDBEB12E77962ED088CEC8 /* Copy Pods Resources */ = { + 66F99919ACD3F386814BB452 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 23EC3336397C78AB2DC1C484 /* Check Pods Manifest.lock */ = { + A12519884D535E8C14C07949 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - 7C65DA408226155A1317428A /* Embed Pods Frameworks */ = { + A2EA3849E353196C377A4869 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 9005C960F5FF53205A4537B5 /* Check Pods Manifest.lock */ = { + C81DC5CC03F0BAF509432EEE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 91D07DB5AC1B3588361E14B1 /* Copy Pods Resources */ = { + C8426000DE3464F7C18C2CC3 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -416,8 +418,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -461,8 +465,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -481,45 +487,49 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; VALIDATE_PRODUCT = YES; }; name = Release; }; 607FACF01AFB9204008FA782 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2FFD9BFA534CFE054B05EADD /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */; + baseConfigurationReference = 7544384970EC4D04EEF18E55 /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LiquidFloatingActionButton/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Debug; }; 607FACF11AFB9204008FA782 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6C45C93E70CA4AE7D6FF98F1 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */; + baseConfigurationReference = 0F7E7FC5246A093F646144E2 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LiquidFloatingActionButton/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Release; }; 607FACF31AFB9204008FA782 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 34499971252776E4550A85C2 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */; + baseConfigurationReference = 4E8D9BBA96797E6E98FBF3E4 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", @@ -528,23 +538,22 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LiquidFloatingActionButton_Example.app/LiquidFloatingActionButton_Example"; }; name = Debug; }; 607FACF41AFB9204008FA782 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EE0CB752BBF5F0D0BD0782BB /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */; + baseConfigurationReference = 8646031E07CFB5973A85169A /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); INFOPLIST_FILE = Tests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LiquidFloatingActionButton_Example.app/LiquidFloatingActionButton_Example"; }; name = Release; diff --git a/Example/LiquidFloatingActionButton.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton-Example.xcscheme b/Example/LiquidFloatingActionButton.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton-Example.xcscheme index c3f6f4f..1a71999 100644 --- a/Example/LiquidFloatingActionButton.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton-Example.xcscheme +++ b/Example/LiquidFloatingActionButton.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton-Example.xcscheme @@ -1,6 +1,6 @@ Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } - func applicationWillResignActive(application: UIApplication) { + func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - func applicationDidEnterBackground(application: UIApplication) { + func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - func applicationWillEnterForeground(application: UIApplication) { + func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - func applicationDidBecomeActive(application: UIApplication) { + func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - func applicationWillTerminate(application: UIApplication) { + func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } diff --git a/Example/LiquidFloatingActionButton/Base.lproj/Main.storyboard b/Example/LiquidFloatingActionButton/Base.lproj/Main.storyboard index e061a38..c443e36 100644 --- a/Example/LiquidFloatingActionButton/Base.lproj/Main.storyboard +++ b/Example/LiquidFloatingActionButton/Base.lproj/Main.storyboard @@ -1,7 +1,8 @@ - + - + + diff --git a/Example/LiquidFloatingActionButton/ViewController.swift b/Example/LiquidFloatingActionButton/ViewController.swift index 42e09af..f8fd90f 100644 --- a/Example/LiquidFloatingActionButton/ViewController.swift +++ b/Example/LiquidFloatingActionButton/ViewController.swift @@ -10,7 +10,7 @@ import UIKit import SnapKit import LiquidFloatingActionButton -public class CustomCell : LiquidFloatingCell { +open class CustomCell : LiquidFloatingCell { var name: String = "sample" init(icon: UIImage, name: String) { @@ -22,28 +22,28 @@ public class CustomCell : LiquidFloatingCell { fatalError("init(coder:) has not been implemented") } - public override func setupView(view: UIView) { + open override func setupView(_ view: UIView) { super.setupView(view) let label = UILabel() label.text = name - label.textColor = UIColor.whiteColor() + label.textColor = UIColor.white label.font = UIFont(name: "Helvetica-Neue", size: 12) addSubview(label) - label.snp_makeConstraints { make in + label.snp.makeConstraints({ make in make.left.equalTo(self).offset(-80) make.width.equalTo(75) make.top.height.equalTo(self) - } + }) } } -public class CustomDrawingActionButton: LiquidFloatingActionButton { +open class CustomDrawingActionButton: LiquidFloatingActionButton { - override public func createPlusLayer(frame: CGRect) -> CAShapeLayer { + override open func createPlusLayer(_ frame: CGRect) -> CAShapeLayer { let plusLayer = CAShapeLayer() plusLayer.lineCap = kCALineCapRound - plusLayer.strokeColor = UIColor.whiteColor().CGColor + plusLayer.strokeColor = UIColor.white.cgColor plusLayer.lineWidth = 3.0 let w = frame.width @@ -57,11 +57,11 @@ public class CustomDrawingActionButton: LiquidFloatingActionButton { let path = UIBezierPath() for (start, end) in points { - path.moveToPoint(start) - path.addLineToPoint(end) + path.move(to: start) + path.addLine(to: end) } - plusLayer.path = path.CGPath + plusLayer.path = path.cgPath return plusLayer } @@ -93,18 +93,25 @@ class ViewController: UIViewController, LiquidFloatingActionButtonDataSource, Li let cell = CustomCell(icon: UIImage(named: iconName)!, name: iconName) return cell } + + // Insert cell with color customization! cells.append(cellFactory("ic_cloud")) + cells.last?.color = UIColor.red // Set cell to red color + cells.append(customCellFactory("ic_system")) + cells.last?.color = UIColor.blue // Set Cell to blue color + cells.append(cellFactory("ic_place")) + // Cell becomes the button's color! let floatingFrame = CGRect(x: self.view.frame.width - 56 - 16, y: self.view.frame.height - 56 - 16, width: 56, height: 56) - let bottomRightButton = createButton(floatingFrame, .Up) + let bottomRightButton = createButton(floatingFrame, .up) let image = UIImage(named: "ic_art") bottomRightButton.image = image let floatingFrame2 = CGRect(x: 16, y: 16, width: 56, height: 56) - let topLeftButton = createButton(floatingFrame2, .Down) + let topLeftButton = createButton(floatingFrame2, .down) self.view.addSubview(bottomRightButton) self.view.addSubview(topLeftButton) @@ -115,17 +122,17 @@ class ViewController: UIViewController, LiquidFloatingActionButtonDataSource, Li // Dispose of any resources that can be recreated. } - func numberOfCells(liquidFloatingActionButton: LiquidFloatingActionButton) -> Int { + func numberOfCells(_ liquidFloatingActionButton: LiquidFloatingActionButton) -> Int { return cells.count } - func cellForIndex(index: Int) -> LiquidFloatingCell { + func cellForIndex(_ index: Int) -> LiquidFloatingCell { return cells[index] } - func liquidFloatingActionButton(liquidFloatingActionButton: LiquidFloatingActionButton, didSelectItemAtIndex index: Int) { + func liquidFloatingActionButton(_ liquidFloatingActionButton: LiquidFloatingActionButton, didSelectItemAtIndex index: Int) { print("did Tapped! \(index)") liquidFloatingActionButton.close() } -} \ No newline at end of file +} diff --git a/Example/Podfile b/Example/Podfile index 9c77528..c4910c3 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,12 +1,12 @@ source 'https://github.com/CocoaPods/Specs.git' use_frameworks! -target 'LiquidFloatingActionButton_Example', :exclusive => true do +target 'LiquidFloatingActionButton_Example' do pod "LiquidFloatingActionButton", :path => "../" pod "SnapKit" end -target 'LiquidFloatingActionButton_Tests', :exclusive => true do +target 'LiquidFloatingActionButton_Tests' do pod "LiquidFloatingActionButton", :path => "../" diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 594e647..bf4574d 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,6 +1,6 @@ PODS: - - LiquidFloatingActionButton (0.1.1) - - SnapKit (0.20.0) + - LiquidFloatingActionButton (0.2.0) + - SnapKit (3.0.1) DEPENDENCIES: - LiquidFloatingActionButton (from `../`) @@ -11,7 +11,9 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - LiquidFloatingActionButton: dcdae1e59eb07eccbf60c027001a4d6731c345c9 - SnapKit: 5fce3c1bbbf1fbd31de9aa92f33eb9fa03f15650 + LiquidFloatingActionButton: 29795cd474e42f44766f0d7073d573442cb989a8 + SnapKit: f818b8326d45b4e1c777d0ab27b5c0a3624bfdeb -COCOAPODS: 0.39.0 +PODFILE CHECKSUM: d32e84aa2d52a9e8dbba10e8de937cda2a823e0d + +COCOAPODS: 1.1.0.rc.2 diff --git a/Example/Pods/Local Podspecs/LiquidFloatingActionButton.podspec.json b/Example/Pods/Local Podspecs/LiquidFloatingActionButton.podspec.json index dc8ed83..69d48c2 100644 --- a/Example/Pods/Local Podspecs/LiquidFloatingActionButton.podspec.json +++ b/Example/Pods/Local Podspecs/LiquidFloatingActionButton.podspec.json @@ -1,25 +1,20 @@ { "name": "LiquidFloatingActionButton", - "version": "0.1.1", + "version": "0.2.0", "summary": "Material Design Floating Action Button in liquid state", - "description": "Material Design Floating Action Button in liquid state inspired by http://www.materialup.com/posts/material-in-a-liquid-state", - "homepage": "https://github.com/yoavlt/LiquidFloatingActionButton", + "description": "Material Design Floating Action Button in liquid state inspired by http://www.materialup.com/posts/material-in-a-liquid-state\nForked from: https://github.com/yoavlt/LiquidFloatingActionButton", + "homepage": "https://github.com/shotaroikeda/LiquidFloatingActionButton", "license": "MIT", "authors": { - "Takuma Yoshida": "yoa.jmpr.w@gmail.com" + "Shotaro Ikeda": "ikeda.shot@gmail.com" }, "source": { - "git": "https://github.com/yoavlt/LiquidFloatingActionButton.git", - "tag": "0.1.1" + "git": "https://github.com/shotaroikeda/LiquidFloatingActionButton.git", + "tag": "0.2.0" }, "platforms": { "ios": "8.0" }, "requires_arc": true, - "source_files": "Pod/Classes/**/*", - "resource_bundles": { - "LiquidFloatingActionButton": [ - "Pod/Assets/*.png" - ] - } + "source_files": "Pod/Classes/**/*" } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 594e647..bf4574d 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,6 +1,6 @@ PODS: - - LiquidFloatingActionButton (0.1.1) - - SnapKit (0.20.0) + - LiquidFloatingActionButton (0.2.0) + - SnapKit (3.0.1) DEPENDENCIES: - LiquidFloatingActionButton (from `../`) @@ -11,7 +11,9 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - LiquidFloatingActionButton: dcdae1e59eb07eccbf60c027001a4d6731c345c9 - SnapKit: 5fce3c1bbbf1fbd31de9aa92f33eb9fa03f15650 + LiquidFloatingActionButton: 29795cd474e42f44766f0d7073d573442cb989a8 + SnapKit: f818b8326d45b4e1c777d0ab27b5c0a3624bfdeb -COCOAPODS: 0.39.0 +PODFILE CHECKSUM: d32e84aa2d52a9e8dbba10e8de937cda2a823e0d + +COCOAPODS: 1.1.0.rc.2 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index c719edf..988e4eb 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,187 +7,236 @@ objects = { /* Begin PBXBuildFile section */ - 063AF3E3F6F2F42DFDE02296C4B454DE /* View+SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BB547CA6D4862CCE70A4B51F1EABAE /* View+SnapKit.swift */; }; - 12A25CB430ECAFDE828EACA52A4EA9B3 /* EdgeInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7C496DA4CA3F61B29BB063F74876C70 /* EdgeInsets.swift */; }; - 27265ED50FB0F70B0DC6CACFEBFEFEBB /* UIColorEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8D96BACF73B0930447045AF580F1F64 /* UIColorEx.swift */; }; - 2779506876997B329DBA24C5C89E0741 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E5EE3CDB090004C84E658BC83AEB7 /* SnapKit-dummy.m */; }; - 2FB98EB28FD690835891F30F8D410080 /* SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA1CFBED61FB63BBC905CD3AFEE402C /* SnapKit.swift */; }; - 2FD62186877ED8D79EB50BE978326AB7 /* LiquidUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691EE87C404B7D086624B5801982F43 /* LiquidUtil.swift */; }; - 3119F291AB6588F10BE54351505CD5FD /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92DD83C2BF9A16815558CBFACD79C938 /* ConstraintRelation.swift */; }; - 54218C3D297E6E992720394B1904DFA8 /* LiquidFloatingActionButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C7159C06470D006C424DDC8A1A60EB /* LiquidFloatingActionButton-dummy.m */; }; - 5D7F2067317C172EA89627DBE45044BF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; - 5FC1075233F230CAF3206BC8967896BF /* ViewController+SnapKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A877C5C14A8B495ECAB69BE839FFA44 /* ViewController+SnapKit.swift */; }; - 72042359B6606B6363E495430D780479 /* LiquidFloatingActionButton.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4A9330A77EB8489F3F2B7006FF342821 /* LiquidFloatingActionButton.bundle */; }; - 73A598302FF7775E6E0FBB231B416F61 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C745F502C842A223464EC61885F02BB /* Constraint.swift */; }; - 7C4A7782F2A3F28C5A5E5C751406E528 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; - 82D7A27B0B5695343FBA27D55E308716 /* LiquidFloatingActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83AC495A087C2EAF9CAAC87835CAA680 /* LiquidFloatingActionButton.swift */; }; - 880A142C73ADFAC66E12A00A6D461281 /* Pods-LiquidFloatingActionButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15F42031AA343001A7E2C8D3D69C9DE2 /* Pods-LiquidFloatingActionButton_Example-dummy.m */; }; - 8AE68AF11C742B3DFB12B8426C53FAE0 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEFB846E6A499B21514C1E298F56DE3B /* ConstraintAttributes.swift */; }; - 91A0B0D5F700489F625FA80CF9E414B2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; - 9A8FC8391975DEC4252F9E46559D9972 /* Pods-LiquidFloatingActionButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A759ED5E8ED2278F9D307ABD11FC5 /* Pods-LiquidFloatingActionButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A516196B52C6812BD20B203BA789924F /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = B869919EAC3B1E5EF05B0107B595C13C /* LayoutConstraint.swift */; }; - A63823259878C902D4734D9B3813BAC8 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415D45FAC3D162C8D3F9CFE592F79E42 /* Debugging.swift */; }; - ABEE259770118A74E19D8E6FFCC3B54D /* CGPointEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 369689EDAB3FAFC4E5BB39A93321BBFC /* CGPointEx.swift */; }; - B95FC4D5CA4A1AB1B9ACC0FB060B3DDF /* SimpleCircleLiquidEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B69218901BE4E025D721BBC5CC763A /* SimpleCircleLiquidEngine.swift */; }; - C4B49BC88CE5107F310F24520E2B936F /* LiquittableCircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAF44DB2E216127955F1E0FEF8213369 /* LiquittableCircle.swift */; }; - CA51F12534784E92F1EF5A82424E3F15 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 17ED37A4D4337C9AC445D07BA9E09051 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC6DC5A0FFFD9F4BB16D4B11F8769E6C /* ArrayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CAC4A98C58F1EBAF09C8E193E73E985 /* ArrayEx.swift */; }; - CD635561809D218A952928FCA3BC1B78 /* LiquidFloatingActionButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 824CA79EC009B18484863834998CC017 /* LiquidFloatingActionButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D77880C9B4B7875F4449AD5F3204981E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; - D78D1E3E56D3C6ADD05FE6E4A0330413 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3061A45F7542E986BCB23EBBD8AD4A13 /* ConstraintDescription.swift */; }; - DAB96FE2A0E1C3E225853B3CCF8FE4A5 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A03EFFB295211A70F01FAD48D41DF5F3 /* ConstraintMaker.swift */; }; - E9F9849609338D0B86CEBA5240071741 /* CGRectEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEAD485B9DC8B38EBDE94D6A091FDB6 /* CGRectEx.swift */; }; - EECDD5BD4ECE7607A35A00B5B7895396 /* Pods-LiquidFloatingActionButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97232F629F7FC2174E1BE76D76737706 /* Pods-LiquidFloatingActionButton_Tests-dummy.m */; }; - F8430257E5D9EBB43F60769434F04A42 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7ED5648C0C88C2BBB8B1737D3C811DF /* ConstraintItem.swift */; }; - FDA81DE249911CF48CB90527D57492D2 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FD568EC2ADE52671E9F40F5B7FE5D901 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03D37CD9914A34403CA5E7773D42702F /* Pods-LiquidFloatingActionButton_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15F42031AA343001A7E2C8D3D69C9DE2 /* Pods-LiquidFloatingActionButton_Example-dummy.m */; }; + 067A34DB72BA048934A4ACB8F865D499 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C807430C3A7B9A82E2DDD844C58759 /* ConstraintRelation.swift */; }; + 07C1582DE353E230C116FBBA55215D38 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A6167E299BA9862893D87DDBF170B70 /* ConstraintMaker.swift */; }; + 0C905D6D9629186A407EC43C7DEF7E66 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8ECEBD49CA569FC524CB77465180B6 /* ConstraintMakerEditable.swift */; }; + 156D6C46DF45A7803E62D7F023CD095A /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73878F9931EAA78C3DAAF7DDA048218E /* LayoutConstraint.swift */; }; + 222D303213262931EA317A1E0F6BAB38 /* UIColorEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8D96BACF73B0930447045AF580F1F64 /* UIColorEx.swift */; }; + 2A243039ECE25C22417777FADC30ED4B /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 446C79107F482F7B2D7E4061657DCA44 /* ConstraintLayoutGuideDSL.swift */; }; + 2C83799F09E1AA0516AB5DB90625639B /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CC7FF80150FA3840AD57BCE994C9FAB /* ConstraintLayoutSupportDSL.swift */; }; + 36F74146B8079D5E7A7D8309B0FF7565 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261BC3C65CE6EBBED920977848212F6F /* ConstraintMakerPriortizable.swift */; }; + 382A89C8A9966985B246A0297407D219 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041C7DFD4E40027278BABCCCD69743B2 /* ConstraintAttributes.swift */; }; + 3D41203B7B3855EA27D3E987D3EEB224 /* ArrayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CAC4A98C58F1EBAF09C8E193E73E985 /* ArrayEx.swift */; }; + 403679D690C81703CB583C940107CFD1 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 737B1700C2C19AD11C2872C1C46EC8D4 /* Debugging.swift */; }; + 40E154929C97169FF28608F168BAA648 /* Pods-LiquidFloatingActionButton_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A4A759ED5E8ED2278F9D307ABD11FC5 /* Pods-LiquidFloatingActionButton_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 42358D3ECCE5C55DBB5C84DB7CF83577 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BF4E341DC91F918DC3DD74CA4ADC22 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 455D1C85888DD5A8DEB3D728C891AB98 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8705AFD8FF18225FA8BB0228A69E72AA /* ConstraintMakerExtendable.swift */; }; + 472AE9D6E5530C4A22E40EAE13A2B2A0 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1BDEFD46348EE8C41DE053AEDBFD1B /* ConstraintOffsetTarget.swift */; }; + 4891FC70C29A87882CF967258A163202 /* UILayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4759EEB4180EAF3DA189AAE28199AC /* UILayoutGuide+Extensions.swift */; }; + 4944CA8FF8D31ABF8BFFEC2E46AE608D /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97F0138AE8EA08984375344610BE7E1E /* ConstraintPriorityTarget.swift */; }; + 4C19ED4C22D6B9808195702DB3990008 /* Pods-LiquidFloatingActionButton_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97232F629F7FC2174E1BE76D76737706 /* Pods-LiquidFloatingActionButton_Tests-dummy.m */; }; + 4CA7418B0FCBC3D61E2A0393244E1BF1 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9319AF949935BC0602093E0830E8B10 /* ConstraintConstantTarget.swift */; }; + 558D7CB2FB7F2C0FB7BFA2BCF7217EAA /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B90EF7CA55AE01CE50EAF5C3C574CDD /* Constraint.swift */; }; + 56703A4074D4D2B486FDD90CE6BA23D8 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F675DF8551ECAD72F0C6D96084C6DD4 /* SnapKit-dummy.m */; }; + 5A82C9E223C33B72D27F16541E58440A /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11295210FBB75091BE22529081A2720 /* ConstraintView+Extensions.swift */; }; + 5D47B5F7F9B93DB896CFAEDA03CCB522 /* LiquidFloatingActionButton-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C7159C06470D006C424DDC8A1A60EB /* LiquidFloatingActionButton-dummy.m */; }; + 6862F5F9E2EA9D362151AC37E55E276D /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BEA23F4393572EE30AED50A651CD185 /* ConstraintItem.swift */; }; + 6E328286AD7C502EA27A22A48B46157C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + 70A374969C87173198D8D4B6111ECB6E /* LiquittableCircle.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAF44DB2E216127955F1E0FEF8213369 /* LiquittableCircle.swift */; }; + 7A5DCCC054F4E24631ADC1E3C3A70343 /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 212E2771F1CD458D21A0FB3CA1C914F3 /* ConstraintLayoutSupport.swift */; }; + 7E538EF481F898874DF94F0F8CBC5D2C /* LiquidFloatingActionButton-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 824CA79EC009B18484863834998CC017 /* LiquidFloatingActionButton-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8217E7706802DF39D8369FD61A75F997 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B78113584563565B18CD0248D9D0A93 /* ConstraintViewDSL.swift */; }; + 83D17E8B5FF0BEE6E212CBBB98FCCF34 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0729DC38B02A17974FD7A7238FCB1836 /* ConstraintMultiplierTarget.swift */; }; + 882DD384A96A03DE16B115C0AA801A8F /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8AA583273C076DD4A1EBAFDDA0E89A8 /* ConstraintMakerFinalizable.swift */; }; + 8CAF98A2AD7189203548CDDA44E3B881 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FE15693153A62AC79B129BA5FFB7C3D /* ConstraintDSL.swift */; }; + 8D10C418C90EE34F5BA2C22019612D80 /* CGRectEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEAD485B9DC8B38EBDE94D6A091FDB6 /* CGRectEx.swift */; }; + 9038175ADF2AAA447C93DC65AF74C205 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = E855200DC6085FF07EBD87301AD370C9 /* ConstraintInsets.swift */; }; + 903FE6138690401881CED819779A73AC /* CGPointEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 369689EDAB3FAFC4E5BB39A93321BBFC /* CGPointEx.swift */; }; + 9839FC7BD136D98C4786DB72E56B3E5F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + A0E68453F95B1D24E992A71FFE5C9FB2 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2B728DCF7E9F88008827314C2AE823 /* ConstraintInsetTarget.swift */; }; + B21BD823B02D2B87FD9189869502FCD5 /* LiquidFloatingActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83AC495A087C2EAF9CAAC87835CAA680 /* LiquidFloatingActionButton.swift */; }; + B4BFAED2D1CBD8A95C1B7F00F33D94AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + C74E7F220185731302C173547511274A /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB21FA0A2E5B45AB133215CC241236D /* UILayoutSupport+Extensions.swift */; }; + CB9BE415254E64439620E55C08536186 /* SimpleCircleLiquidEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B69218901BE4E025D721BBC5CC763A /* SimpleCircleLiquidEngine.swift */; }; + DA0B4783CA61D670415069AE79CA8BE1 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 597734A7EDE6E13F6D1939A7C7373CD1 /* ConstraintConfig.swift */; }; + DFA8073CB687441FF93505CB02432936 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB70FEBA9EF66CAAA461E6F3F819716B /* ConstraintDescription.swift */; }; + E7D4AEB7F3C4AB23FEBA14AD82BB31E5 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBCF77FFA89397B4F19B5CD8A7BDB0A3 /* ConstraintView.swift */; }; + EAC4522ECD9EDE06632C34321215099E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */; }; + EAEFA188CC103359C4AE68AC11F8A844 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FD568EC2ADE52671E9F40F5B7FE5D901 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3132422696A8E14ED71162F16F900B0 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87CCF4DB7EFBDC070B92BFC0BC0D2C8C /* ConstraintMakerRelatable.swift */; }; + F8B99B2534B76BA3A39D5787434BA16E /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 813C2A5263E149C889A2DF40FFDD89BA /* ConstraintRelatableTarget.swift */; }; + FB4B87C1866264B4C63C18C6D89EC703 /* LiquidUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691EE87C404B7D086624B5801982F43 /* LiquidUtil.swift */; }; + FFFBAAED7A3ADC328B1EE0193BF98138 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525F7008B3760076D71FE29C0859BDC /* ConstraintLayoutGuide.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 07C6F3DDEBB62F1F5FE9FCDBE877F723 /* PBXContainerItemProxy */ = { + 10B0CFDA9E4883AADDB4595153399A95 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = ECB4143196184B0E0EA02182DB2B9CCA; + remoteGlobalIDString = 4BCE15B65BE1423E31A139A48360119E; remoteInfo = LiquidFloatingActionButton; }; - 241D7E67C3518A9E632A0EDFC7D211A4 /* PBXContainerItemProxy */ = { + 5925C73B578B569902B6E043D675652A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 2E4A37C88D68A62EA5C1BC7A2A4D19AE; - remoteInfo = "LiquidFloatingActionButton-LiquidFloatingActionButton"; + remoteGlobalIDString = 4BCE15B65BE1423E31A139A48360119E; + remoteInfo = LiquidFloatingActionButton; }; - 39AC163D279BBF45FED49635CDDB4483 /* PBXContainerItemProxy */ = { + F37E0413588FEF57B185C90A28936627 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 89A8B55ECFFB1317E22EBE8135CC265C; + remoteGlobalIDString = 387CBFD0CECEC9E8DA816C353D8AA44B; remoteInfo = SnapKit; }; - 79D8037643A4A5679CCDDD90A6DE8307 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = ECB4143196184B0E0EA02182DB2B9CCA; - remoteInfo = LiquidFloatingActionButton; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 041C7DFD4E40027278BABCCCD69743B2 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LiquidFloatingActionButton.xcconfig; sourceTree = ""; }; - 079E5EE3CDB090004C84E658BC83AEB7 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - 086E751CB212483A904FA8480CB5B125 /* Pods_LiquidFloatingActionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0729DC38B02A17974FD7A7238FCB1836 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + 0AB21FA0A2E5B45AB133215CC241236D /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; + 14426FA5248A96FBC6A531879E24CFA5 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; 15C6FC5FD383058121E6098617B98C67 /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidFloatingActionButton_Example.debug.xcconfig"; sourceTree = ""; }; 15F42031AA343001A7E2C8D3D69C9DE2 /* Pods-LiquidFloatingActionButton_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LiquidFloatingActionButton_Example-dummy.m"; sourceTree = ""; }; - 17ED37A4D4337C9AC445D07BA9E09051 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; 1A4A759ED5E8ED2278F9D307ABD11FC5 /* Pods-LiquidFloatingActionButton_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LiquidFloatingActionButton_Example-umbrella.h"; sourceTree = ""; }; - 1A877C5C14A8B495ECAB69BE839FFA44 /* ViewController+SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ViewController+SnapKit.swift"; path = "Source/ViewController+SnapKit.swift"; sourceTree = ""; }; - 1EA1CFBED61FB63BBC905CD3AFEE402C /* SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapKit.swift; path = Source/SnapKit.swift; sourceTree = ""; }; - 3061A45F7542E986BCB23EBBD8AD4A13 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; - 31410DF950E233991ABE00041EF20709 /* LiquidFloatingActionButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LiquidFloatingActionButton.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C56ABE3696B5A7C30A744B23F17B774 /* Pods_LiquidFloatingActionButton_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F2B728DCF7E9F88008827314C2AE823 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; + 212E2771F1CD458D21A0FB3CA1C914F3 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; + 261BC3C65CE6EBBED920977848212F6F /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; 32A2AF2E2F4B1499E450931CC0CAD202 /* Pods-LiquidFloatingActionButton_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-LiquidFloatingActionButton_Example.modulemap"; sourceTree = ""; }; 34A4795691704A615AA138BF95042DC5 /* Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown"; sourceTree = ""; }; 369689EDAB3FAFC4E5BB39A93321BBFC /* CGPointEx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CGPointEx.swift; sourceTree = ""; }; 37A83F173235565EDE9A076A15250F07 /* Pods-LiquidFloatingActionButton_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LiquidFloatingActionButton_Example-resources.sh"; sourceTree = ""; }; - 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 415D45FAC3D162C8D3F9CFE592F79E42 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; - 495929FB6F57FC07CF2233838AD92579 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - 4A9330A77EB8489F3F2B7006FF342821 /* LiquidFloatingActionButton.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LiquidFloatingActionButton.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A6167E299BA9862893D87DDBF170B70 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; + 3B90EF7CA55AE01CE50EAF5C3C574CDD /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; + 3FE15693153A62AC79B129BA5FFB7C3D /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; + 446C79107F482F7B2D7E4061657DCA44 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; 4EB840C0FCFA128ECC2A9B932415D6A8 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidFloatingActionButton_Example.release.xcconfig"; sourceTree = ""; }; - 55BB547CA6D4862CCE70A4B51F1EABAE /* View+SnapKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+SnapKit.swift"; path = "Source/View+SnapKit.swift"; sourceTree = ""; }; - 56B1FCA085C2AC4CDCEB52E3588F26EB /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SnapKit.modulemap; sourceTree = ""; }; + 50BF4E341DC91F918DC3DD74CA4ADC22 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; 58C7159C06470D006C424DDC8A1A60EB /* LiquidFloatingActionButton-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LiquidFloatingActionButton-dummy.m"; sourceTree = ""; }; + 597734A7EDE6E13F6D1939A7C7373CD1 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; 5B850A0AE5BE721D248F258FB455C96E /* LiquidFloatingActionButton-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LiquidFloatingActionButton-prefix.pch"; sourceTree = ""; }; 63AA079CA68C8594DE2EFCEECD70391B /* Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist"; sourceTree = ""; }; 6BEAD485B9DC8B38EBDE94D6A091FDB6 /* CGRectEx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CGRectEx.swift; sourceTree = ""; }; + 6CC7FF80150FA3840AD57BCE994C9FAB /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; 70722508FEFCEA523F7B8F66D9DDF4F5 /* LiquidFloatingActionButton.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = LiquidFloatingActionButton.modulemap; sourceTree = ""; }; + 70791619EB473F8BD49DC7B26F2768A0 /* Pods_LiquidFloatingActionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 737B1700C2C19AD11C2872C1C46EC8D4 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; + 73878F9931EAA78C3DAAF7DDA048218E /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; + 7B4759EEB4180EAF3DA189AAE28199AC /* UILayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutGuide+Extensions.swift"; path = "Source/UILayoutGuide+Extensions.swift"; sourceTree = ""; }; 7BD5E598A90E9B5D7F5BE26DD5C7B6D6 /* Pods-LiquidFloatingActionButton_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LiquidFloatingActionButton_Tests-resources.sh"; sourceTree = ""; }; + 7BEA23F4393572EE30AED50A651CD185 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; + 813C2A5263E149C889A2DF40FFDD89BA /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; 824CA79EC009B18484863834998CC017 /* LiquidFloatingActionButton-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LiquidFloatingActionButton-umbrella.h"; sourceTree = ""; }; 82BC29399E8CB5DE4082F0C18B2BA3DC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 83AC495A087C2EAF9CAAC87835CAA680 /* LiquidFloatingActionButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiquidFloatingActionButton.swift; sourceTree = ""; }; + 8705AFD8FF18225FA8BB0228A69E72AA /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; + 87CCF4DB7EFBDC070B92BFC0BC0D2C8C /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; + 8B78113584563565B18CD0248D9D0A93 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; 8CAC4A98C58F1EBAF09C8E193E73E985 /* ArrayEx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ArrayEx.swift; sourceTree = ""; }; 8DB80E76EE113421A98CB8EE23DE90D4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8EF67744D713AB87F9A34356FCB4C593 /* Pods-LiquidFloatingActionButton_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-LiquidFloatingActionButton_Tests.modulemap"; sourceTree = ""; }; - 90D8599FCFCA98DB19D3DE0AD81D9CD6 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; - 92DD83C2BF9A16815558CBFACD79C938 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; + 9231BEA6AC185B3FCBFD27ACB63CD892 /* LiquidFloatingActionButton.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LiquidFloatingActionButton.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 96F405472686341EFEEAB4A3B7E44B87 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 97232F629F7FC2174E1BE76D76737706 /* Pods-LiquidFloatingActionButton_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-LiquidFloatingActionButton_Tests-dummy.m"; sourceTree = ""; }; + 97F0138AE8EA08984375344610BE7E1E /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; 9B73872B15E9C56304335676CC951C90 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidFloatingActionButton_Tests.debug.xcconfig"; sourceTree = ""; }; - 9C745F502C842A223464EC61885F02BB /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; - A03EFFB295211A70F01FAD48D41DF5F3 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; + 9F675DF8551ECAD72F0C6D96084C6DD4 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + 9F8ECEBD49CA569FC524CB77465180B6 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; A206D3FB01DAFF8C15F21FB01DFFCE5C /* Pods-LiquidFloatingActionButton_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LiquidFloatingActionButton_Example-frameworks.sh"; sourceTree = ""; }; - A7C496DA4CA3F61B29BB063F74876C70 /* EdgeInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EdgeInsets.swift; path = Source/EdgeInsets.swift; sourceTree = ""; }; - A804ABA92EC1DA52844E140917F08DF4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A8D96BACF73B0930447045AF580F1F64 /* UIColorEx.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UIColorEx.swift; sourceTree = ""; }; AA63D17174A63F13D3434AAB04CB95CD /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-LiquidFloatingActionButton_Tests.release.xcconfig"; sourceTree = ""; }; + AF1BDEFD46348EE8C41DE053AEDBFD1B /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; + B525F7008B3760076D71FE29C0859BDC /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; + B7D4645BD3C0100FB7E1B4A6FDC96E0B /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SnapKit.modulemap; sourceTree = ""; }; B80DBE465AE8ED339A23BA7027E83E9C /* Pods-LiquidFloatingActionButton_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-LiquidFloatingActionButton_Example-acknowledgements.plist"; sourceTree = ""; }; - B869919EAC3B1E5EF05B0107B595C13C /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; BAF44DB2E216127955F1E0FEF8213369 /* LiquittableCircle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiquittableCircle.swift; sourceTree = ""; }; + C113B9855019081B47BCB0011553CB7B /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C4C807430C3A7B9A82E2DDD844C58759 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; + CA274E8C59BA433F4975D535FA594EFA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CB70FEBA9EF66CAAA461E6F3F819716B /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; D2E296184E24EBA83C604214BE7B30AF /* Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown"; sourceTree = ""; }; D691EE87C404B7D086624B5801982F43 /* LiquidUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiquidUtil.swift; sourceTree = ""; }; - DEFB846E6A499B21514C1E298F56DE3B /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; + D8AA583273C076DD4A1EBAFDDA0E89A8 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; + E11295210FBB75091BE22529081A2720 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; E365F5D85C8B589E45B7CA5165A49929 /* Pods-LiquidFloatingActionButton_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-LiquidFloatingActionButton_Tests-frameworks.sh"; sourceTree = ""; }; E3B69218901BE4E025D721BBC5CC763A /* SimpleCircleLiquidEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimpleCircleLiquidEngine.swift; sourceTree = ""; }; - E7ED5648C0C88C2BBB8B1737D3C811DF /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; - E830ACF61E27A06FCCA26909BF0C8F54 /* Pods_LiquidFloatingActionButton_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LiquidFloatingActionButton_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E9A5015EB0DACCD8DC713FB792DD43C5 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E855200DC6085FF07EBD87301AD370C9 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; + E885DC7A2C93B352F3CCBAF6C4F30F7F /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; + EBCF77FFA89397B4F19B5CD8A7BDB0A3 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; + F9319AF949935BC0602093E0830E8B10 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; FD568EC2ADE52671E9F40F5B7FE5D901 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-LiquidFloatingActionButton_Tests-umbrella.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 00C831C3AB0DA859DD57545BC7D29E7D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D77880C9B4B7875F4449AD5F3204981E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 23EE5653C5344F25E6EAECA93959DFD7 /* Frameworks */ = { + 614F0F65B18E3F7F4566838C2466DDF4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B4BFAED2D1CBD8A95C1B7F00F33D94AA /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2AC638701E7D00E9B1A2917508741202 /* Frameworks */ = { + 618F63A95B22676C4FA61F86A5AB3136 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5D7F2067317C172EA89627DBE45044BF /* Foundation.framework in Frameworks */, + 9839FC7BD136D98C4786DB72E56B3E5F /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3AEC5C0C53FB4EFE33BA1FE75DD5C4C7 /* Frameworks */ = { + 68F6EC99D6740686C4802F2C69A003BA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 91A0B0D5F700489F625FA80CF9E414B2 /* Foundation.framework in Frameworks */, + EAC4522ECD9EDE06632C34321215099E /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8C569318E9E96F70CD9CEBE58BC0A7CC /* Frameworks */ = { + 7DA469E70D4B27EE88D987E16A14CA0B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7C4A7782F2A3F28C5A5E5C751406E528 /* Foundation.framework in Frameworks */, + 6E328286AD7C502EA27A22A48B46157C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 01F5553246F0637E9859D0C3A6ED8DD1 /* Products */ = { + 05703C849B29D1EF8195C8FE0EC6AF9E /* SnapKit */ = { isa = PBXGroup; children = ( - 4A9330A77EB8489F3F2B7006FF342821 /* LiquidFloatingActionButton.bundle */, - 31410DF950E233991ABE00041EF20709 /* LiquidFloatingActionButton.framework */, - 086E751CB212483A904FA8480CB5B125 /* Pods_LiquidFloatingActionButton_Example.framework */, - E830ACF61E27A06FCCA26909BF0C8F54 /* Pods_LiquidFloatingActionButton_Tests.framework */, - E9A5015EB0DACCD8DC713FB792DD43C5 /* SnapKit.framework */, + 3B90EF7CA55AE01CE50EAF5C3C574CDD /* Constraint.swift */, + 041C7DFD4E40027278BABCCCD69743B2 /* ConstraintAttributes.swift */, + 597734A7EDE6E13F6D1939A7C7373CD1 /* ConstraintConfig.swift */, + F9319AF949935BC0602093E0830E8B10 /* ConstraintConstantTarget.swift */, + CB70FEBA9EF66CAAA461E6F3F819716B /* ConstraintDescription.swift */, + 3FE15693153A62AC79B129BA5FFB7C3D /* ConstraintDSL.swift */, + E855200DC6085FF07EBD87301AD370C9 /* ConstraintInsets.swift */, + 1F2B728DCF7E9F88008827314C2AE823 /* ConstraintInsetTarget.swift */, + 7BEA23F4393572EE30AED50A651CD185 /* ConstraintItem.swift */, + B525F7008B3760076D71FE29C0859BDC /* ConstraintLayoutGuide.swift */, + 446C79107F482F7B2D7E4061657DCA44 /* ConstraintLayoutGuideDSL.swift */, + 212E2771F1CD458D21A0FB3CA1C914F3 /* ConstraintLayoutSupport.swift */, + 6CC7FF80150FA3840AD57BCE994C9FAB /* ConstraintLayoutSupportDSL.swift */, + 3A6167E299BA9862893D87DDBF170B70 /* ConstraintMaker.swift */, + 9F8ECEBD49CA569FC524CB77465180B6 /* ConstraintMakerEditable.swift */, + 8705AFD8FF18225FA8BB0228A69E72AA /* ConstraintMakerExtendable.swift */, + D8AA583273C076DD4A1EBAFDDA0E89A8 /* ConstraintMakerFinalizable.swift */, + 261BC3C65CE6EBBED920977848212F6F /* ConstraintMakerPriortizable.swift */, + 87CCF4DB7EFBDC070B92BFC0BC0D2C8C /* ConstraintMakerRelatable.swift */, + 0729DC38B02A17974FD7A7238FCB1836 /* ConstraintMultiplierTarget.swift */, + AF1BDEFD46348EE8C41DE053AEDBFD1B /* ConstraintOffsetTarget.swift */, + 97F0138AE8EA08984375344610BE7E1E /* ConstraintPriorityTarget.swift */, + 813C2A5263E149C889A2DF40FFDD89BA /* ConstraintRelatableTarget.swift */, + C4C807430C3A7B9A82E2DDD844C58759 /* ConstraintRelation.swift */, + EBCF77FFA89397B4F19B5CD8A7BDB0A3 /* ConstraintView.swift */, + E11295210FBB75091BE22529081A2720 /* ConstraintView+Extensions.swift */, + 8B78113584563565B18CD0248D9D0A93 /* ConstraintViewDSL.swift */, + 737B1700C2C19AD11C2872C1C46EC8D4 /* Debugging.swift */, + 73878F9931EAA78C3DAAF7DDA048218E /* LayoutConstraint.swift */, + 7B4759EEB4180EAF3DA189AAE28199AC /* UILayoutGuide+Extensions.swift */, + 0AB21FA0A2E5B45AB133215CC241236D /* UILayoutSupport+Extensions.swift */, + 458932A7F6390E9028454F0A27A50A13 /* Support Files */, ); - name = Products; + path = SnapKit; sourceTree = ""; }; 2B483F03EA79C3C9DDEEF7DB0181AFC0 /* Development Pods */ = { @@ -198,28 +247,47 @@ name = "Development Pods"; sourceTree = ""; }; - 7A30ADABC44CCA0D9BC282B82A6F71FB /* Support Files */ = { + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */ = { + isa = PBXGroup; + children = ( + CEC22C73C1608DFA5D5D78BDCB218219 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 458932A7F6390E9028454F0A27A50A13 /* Support Files */ = { isa = PBXGroup; children = ( - A804ABA92EC1DA52844E140917F08DF4 /* Info.plist */, - 56B1FCA085C2AC4CDCEB52E3588F26EB /* SnapKit.modulemap */, - 90D8599FCFCA98DB19D3DE0AD81D9CD6 /* SnapKit.xcconfig */, - 079E5EE3CDB090004C84E658BC83AEB7 /* SnapKit-dummy.m */, - 495929FB6F57FC07CF2233838AD92579 /* SnapKit-prefix.pch */, - 17ED37A4D4337C9AC445D07BA9E09051 /* SnapKit-umbrella.h */, + CA274E8C59BA433F4975D535FA594EFA /* Info.plist */, + B7D4645BD3C0100FB7E1B4A6FDC96E0B /* SnapKit.modulemap */, + E885DC7A2C93B352F3CCBAF6C4F30F7F /* SnapKit.xcconfig */, + 9F675DF8551ECAD72F0C6D96084C6DD4 /* SnapKit-dummy.m */, + 14426FA5248A96FBC6A531879E24CFA5 /* SnapKit-prefix.pch */, + 50BF4E341DC91F918DC3DD74CA4ADC22 /* SnapKit-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/SnapKit"; sourceTree = ""; }; + 5D0D78B2AEA5286AA98D3198C9653619 /* Products */ = { + isa = PBXGroup; + children = ( + 9231BEA6AC185B3FCBFD27ACB63CD892 /* LiquidFloatingActionButton.framework */, + 1C56ABE3696B5A7C30A744B23F17B774 /* Pods_LiquidFloatingActionButton_Example.framework */, + 70791619EB473F8BD49DC7B26F2768A0 /* Pods_LiquidFloatingActionButton_Tests.framework */, + C113B9855019081B47BCB0011553CB7B /* SnapKit.framework */, + ); + name = Products; + sourceTree = ""; + }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 2B483F03EA79C3C9DDEEF7DB0181AFC0 /* Development Pods */, BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - AAD880A40C1D678CA44C4575218EDE0E /* Pods */, - 01F5553246F0637E9859D0C3A6ED8DD1 /* Products */, + FCB3E800ADEFE141C46C6B85E298DF53 /* Pods */, + 5D0D78B2AEA5286AA98D3198C9653619 /* Products */, F4BDFB4BCFC42C98938E70B06FC40921 /* Targets Support Files */, ); sourceTree = ""; @@ -239,14 +307,6 @@ path = Classes; sourceTree = ""; }; - AAD880A40C1D678CA44C4575218EDE0E /* Pods */ = { - isa = PBXGroup; - children = ( - B3254E0B2B4708A89CF556DF239CDBA9 /* SnapKit */, - ); - name = Pods; - sourceTree = ""; - }; AE2F18FBC8136A267123CC803D2C583B /* LiquidFloatingActionButton */ = { isa = PBXGroup; children = ( @@ -257,42 +317,14 @@ path = ../..; sourceTree = ""; }; - B3254E0B2B4708A89CF556DF239CDBA9 /* SnapKit */ = { - isa = PBXGroup; - children = ( - 9C745F502C842A223464EC61885F02BB /* Constraint.swift */, - DEFB846E6A499B21514C1E298F56DE3B /* ConstraintAttributes.swift */, - 3061A45F7542E986BCB23EBBD8AD4A13 /* ConstraintDescription.swift */, - E7ED5648C0C88C2BBB8B1737D3C811DF /* ConstraintItem.swift */, - A03EFFB295211A70F01FAD48D41DF5F3 /* ConstraintMaker.swift */, - 92DD83C2BF9A16815558CBFACD79C938 /* ConstraintRelation.swift */, - 415D45FAC3D162C8D3F9CFE592F79E42 /* Debugging.swift */, - A7C496DA4CA3F61B29BB063F74876C70 /* EdgeInsets.swift */, - B869919EAC3B1E5EF05B0107B595C13C /* LayoutConstraint.swift */, - 1EA1CFBED61FB63BBC905CD3AFEE402C /* SnapKit.swift */, - 55BB547CA6D4862CCE70A4B51F1EABAE /* View+SnapKit.swift */, - 1A877C5C14A8B495ECAB69BE839FFA44 /* ViewController+SnapKit.swift */, - 7A30ADABC44CCA0D9BC282B82A6F71FB /* Support Files */, - ); - path = SnapKit; - sourceTree = ""; - }; BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { isa = PBXGroup; children = ( - BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */, + 3DCAB2B7CDE207B3958B6CB957FCC758 /* iOS */, ); name = Frameworks; sourceTree = ""; }; - BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */ = { - isa = PBXGroup; - children = ( - 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; D401308214B3B3372E1C579337305FF5 /* Support Files */ = { isa = PBXGroup; children = ( @@ -360,86 +392,77 @@ name = "Targets Support Files"; sourceTree = ""; }; + FCB3E800ADEFE141C46C6B85E298DF53 /* Pods */ = { + isa = PBXGroup; + children = ( + 05703C849B29D1EF8195C8FE0EC6AF9E /* SnapKit */, + ); + name = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 04F4D890D5EF6701EE30839AB00ACB8E /* Headers */ = { + 0B5E5C8758ACA9EBFD5F7E2AA6E8479A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CD635561809D218A952928FCA3BC1B78 /* LiquidFloatingActionButton-umbrella.h in Headers */, + EAEFA188CC103359C4AE68AC11F8A844 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5CC3252DEC5CDE17DE21497E58997C14 /* Headers */ = { + 260679D455A5673E37DC64A285D035D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CA51F12534784E92F1EF5A82424E3F15 /* SnapKit-umbrella.h in Headers */, + 7E538EF481F898874DF94F0F8CBC5D2C /* LiquidFloatingActionButton-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 94258A87B95C1E034DA78FE925E70954 /* Headers */ = { + 9BA657C14DCF4133528472C8E44F67CD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9A8FC8391975DEC4252F9E46559D9972 /* Pods-LiquidFloatingActionButton_Example-umbrella.h in Headers */, + 40E154929C97169FF28608F168BAA648 /* Pods-LiquidFloatingActionButton_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9D8348FB5656CDC3B3A1A6C9DD613F5E /* Headers */ = { + C5453DEA4A21F19419F29DFDB5DFC00E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FDA81DE249911CF48CB90527D57492D2 /* Pods-LiquidFloatingActionButton_Tests-umbrella.h in Headers */, + 42358D3ECCE5C55DBB5C84DB7CF83577 /* SnapKit-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 2E4A37C88D68A62EA5C1BC7A2A4D19AE /* LiquidFloatingActionButton-LiquidFloatingActionButton */ = { + 0ED0A08396CBAD914DE4379BCF7E585E /* Pods-LiquidFloatingActionButton_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 2FBC67EBFEEE1117389429AE8C14564B /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton-LiquidFloatingActionButton" */; + buildConfigurationList = 4BBD76F68E67BC09C08CB14FFF4EA906 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Tests" */; buildPhases = ( - 64C51C33B8DFC1470D2FE029A6D45D18 /* Sources */, - 23EE5653C5344F25E6EAECA93959DFD7 /* Frameworks */, - 1714DC3BD0B3E16B173A88A655453C03 /* Resources */, + 66EC92D768733C8D9DBB4FD857FA4B06 /* Sources */, + 7DA469E70D4B27EE88D987E16A14CA0B /* Frameworks */, + 0B5E5C8758ACA9EBFD5F7E2AA6E8479A /* Headers */, ); buildRules = ( ); dependencies = ( - ); - name = "LiquidFloatingActionButton-LiquidFloatingActionButton"; - productName = "LiquidFloatingActionButton-LiquidFloatingActionButton"; - productReference = 4A9330A77EB8489F3F2B7006FF342821 /* LiquidFloatingActionButton.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 5D0A7B69BE211C66A907CBDC93A73B48 /* Pods-LiquidFloatingActionButton_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = C817D6206254242A2F67A3E7D08BA2F2 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Tests" */; - buildPhases = ( - BE47DF21A1E38DEC14BEF995C418C7F8 /* Sources */, - 00C831C3AB0DA859DD57545BC7D29E7D /* Frameworks */, - 9D8348FB5656CDC3B3A1A6C9DD613F5E /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - E99FE441132007A27D42FC2B2205ADDA /* PBXTargetDependency */, + E6929EACFC78DC2D512F1CACAB42D81A /* PBXTargetDependency */, ); name = "Pods-LiquidFloatingActionButton_Tests"; productName = "Pods-LiquidFloatingActionButton_Tests"; - productReference = E830ACF61E27A06FCCA26909BF0C8F54 /* Pods_LiquidFloatingActionButton_Tests.framework */; + productReference = 70791619EB473F8BD49DC7B26F2768A0 /* Pods_LiquidFloatingActionButton_Tests.framework */; productType = "com.apple.product-type.framework"; }; - 89A8B55ECFFB1317E22EBE8135CC265C /* SnapKit */ = { + 387CBFD0CECEC9E8DA816C353D8AA44B /* SnapKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 9A828AA297BF940B2D572DBDCDCF2EDC /* Build configuration list for PBXNativeTarget "SnapKit" */; + buildConfigurationList = 47881458D9A4FBFCF836AE674D3268E5 /* Build configuration list for PBXNativeTarget "SnapKit" */; buildPhases = ( - 2BA57FF6CEBDF7CF475E749769C558C2 /* Sources */, - 3AEC5C0C53FB4EFE33BA1FE75DD5C4C7 /* Frameworks */, - 5CC3252DEC5CDE17DE21497E58997C14 /* Headers */, + 7DEFD17BAEAC401FE05557EEB7477DD1 /* Sources */, + 614F0F65B18E3F7F4566838C2466DDF4 /* Frameworks */, + C5453DEA4A21F19419F29DFDB5DFC00E /* Headers */, ); buildRules = ( ); @@ -447,45 +470,43 @@ ); name = SnapKit; productName = SnapKit; - productReference = E9A5015EB0DACCD8DC713FB792DD43C5 /* SnapKit.framework */; + productReference = C113B9855019081B47BCB0011553CB7B /* SnapKit.framework */; productType = "com.apple.product-type.framework"; }; - AA7B69BD752FF9462F2CEEC675B7E2A9 /* Pods-LiquidFloatingActionButton_Example */ = { + 4BCE15B65BE1423E31A139A48360119E /* LiquidFloatingActionButton */ = { isa = PBXNativeTarget; - buildConfigurationList = 4B3E6CDC87679AF205E2825F4FD36A35 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Example" */; + buildConfigurationList = 1EC12321BB0A0C22B6A6BE639A9983F3 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton" */; buildPhases = ( - EC681A996D472598C4EEACB659A8B093 /* Sources */, - 2AC638701E7D00E9B1A2917508741202 /* Frameworks */, - 94258A87B95C1E034DA78FE925E70954 /* Headers */, + 8749C03AAA14097B43EAADA1E8600D74 /* Sources */, + 68F6EC99D6740686C4802F2C69A003BA /* Frameworks */, + 260679D455A5673E37DC64A285D035D0 /* Headers */, ); buildRules = ( ); dependencies = ( - 6862F76894D055BE72776FEDF4385BAC /* PBXTargetDependency */, - B066856D8E115A3A3FA11AA34B06A292 /* PBXTargetDependency */, ); - name = "Pods-LiquidFloatingActionButton_Example"; - productName = "Pods-LiquidFloatingActionButton_Example"; - productReference = 086E751CB212483A904FA8480CB5B125 /* Pods_LiquidFloatingActionButton_Example.framework */; + name = LiquidFloatingActionButton; + productName = LiquidFloatingActionButton; + productReference = 9231BEA6AC185B3FCBFD27ACB63CD892 /* LiquidFloatingActionButton.framework */; productType = "com.apple.product-type.framework"; }; - ECB4143196184B0E0EA02182DB2B9CCA /* LiquidFloatingActionButton */ = { + F7C1C7995CD2F101DD63DDC91BAABAA9 /* Pods-LiquidFloatingActionButton_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 6B577CF2C4C8B7512267A39C5C0849B6 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton" */; + buildConfigurationList = 974C53BD384AA0C93E683E5246B81AF3 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Example" */; buildPhases = ( - 0D37787463C0BEF1DD841024C3CADB7F /* Sources */, - 8C569318E9E96F70CD9CEBE58BC0A7CC /* Frameworks */, - 4695172BA8D46356F072851DA9ED351D /* Resources */, - 04F4D890D5EF6701EE30839AB00ACB8E /* Headers */, + 07AC5B339761C60E4C8735BC1C4F5E84 /* Sources */, + 618F63A95B22676C4FA61F86A5AB3136 /* Frameworks */, + 9BA657C14DCF4133528472C8E44F67CD /* Headers */, ); buildRules = ( ); dependencies = ( - FAE7CB5B7883807D0DC3EFE58E8F5318 /* PBXTargetDependency */, + 94616D549170E6823044A6E5E95F9E86 /* PBXTargetDependency */, + 68B1870B4B682D119A8F8E735AEB1AA7 /* PBXTargetDependency */, ); - name = LiquidFloatingActionButton; - productName = LiquidFloatingActionButton; - productReference = 31410DF950E233991ABE00041EF20709 /* LiquidFloatingActionButton.framework */; + name = "Pods-LiquidFloatingActionButton_Example"; + productName = "Pods-LiquidFloatingActionButton_Example"; + productReference = 1C56ABE3696B5A7C30A744B23F17B774 /* Pods_LiquidFloatingActionButton_Example.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -494,8 +515,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0730; + LastSwiftUpdateCheck = 0730; + LastUpgradeCheck = 0700; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -505,179 +526,168 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 01F5553246F0637E9859D0C3A6ED8DD1 /* Products */; + productRefGroup = 5D0D78B2AEA5286AA98D3198C9653619 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - ECB4143196184B0E0EA02182DB2B9CCA /* LiquidFloatingActionButton */, - 2E4A37C88D68A62EA5C1BC7A2A4D19AE /* LiquidFloatingActionButton-LiquidFloatingActionButton */, - AA7B69BD752FF9462F2CEEC675B7E2A9 /* Pods-LiquidFloatingActionButton_Example */, - 5D0A7B69BE211C66A907CBDC93A73B48 /* Pods-LiquidFloatingActionButton_Tests */, - 89A8B55ECFFB1317E22EBE8135CC265C /* SnapKit */, + 4BCE15B65BE1423E31A139A48360119E /* LiquidFloatingActionButton */, + F7C1C7995CD2F101DD63DDC91BAABAA9 /* Pods-LiquidFloatingActionButton_Example */, + 0ED0A08396CBAD914DE4379BCF7E585E /* Pods-LiquidFloatingActionButton_Tests */, + 387CBFD0CECEC9E8DA816C353D8AA44B /* SnapKit */, ); }; /* End PBXProject section */ -/* Begin PBXResourcesBuildPhase section */ - 1714DC3BD0B3E16B173A88A655453C03 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4695172BA8D46356F072851DA9ED351D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 72042359B6606B6363E495430D780479 /* LiquidFloatingActionButton.bundle in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - 0D37787463C0BEF1DD841024C3CADB7F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CC6DC5A0FFFD9F4BB16D4B11F8769E6C /* ArrayEx.swift in Sources */, - ABEE259770118A74E19D8E6FFCC3B54D /* CGPointEx.swift in Sources */, - E9F9849609338D0B86CEBA5240071741 /* CGRectEx.swift in Sources */, - 54218C3D297E6E992720394B1904DFA8 /* LiquidFloatingActionButton-dummy.m in Sources */, - 82D7A27B0B5695343FBA27D55E308716 /* LiquidFloatingActionButton.swift in Sources */, - 2FD62186877ED8D79EB50BE978326AB7 /* LiquidUtil.swift in Sources */, - C4B49BC88CE5107F310F24520E2B936F /* LiquittableCircle.swift in Sources */, - B95FC4D5CA4A1AB1B9ACC0FB060B3DDF /* SimpleCircleLiquidEngine.swift in Sources */, - 27265ED50FB0F70B0DC6CACFEBFEFEBB /* UIColorEx.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2BA57FF6CEBDF7CF475E749769C558C2 /* Sources */ = { + 07AC5B339761C60E4C8735BC1C4F5E84 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 73A598302FF7775E6E0FBB231B416F61 /* Constraint.swift in Sources */, - 8AE68AF11C742B3DFB12B8426C53FAE0 /* ConstraintAttributes.swift in Sources */, - D78D1E3E56D3C6ADD05FE6E4A0330413 /* ConstraintDescription.swift in Sources */, - F8430257E5D9EBB43F60769434F04A42 /* ConstraintItem.swift in Sources */, - DAB96FE2A0E1C3E225853B3CCF8FE4A5 /* ConstraintMaker.swift in Sources */, - 3119F291AB6588F10BE54351505CD5FD /* ConstraintRelation.swift in Sources */, - A63823259878C902D4734D9B3813BAC8 /* Debugging.swift in Sources */, - 12A25CB430ECAFDE828EACA52A4EA9B3 /* EdgeInsets.swift in Sources */, - A516196B52C6812BD20B203BA789924F /* LayoutConstraint.swift in Sources */, - 2779506876997B329DBA24C5C89E0741 /* SnapKit-dummy.m in Sources */, - 2FB98EB28FD690835891F30F8D410080 /* SnapKit.swift in Sources */, - 063AF3E3F6F2F42DFDE02296C4B454DE /* View+SnapKit.swift in Sources */, - 5FC1075233F230CAF3206BC8967896BF /* ViewController+SnapKit.swift in Sources */, + 03D37CD9914A34403CA5E7773D42702F /* Pods-LiquidFloatingActionButton_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 64C51C33B8DFC1470D2FE029A6D45D18 /* Sources */ = { + 66EC92D768733C8D9DBB4FD857FA4B06 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C19ED4C22D6B9808195702DB3990008 /* Pods-LiquidFloatingActionButton_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BE47DF21A1E38DEC14BEF995C418C7F8 /* Sources */ = { + 7DEFD17BAEAC401FE05557EEB7477DD1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EECDD5BD4ECE7607A35A00B5B7895396 /* Pods-LiquidFloatingActionButton_Tests-dummy.m in Sources */, + 558D7CB2FB7F2C0FB7BFA2BCF7217EAA /* Constraint.swift in Sources */, + 382A89C8A9966985B246A0297407D219 /* ConstraintAttributes.swift in Sources */, + DA0B4783CA61D670415069AE79CA8BE1 /* ConstraintConfig.swift in Sources */, + 4CA7418B0FCBC3D61E2A0393244E1BF1 /* ConstraintConstantTarget.swift in Sources */, + DFA8073CB687441FF93505CB02432936 /* ConstraintDescription.swift in Sources */, + 8CAF98A2AD7189203548CDDA44E3B881 /* ConstraintDSL.swift in Sources */, + 9038175ADF2AAA447C93DC65AF74C205 /* ConstraintInsets.swift in Sources */, + A0E68453F95B1D24E992A71FFE5C9FB2 /* ConstraintInsetTarget.swift in Sources */, + 6862F5F9E2EA9D362151AC37E55E276D /* ConstraintItem.swift in Sources */, + FFFBAAED7A3ADC328B1EE0193BF98138 /* ConstraintLayoutGuide.swift in Sources */, + 2A243039ECE25C22417777FADC30ED4B /* ConstraintLayoutGuideDSL.swift in Sources */, + 7A5DCCC054F4E24631ADC1E3C3A70343 /* ConstraintLayoutSupport.swift in Sources */, + 2C83799F09E1AA0516AB5DB90625639B /* ConstraintLayoutSupportDSL.swift in Sources */, + 07C1582DE353E230C116FBBA55215D38 /* ConstraintMaker.swift in Sources */, + 0C905D6D9629186A407EC43C7DEF7E66 /* ConstraintMakerEditable.swift in Sources */, + 455D1C85888DD5A8DEB3D728C891AB98 /* ConstraintMakerExtendable.swift in Sources */, + 882DD384A96A03DE16B115C0AA801A8F /* ConstraintMakerFinalizable.swift in Sources */, + 36F74146B8079D5E7A7D8309B0FF7565 /* ConstraintMakerPriortizable.swift in Sources */, + F3132422696A8E14ED71162F16F900B0 /* ConstraintMakerRelatable.swift in Sources */, + 83D17E8B5FF0BEE6E212CBBB98FCCF34 /* ConstraintMultiplierTarget.swift in Sources */, + 472AE9D6E5530C4A22E40EAE13A2B2A0 /* ConstraintOffsetTarget.swift in Sources */, + 4944CA8FF8D31ABF8BFFEC2E46AE608D /* ConstraintPriorityTarget.swift in Sources */, + F8B99B2534B76BA3A39D5787434BA16E /* ConstraintRelatableTarget.swift in Sources */, + 067A34DB72BA048934A4ACB8F865D499 /* ConstraintRelation.swift in Sources */, + 5A82C9E223C33B72D27F16541E58440A /* ConstraintView+Extensions.swift in Sources */, + E7D4AEB7F3C4AB23FEBA14AD82BB31E5 /* ConstraintView.swift in Sources */, + 8217E7706802DF39D8369FD61A75F997 /* ConstraintViewDSL.swift in Sources */, + 403679D690C81703CB583C940107CFD1 /* Debugging.swift in Sources */, + 156D6C46DF45A7803E62D7F023CD095A /* LayoutConstraint.swift in Sources */, + 56703A4074D4D2B486FDD90CE6BA23D8 /* SnapKit-dummy.m in Sources */, + 4891FC70C29A87882CF967258A163202 /* UILayoutGuide+Extensions.swift in Sources */, + C74E7F220185731302C173547511274A /* UILayoutSupport+Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC681A996D472598C4EEACB659A8B093 /* Sources */ = { + 8749C03AAA14097B43EAADA1E8600D74 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 880A142C73ADFAC66E12A00A6D461281 /* Pods-LiquidFloatingActionButton_Example-dummy.m in Sources */, + 3D41203B7B3855EA27D3E987D3EEB224 /* ArrayEx.swift in Sources */, + 903FE6138690401881CED819779A73AC /* CGPointEx.swift in Sources */, + 8D10C418C90EE34F5BA2C22019612D80 /* CGRectEx.swift in Sources */, + 5D47B5F7F9B93DB896CFAEDA03CCB522 /* LiquidFloatingActionButton-dummy.m in Sources */, + B21BD823B02D2B87FD9189869502FCD5 /* LiquidFloatingActionButton.swift in Sources */, + FB4B87C1866264B4C63C18C6D89EC703 /* LiquidUtil.swift in Sources */, + 70A374969C87173198D8D4B6111ECB6E /* LiquittableCircle.swift in Sources */, + CB9BE415254E64439620E55C08536186 /* SimpleCircleLiquidEngine.swift in Sources */, + 222D303213262931EA317A1E0F6BAB38 /* UIColorEx.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 6862F76894D055BE72776FEDF4385BAC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LiquidFloatingActionButton; - target = ECB4143196184B0E0EA02182DB2B9CCA /* LiquidFloatingActionButton */; - targetProxy = 07C6F3DDEBB62F1F5FE9FCDBE877F723 /* PBXContainerItemProxy */; - }; - B066856D8E115A3A3FA11AA34B06A292 /* PBXTargetDependency */ = { + 68B1870B4B682D119A8F8E735AEB1AA7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SnapKit; - target = 89A8B55ECFFB1317E22EBE8135CC265C /* SnapKit */; - targetProxy = 39AC163D279BBF45FED49635CDDB4483 /* PBXContainerItemProxy */; + target = 387CBFD0CECEC9E8DA816C353D8AA44B /* SnapKit */; + targetProxy = F37E0413588FEF57B185C90A28936627 /* PBXContainerItemProxy */; }; - E99FE441132007A27D42FC2B2205ADDA /* PBXTargetDependency */ = { + 94616D549170E6823044A6E5E95F9E86 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LiquidFloatingActionButton; - target = ECB4143196184B0E0EA02182DB2B9CCA /* LiquidFloatingActionButton */; - targetProxy = 79D8037643A4A5679CCDDD90A6DE8307 /* PBXContainerItemProxy */; + target = 4BCE15B65BE1423E31A139A48360119E /* LiquidFloatingActionButton */; + targetProxy = 5925C73B578B569902B6E043D675652A /* PBXContainerItemProxy */; }; - FAE7CB5B7883807D0DC3EFE58E8F5318 /* PBXTargetDependency */ = { + E6929EACFC78DC2D512F1CACAB42D81A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "LiquidFloatingActionButton-LiquidFloatingActionButton"; - target = 2E4A37C88D68A62EA5C1BC7A2A4D19AE /* LiquidFloatingActionButton-LiquidFloatingActionButton */; - targetProxy = 241D7E67C3518A9E632A0EDFC7D211A4 /* PBXContainerItemProxy */; + name = LiquidFloatingActionButton; + target = 4BCE15B65BE1423E31A139A48360119E /* LiquidFloatingActionButton */; + targetProxy = 10B0CFDA9E4883AADDB4595153399A95 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */ = { + 025483E7F53CA36007FA46481313F523 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LiquidFloatingActionButton/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/LiquidFloatingActionButton/LiquidFloatingActionButton.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = LiquidFloatingActionButton; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - 188B1B30656E63567EF683B42236451C /* Release */ = { + 0FA9DE0CD0982310817ECEBA011422B8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AA63D17174A63F13D3434AAB04CB95CD /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */; + baseConfigurationReference = 9B73872B15E9C56304335676CC951C90 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -685,59 +695,84 @@ PRODUCT_NAME = Pods_LiquidFloatingActionButton_Tests; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 18B45C724122F5B889D93F59EBF8E602 /* Release */ = { + 667A1433D65D33A53F678A8119C10712 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4EB840C0FCFA128ECC2A9B932415D6A8 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */; + baseConfigurationReference = E885DC7A2C93B352F3CCBAF6C4F30F7F /* SnapKit.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist"; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_LiquidFloatingActionButton_Example; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 27B0FBFE8C9EFA26FD327675D36A754B /* Debug */ = { + 7E138F85058735C638C74AC05AAA0D4C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */; buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LiquidFloatingActionButton/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/LiquidFloatingActionButton/LiquidFloatingActionButton.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_NAME = LiquidFloatingActionButton; SDKROOT = iphoneos; SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 552D02D5BA751AC2E8790D2811D496CA /* Debug */ = { + 8DED8AD26D381A6ACFF202E5217EC498 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -751,16 +786,14 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -768,92 +801,107 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.3; - ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 55C9FE02C0B280C8E993B24853250945 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = LiquidFloatingActionButton; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 5892580A6902729CC61174251CBB1A33 /* Debug */ = { + 93F6473DD94BB1230AC8DFC2E327D5EF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */; + baseConfigurationReference = AA63D17174A63F13D3434AAB04CB95CD /* Pods-LiquidFloatingActionButton_Tests.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LiquidFloatingActionButton/Info.plist"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = LiquidFloatingActionButton; + PRODUCT_NAME = Pods_LiquidFloatingActionButton_Tests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 6D54594BC63069DC9FCFF8C2796C20D5 /* Release */ = { + 9E1E4E48AF2EAB23169E611BF694090A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 050B0D0CB0787BEA95A638CEB77D19BC /* LiquidFloatingActionButton.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LiquidFloatingActionButton/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = LiquidFloatingActionButton; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; - 9C22AAE809EDA71FD3C15EA422ADE161 /* Debug */ = { + BBFF7F1F84FEEE8AA592D4E5309DCA45 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 15C6FC5FD383058121E6098617B98C67 /* Pods-LiquidFloatingActionButton_Example.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.3; @@ -875,89 +923,67 @@ }; name = Debug; }; - CEAA3042990C82EED907BF303EF0A33F /* Debug */ = { + CBCB381EEAD92E98E2357B2B04CB2775 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 90D8599FCFCA98DB19D3DE0AD81D9CD6 /* SnapKit.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = SnapKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D62E36575F2FF99B148449794194946F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B73872B15E9C56304335676CC951C90 /* Pods-LiquidFloatingActionButton_Tests.debug.xcconfig */; + baseConfigurationReference = 4EB840C0FCFA128ECC2A9B932415D6A8 /* Pods-LiquidFloatingActionButton_Example.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MODULEMAP_FILE = "Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_LiquidFloatingActionButton_Tests; + PRODUCT_NAME = Pods_LiquidFloatingActionButton_Example; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - EF4B6EF8B7D192699B35D2CE4B5937A1 /* Release */ = { + F2314F1B6F5DA825DAC338B7F05A9356 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 90D8599FCFCA98DB19D3DE0AD81D9CD6 /* SnapKit.xcconfig */; + baseConfigurationReference = E885DC7A2C93B352F3CCBAF6C4F30F7F /* SnapKit.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -967,56 +993,47 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 1EC12321BB0A0C22B6A6BE639A9983F3 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton" */ = { isa = XCConfigurationList; buildConfigurations = ( - 552D02D5BA751AC2E8790D2811D496CA /* Debug */, - 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */, + 7E138F85058735C638C74AC05AAA0D4C /* Debug */, + 025483E7F53CA36007FA46481313F523 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2FBC67EBFEEE1117389429AE8C14564B /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton-LiquidFloatingActionButton" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 27B0FBFE8C9EFA26FD327675D36A754B /* Debug */, - 55C9FE02C0B280C8E993B24853250945 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4B3E6CDC87679AF205E2825F4FD36A35 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Example" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9C22AAE809EDA71FD3C15EA422ADE161 /* Debug */, - 18B45C724122F5B889D93F59EBF8E602 /* Release */, + 9E1E4E48AF2EAB23169E611BF694090A /* Debug */, + 8DED8AD26D381A6ACFF202E5217EC498 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6B577CF2C4C8B7512267A39C5C0849B6 /* Build configuration list for PBXNativeTarget "LiquidFloatingActionButton" */ = { + 47881458D9A4FBFCF836AE674D3268E5 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5892580A6902729CC61174251CBB1A33 /* Debug */, - 6D54594BC63069DC9FCFF8C2796C20D5 /* Release */, + 667A1433D65D33A53F678A8119C10712 /* Debug */, + F2314F1B6F5DA825DAC338B7F05A9356 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9A828AA297BF940B2D572DBDCDCF2EDC /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + 4BBD76F68E67BC09C08CB14FFF4EA906 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - CEAA3042990C82EED907BF303EF0A33F /* Debug */, - EF4B6EF8B7D192699B35D2CE4B5937A1 /* Release */, + 0FA9DE0CD0982310817ECEBA011422B8 /* Debug */, + 93F6473DD94BB1230AC8DFC2E327D5EF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C817D6206254242A2F67A3E7D08BA2F2 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Tests" */ = { + 974C53BD384AA0C93E683E5246B81AF3 /* Build configuration list for PBXNativeTarget "Pods-LiquidFloatingActionButton_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - D62E36575F2FF99B148449794194946F /* Debug */, - 188B1B30656E63567EF683B42236451C /* Release */, + BBFF7F1F84FEEE8AA592D4E5309DCA45 /* Debug */, + CBCB381EEAD92E98E2357B2B04CB2775 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton.xcscheme deleted file mode 100644 index 72fadf5..0000000 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/LiquidFloatingActionButton.xcscheme +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/Pods/SnapKit/README.md b/Example/Pods/SnapKit/README.md index 14be1f0..0e5ac50 100644 --- a/Example/Pods/SnapKit/README.md +++ b/Example/Pods/SnapKit/README.md @@ -3,9 +3,101 @@ SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. [![Build Status](https://travis-ci.org/SnapKit/SnapKit.svg)](https://travis-ci.org/SnapKit/SnapKit) -[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/SnapKit.svg)](https://img.shields.io/cocoapods/v/SnapKit.svg) +[![Platform](https://img.shields.io/cocoapods/p/SnapKit.svg?style=flat)](https://github.com/SnapKit/SnapKit) +[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/SnapKit.svg)](https://cocoapods.org/pods/SnapKit) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +#### ⚠️ **To use with Swift 2.x please ensure you are using == 0.22.0** ⚠️ +#### ⚠️ **To use with Swift 3.x please ensure you are using >= 3.0.0** ⚠️ + +## Contents + +- [Requirements](#requirements) +- [Migration Guides](#migration-guides) +- [Communication](#communication) +- [Installation](#installation) +- [Usage](#usage) +- [Credits](#credits) +- [License](#license) + +## Requirements + +- iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+ +- Xcode 8.0+ +- Swift 3.0+ + +## Migration Guides + +- [SnapKit 3.0 Migration Guide](https://github.com/SnapKit/SnapKit/blob/master/Documentation/SnapKit%203.0%20Migration%20Guide.md) + +## Communication + +- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). (Tag 'snapkit') +- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). +- If you **found a bug**, open an issue. +- If you **have a feature request**, open an issue. +- If you **want to contribute**, submit a pull request. + + +## Installation + +### CocoaPods + +[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: + +```bash +$ gem install cocoapods +``` + +> CocoaPods 1.1.0+ is required to build SnapKit 3.0.0+. + +To integrate SnapKit into your Xcode project using CocoaPods, specify it in your `Podfile`: + +```ruby +source 'https://github.com/CocoaPods/Specs.git' +platform :ios, '10.0' +use_frameworks! + +target '' do + pod 'SnapKit', '~> 3.0' +end +``` + +Then, run the following command: + +```bash +$ pod install +``` + +### Carthage + +[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. + +You can install Carthage with [Homebrew](http://brew.sh/) using the following command: + +```bash +$ brew update +$ brew install carthage +``` + +To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`: + +```ogdl +github "SnapKit/SnapKit" ~> 3.0 +``` + +Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project. + +### Manually + +If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually. + +--- + +## Usage + +### Quick Start + ```swift import SnapKit @@ -17,7 +109,7 @@ class MyViewController: UIViewController { super.viewDidLoad() self.view.addSubview(box) - box.snp_makeConstraints { (make) -> Void in + box.snp.makeConstraints { (make) -> Void in make.width.height.equalTo(50) make.center.equalTo(self.view) } @@ -26,12 +118,16 @@ class MyViewController: UIViewController { } ``` -## Resources +### Resources + +- [Documentation](http://snapkit.io/docs/) +- [F.A.Q.](http://snapkit.io/faq/) + +## Credits -* [Documentation](http://snapkit.io/docs/) -* [F.A.Q.](http://snapkit.io/faq/) -* [Legacy Platforms (iOS 7.0, OS X 10.9)](http://snapkit.io/legacy-platforms/) +- Robert Payne ([@robertjpayne](https://twitter.com/robertjpayne)) +- Many other contributors ## License -MIT license. See the `LICENSE` file for details. +SnapKit is released under the MIT license. See LICENSE for details. diff --git a/Example/Pods/SnapKit/Source/Constraint.swift b/Example/Pods/SnapKit/Source/Constraint.swift index 4f291e6..b93a8d9 100644 --- a/Example/Pods/SnapKit/Source/Constraint.swift +++ b/Example/Pods/SnapKit/Source/Constraint.swift @@ -22,483 +22,247 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to expose API's for a Constraint -*/ public class Constraint { - public func install() -> [LayoutConstraint] { fatalError("Must be implemented by Concrete subclass.") } - public func uninstall() -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func activate() -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func deactivate() -> Void { fatalError("Must be implemented by Concrete subclass.") } + internal let sourceLocation: (String, UInt) + internal let label: String? - public func updateOffset(amount: Float) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: Double) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: CGFloat) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: Int) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: UInt) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: CGPoint) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: CGSize) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updateOffset(amount: EdgeInsets) -> Void { fatalError("Must be implemented by Concrete subclass.") } - - public func updateInsets(amount: EdgeInsets) -> Void { fatalError("Must be implemented by Concrete subclass.") } - - public func updatePriority(priority: Float) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriority(priority: Double) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriority(priority: CGFloat) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriority(priority: UInt) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriority(priority: Int) -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriorityRequired() -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriorityHigh() -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriorityMedium() -> Void { fatalError("Must be implemented by Concrete subclass.") } - public func updatePriorityLow() -> Void { fatalError("Must be implemented by Concrete subclass.") } - - internal var makerFile: String = "Unknown" - internal var makerLine: UInt = 0 - -} - -/** - Used internally to implement a ConcreteConstraint -*/ -internal class ConcreteConstraint: Constraint { - - internal override func updateOffset(amount: Float) -> Void { - self.constant = amount - } - internal override func updateOffset(amount: Double) -> Void { - self.updateOffset(Float(amount)) - } - internal override func updateOffset(amount: CGFloat) -> Void { - self.updateOffset(Float(amount)) - } - internal override func updateOffset(amount: Int) -> Void { - self.updateOffset(Float(amount)) - } - internal override func updateOffset(amount: UInt) -> Void { - self.updateOffset(Float(amount)) - } - internal override func updateOffset(amount: CGPoint) -> Void { - self.constant = amount - } - internal override func updateOffset(amount: CGSize) -> Void { - self.constant = amount - } - internal override func updateOffset(amount: EdgeInsets) -> Void { - self.constant = amount - } - - internal override func updateInsets(amount: EdgeInsets) -> Void { - self.constant = EdgeInsets(top: amount.top, left: amount.left, bottom: -amount.bottom, right: -amount.right) - } - - internal override func updatePriority(priority: Float) -> Void { - self.priority = priority - } - internal override func updatePriority(priority: Double) -> Void { - self.updatePriority(Float(priority)) - } - internal override func updatePriority(priority: CGFloat) -> Void { - self.updatePriority(Float(priority)) - } - internal override func updatePriority(priority: UInt) -> Void { - self.updatePriority(Float(priority)) - } - internal override func updatePriority(priority: Int) -> Void { - self.updatePriority(Float(priority)) - } - internal override func updatePriorityRequired() -> Void { - self.updatePriority(Float(1000.0)) - } - internal override func updatePriorityHigh() -> Void { - self.updatePriority(Float(750.0)) - } - internal override func updatePriorityMedium() -> Void { - #if os(iOS) || os(tvOS) - self.updatePriority(Float(500.0)) - #else - self.updatePriority(Float(501.0)) - #endif - } - internal override func updatePriorityLow() -> Void { - self.updatePriority(Float(250.0)) - } - - internal override func install() -> [LayoutConstraint] { - return self.installOnView(updateExisting: false, file: self.makerFile, line: self.makerLine) - } - - internal override func uninstall() -> Void { - self.uninstallFromView() - } - - internal override func activate() -> Void { - guard self.installInfo != nil else { - self.install() - return - } - #if SNAPKIT_DEPLOYMENT_LEGACY - guard #available(iOS 8.0, OSX 10.10, *) else { - self.install() - return - } - #endif - let layoutConstraints = self.installInfo!.layoutConstraints.allObjects as! [LayoutConstraint] - if layoutConstraints.count > 0 { - NSLayoutConstraint.activateConstraints(layoutConstraints) - } - } - - internal override func deactivate() -> Void { - guard self.installInfo != nil else { - return - } - #if SNAPKIT_DEPLOYMENT_LEGACY - guard #available(iOS 8.0, OSX 10.10, *) else { - return - } - #endif - let layoutConstraints = self.installInfo!.layoutConstraints.allObjects as! [LayoutConstraint] - if layoutConstraints.count > 0 { - NSLayoutConstraint.deactivateConstraints(layoutConstraints) - } - } - - private let fromItem: ConstraintItem - private let toItem: ConstraintItem + private let from: ConstraintItem + private let to: ConstraintItem private let relation: ConstraintRelation - private let multiplier: Float - private var constant: Any { + private let multiplier: ConstraintMultiplierTarget + private var constant: ConstraintConstantTarget { didSet { - if let installInfo = self.installInfo { - for layoutConstraint in installInfo.layoutConstraints.allObjects as! [LayoutConstraint] { - let attribute = (layoutConstraint.secondAttribute == .NotAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute - layoutConstraint.constant = attribute.snp_constantForValue(self.constant) - } - } + self.updateConstantAndPriorityIfNeeded() } } - private var priority: Float { + private var priority: ConstraintPriorityTarget { didSet { - if let installInfo = self.installInfo { - for layoutConstraint in installInfo.layoutConstraints.allObjects as! [LayoutConstraint] { - layoutConstraint.priority = self.priority - } - } + self.updateConstantAndPriorityIfNeeded() } } + private var layoutConstraints: [LayoutConstraint] - private let label: String? + // MARK: Initialization - private var installInfo: ConcreteConstraintInstallInfo? = nil - - internal init(fromItem: ConstraintItem, toItem: ConstraintItem, relation: ConstraintRelation, constant: Any, multiplier: Float, priority: Float, label: String? = nil) { - self.fromItem = fromItem - self.toItem = toItem + internal init(from: ConstraintItem, + to: ConstraintItem, + relation: ConstraintRelation, + sourceLocation: (String, UInt), + label: String?, + multiplier: ConstraintMultiplierTarget, + constant: ConstraintConstantTarget, + priority: ConstraintPriorityTarget) { + self.from = from + self.to = to self.relation = relation - self.constant = constant + self.sourceLocation = sourceLocation + self.label = label self.multiplier = multiplier + self.constant = constant self.priority = priority - self.label = label - } - - internal func installOnView(updateExisting updateExisting: Bool = false, file: String? = nil, line: UInt? = nil) -> [LayoutConstraint] { - var installOnView: View? = nil - if self.toItem.view != nil { - installOnView = closestCommonSuperviewFromView(self.fromItem.view, toView: self.toItem.view) - if installOnView == nil { - NSException(name: "Cannot Install Constraint", reason: "No common superview between views (@\(self.makerFile)#\(self.makerLine))", userInfo: nil).raise() - return [] - } - } else { - - if self.fromItem.attributes.isSubsetOf(ConstraintAttributes.Width.union(.Height)) { - installOnView = self.fromItem.view - } else { - installOnView = self.fromItem.view?.superview - if installOnView == nil { - NSException(name: "Cannot Install Constraint", reason: "Missing superview (@\(self.makerFile)#\(self.makerLine))", userInfo: nil).raise() - return [] - } - } - } - - if let installedOnView = self.installInfo?.view { - if installedOnView != installOnView { - NSException(name: "Cannot Install Constraint", reason: "Already installed on different view. (@\(self.makerFile)#\(self.makerLine))", userInfo: nil).raise() - return [] - } - return self.installInfo?.layoutConstraints.allObjects as? [LayoutConstraint] ?? [] - } + self.layoutConstraints = [] - var newLayoutConstraints = [LayoutConstraint]() - let layoutFromAttributes = self.fromItem.attributes.layoutAttributes - let layoutToAttributes = self.toItem.attributes.layoutAttributes + // get attributes + let layoutFromAttributes = self.from.attributes.layoutAttributes + let layoutToAttributes = self.to.attributes.layoutAttributes // get layout from - let layoutFrom: View? = self.fromItem.view + let layoutFrom: ConstraintView = self.from.view! - // get layout relation - let layoutRelation: NSLayoutRelation = self.relation.layoutRelation + // get relation + let layoutRelation = self.relation.layoutRelation for layoutFromAttribute in layoutFromAttributes { // get layout to attribute - let layoutToAttribute = (layoutToAttributes.count > 0) ? layoutToAttributes[0] : layoutFromAttribute + let layoutToAttribute: NSLayoutAttribute + #if os(iOS) || os(tvOS) + if layoutToAttributes.count > 0 { + if self.from.attributes == .edges && self.to.attributes == .margins { + switch layoutFromAttribute { + case .left: + layoutToAttribute = .leftMargin + case .right: + layoutToAttribute = .rightMargin + case .top: + layoutToAttribute = .topMargin + case .bottom: + layoutToAttribute = .bottomMargin + default: + fatalError() + } + } else if self.from.attributes == .margins && self.to.attributes == .edges { + switch layoutFromAttribute { + case .leftMargin: + layoutToAttribute = .left + case .rightMargin: + layoutToAttribute = .right + case .topMargin: + layoutToAttribute = .top + case .bottomMargin: + layoutToAttribute = .bottom + default: + fatalError() + } + } else if self.from.attributes == self.to.attributes { + layoutToAttribute = layoutFromAttribute + } else { + layoutToAttribute = layoutToAttributes[0] + } + } else { + layoutToAttribute = layoutFromAttribute + } + #else + if self.from.attributes == self.to.attributes { + layoutToAttribute = layoutFromAttribute + } else if layoutToAttributes.count > 0 { + layoutToAttribute = layoutToAttributes[0] + } else { + layoutToAttribute = layoutFromAttribute + } + #endif // get layout constant - let layoutConstant: CGFloat = layoutToAttribute.snp_constantForValue(self.constant) + let layoutConstant: CGFloat = self.constant.constraintConstantTargetValueFor(layoutAttribute: layoutToAttribute) // get layout to - #if os(iOS) || os(tvOS) - var layoutTo: AnyObject? = self.toItem.view ?? self.toItem.layoutSupport - #else - var layoutTo: AnyObject? = self.toItem.view - #endif - if layoutTo == nil && layoutToAttribute != .Width && layoutToAttribute != .Height { - layoutTo = installOnView + var layoutTo: AnyObject? = self.to.target + + // use superview if possible + if layoutTo == nil && layoutToAttribute != .width && layoutToAttribute != .height { + layoutTo = layoutFrom.superview } // create layout constraint let layoutConstraint = LayoutConstraint( - item: layoutFrom!, + item: layoutFrom, attribute: layoutFromAttribute, relatedBy: layoutRelation, toItem: layoutTo, attribute: layoutToAttribute, - multiplier: CGFloat(self.multiplier), - constant: layoutConstant) - layoutConstraint.identifier = self.label + multiplier: self.multiplier.constraintMultiplierTargetValue, + constant: layoutConstant + ) + + // set label + layoutConstraint.label = self.label // set priority - layoutConstraint.priority = self.priority + layoutConstraint.priority = self.priority.constraintPriorityTargetValue // set constraint - layoutConstraint.snp_constraint = self + layoutConstraint.constraint = self - newLayoutConstraints.append(layoutConstraint) + // append + self.layoutConstraints.append(layoutConstraint) } - - // special logic for updating - if updateExisting { - // get existing constraints for this view - let existingLayoutConstraints = layoutFrom!.snp_installedLayoutConstraints.reverse() - - // array that will contain only new layout constraints to keep - var newLayoutConstraintsToKeep = [LayoutConstraint]() - - // begin looping - for layoutConstraint in newLayoutConstraints { - // layout constraint that should be updated - var updateLayoutConstraint: LayoutConstraint? = nil - - // loop through existing and check for match - for existingLayoutConstraint in existingLayoutConstraints { - if existingLayoutConstraint == layoutConstraint { - updateLayoutConstraint = existingLayoutConstraint - break - } - } - - // if we have existing one lets just update the constant - if updateLayoutConstraint != nil { - updateLayoutConstraint!.constant = layoutConstraint.constant - } - // otherwise add this layout constraint to new keep list - else { - newLayoutConstraintsToKeep.append(layoutConstraint) - } - } - - // set constraints to only new ones - newLayoutConstraints = newLayoutConstraintsToKeep - } - - // add constraints - #if SNAPKIT_DEPLOYMENT_LEGACY && !os(OSX) - if #available(iOS 8.0, *) { - NSLayoutConstraint.activateConstraints(newLayoutConstraints) - } else { - installOnView!.addConstraints(newLayoutConstraints) - } - #else - NSLayoutConstraint.activateConstraints(newLayoutConstraints) - #endif - - // set install info - self.installInfo = ConcreteConstraintInstallInfo(view: installOnView, layoutConstraints: NSHashTable.weakObjectsHashTable()) - - // store which layout constraints are installed for this constraint - for layoutConstraint in newLayoutConstraints { - self.installInfo!.layoutConstraints.addObject(layoutConstraint) - } - - // store the layout constraints against the layout from view - layoutFrom!.snp_installedLayoutConstraints += newLayoutConstraints - - // return the new constraints - return newLayoutConstraints } - internal func uninstallFromView() { - if let installInfo = self.installInfo, - let installedLayoutConstraints = installInfo.layoutConstraints.allObjects as? [LayoutConstraint] { - - if installedLayoutConstraints.count > 0 { - // remove the constraints from the UIView's storage - #if SNAPKIT_DEPLOYMENT_LEGACY && !os(OSX) - if #available(iOS 8.0, *) { - NSLayoutConstraint.deactivateConstraints(installedLayoutConstraints) - } else if let installedOnView = installInfo.view { - installedOnView.removeConstraints(installedLayoutConstraints) - } - #else - NSLayoutConstraint.deactivateConstraints(installedLayoutConstraints) - #endif - - // remove the constraints from the from item view - if let fromView = self.fromItem.view { - fromView.snp_installedLayoutConstraints = fromView.snp_installedLayoutConstraints.filter { - return !installedLayoutConstraints.contains($0) - } - } - } - - } - self.installInfo = nil + // MARK: Public + + @available(*, deprecated:3.0, message:"Use activate().") + public func install() { + self.activate() } -} - -private struct ConcreteConstraintInstallInfo { + @available(*, deprecated:3.0, message:"Use deactivate().") + public func uninstall() { + self.deactivate() + } - weak var view: View? = nil - let layoutConstraints: NSHashTable + public func activate() { + self.activateIfNeeded() + } -} - -private extension NSLayoutAttribute { + public func deactivate() { + self.deactivateIfNeeded() + } - private func snp_constantForValue(value: Any?) -> CGFloat { - // Float - if let float = value as? Float { - return CGFloat(float) - } - // Double - else if let double = value as? Double { - return CGFloat(double) - } - // UInt - else if let int = value as? Int { - return CGFloat(int) - } - // Int - else if let uint = value as? UInt { - return CGFloat(uint) - } - // CGFloat - else if let float = value as? CGFloat { - return float - } - // CGSize - else if let size = value as? CGSize { - if self == .Width { - return size.width - } else if self == .Height { - return size.height - } - } - // CGPoint - else if let point = value as? CGPoint { - #if os(iOS) || os(tvOS) - switch self { - case .Left, .CenterX, .LeftMargin, .CenterXWithinMargins: return point.x - case .Top, .CenterY, .TopMargin, .CenterYWithinMargins, .Baseline, .FirstBaseline: return point.y - case .Right, .RightMargin: return point.x - case .Bottom, .BottomMargin: return point.y - case .Leading, .LeadingMargin: return point.x - case .Trailing, .TrailingMargin: return point.x - case .Width, .Height, .NotAnAttribute: return CGFloat(0) - } - #else - switch self { - case .Left, .CenterX: return point.x - case .Top, .CenterY, .Baseline: return point.y - case .Right: return point.x - case .Bottom: return point.y - case .Leading: return point.x - case .Trailing: return point.x - case .Width, .Height, .NotAnAttribute: return CGFloat(0) - case .FirstBaseline: return point.y - } - #endif - } - // EdgeInsets - else if let insets = value as? EdgeInsets { - #if os(iOS) || os(tvOS) - switch self { - case .Left, .CenterX, .LeftMargin, .CenterXWithinMargins: return insets.left - case .Top, .CenterY, .TopMargin, .CenterYWithinMargins, .Baseline, .FirstBaseline: return insets.top - case .Right, .RightMargin: return insets.right - case .Bottom, .BottomMargin: return insets.bottom - case .Leading, .LeadingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right - case .Trailing, .TrailingMargin: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left - case .Width: return -insets.left + insets.right - case .Height: return -insets.top + insets.bottom - case .NotAnAttribute: return CGFloat(0) - } - #else - switch self { - case .Left, .CenterX: return insets.left - case .Top, .CenterY, .Baseline: return insets.top - case .Right: return insets.right - case .Bottom: return insets.bottom - case .Leading: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right - case .Trailing: return (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left - case .Width: return -insets.left + insets.right - case .Height: return -insets.top + insets.bottom - case .NotAnAttribute: return CGFloat(0) - case .FirstBaseline: return insets.bottom - } - #endif + @discardableResult + public func update(offset: ConstraintOffsetTarget) -> Constraint { + self.constant = offset.constraintOffsetTargetValue + return self + } + + @discardableResult + public func update(inset: ConstraintInsetTarget) -> Constraint { + self.constant = inset.constraintInsetTargetValue + return self + } + + @discardableResult + public func update(priority: ConstraintPriorityTarget) -> Constraint { + self.priority = priority.constraintPriorityTargetValue + return self + } + + @available(*, deprecated:3.0, message:"Use update(offset: ConstraintOffsetTarget) instead.") + public func updateOffset(amount: ConstraintOffsetTarget) -> Void { self.update(offset: amount) } + + @available(*, deprecated:3.0, message:"Use update(inset: ConstraintInsetTarget) instead.") + public func updateInsets(amount: ConstraintInsetTarget) -> Void { self.update(inset: amount) } + + @available(*, deprecated:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + public func updatePriority(amount: ConstraintPriorityTarget) -> Void { self.update(priority: amount) } + + @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + public func updatePriorityRequired() -> Void {} + + @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + public func updatePriorityHigh() -> Void { fatalError("Must be implemented by Concrete subclass.") } + + @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + public func updatePriorityMedium() -> Void { fatalError("Must be implemented by Concrete subclass.") } + + @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + public func updatePriorityLow() -> Void { fatalError("Must be implemented by Concrete subclass.") } + + // MARK: Internal + + internal func updateConstantAndPriorityIfNeeded() { + for layoutConstraint in self.layoutConstraints { + let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute + layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute) + layoutConstraint.priority = self.priority.constraintPriorityTargetValue } - - return CGFloat(0); } -} - -private func closestCommonSuperviewFromView(fromView: View?, toView: View?) -> View? { - var views = Set() - var fromView = fromView - var toView = toView - repeat { - if let view = toView { - if views.contains(view) { - return view - } - views.insert(view) - toView = view.superview + + internal func activateIfNeeded(updatingExisting: Bool = false) { + guard let view = self.from.view else { + print("WARNING: SnapKit failed to get from view from constraint. Activate will be a no-op.") + return } - if let view = fromView { - if views.contains(view) { - return view + let layoutConstraints = self.layoutConstraints + let existingLayoutConstraints = view.snp.constraints.map({ $0.layoutConstraints }).reduce([]) { $0 + $1 } + + if updatingExisting { + for layoutConstraint in layoutConstraints { + let existingLayoutConstraint = existingLayoutConstraints.first { $0 == layoutConstraint } + guard let updateLayoutConstraint = existingLayoutConstraint else { + fatalError("Updated constraint could not find existing matching constraint to update: \(layoutConstraint)") + } + + let updateLayoutAttribute = (updateLayoutConstraint.secondAttribute == .notAnAttribute) ? updateLayoutConstraint.firstAttribute : updateLayoutConstraint.secondAttribute + updateLayoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: updateLayoutAttribute) } - views.insert(view) - fromView = view.superview + } else { + NSLayoutConstraint.activate(layoutConstraints) + view.snp.add(constraints: [self]) } - } while (fromView != nil || toView != nil) + } - return nil -} - -private func ==(left: ConcreteConstraint, right: ConcreteConstraint) -> Bool { - return (left.fromItem == right.fromItem && - left.toItem == right.toItem && - left.relation == right.relation && - left.multiplier == right.multiplier && - left.priority == right.priority) + internal func deactivateIfNeeded() { + guard let view = self.from.view else { + print("WARNING: SnapKit failed to get from view from constraint. Deactivate will be a no-op.") + return + } + let layoutConstraints = self.layoutConstraints + NSLayoutConstraint.deactivate(layoutConstraints) + view.snp.remove(constraints: [self]) + } } diff --git a/Example/Pods/SnapKit/Source/ConstraintAttributes.swift b/Example/Pods/SnapKit/Source/ConstraintAttributes.swift index 95bfddb..7236d24 100644 --- a/Example/Pods/SnapKit/Source/ConstraintAttributes.swift +++ b/Example/Pods/SnapKit/Source/ConstraintAttributes.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,15 +22,13 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to define `NSLayoutAttributes` in a more concise and composite manner -*/ -internal struct ConstraintAttributes: OptionSetType, BooleanType { + +internal struct ConstraintAttributes: OptionSet { internal init(rawValue: UInt) { self.rawValue = rawValue @@ -48,135 +46,145 @@ internal struct ConstraintAttributes: OptionSetType, BooleanType { internal var boolValue: Bool { return self.rawValue != 0 } internal func toRaw() -> UInt { return self.rawValue } - internal static func fromRaw(raw: UInt) -> ConstraintAttributes? { return self.init(raw) } - internal static func fromMask(raw: UInt) -> ConstraintAttributes { return self.init(raw) } + internal static func fromRaw(_ raw: UInt) -> ConstraintAttributes? { return self.init(raw) } + internal static func fromMask(_ raw: UInt) -> ConstraintAttributes { return self.init(raw) } // normal - internal static var None: ConstraintAttributes { return self.init(0) } - internal static var Left: ConstraintAttributes { return self.init(1) } - internal static var Top: ConstraintAttributes { return self.init(2) } - internal static var Right: ConstraintAttributes { return self.init(4) } - internal static var Bottom: ConstraintAttributes { return self.init(8) } - internal static var Leading: ConstraintAttributes { return self.init(16) } - internal static var Trailing: ConstraintAttributes { return self.init(32) } - internal static var Width: ConstraintAttributes { return self.init(64) } - internal static var Height: ConstraintAttributes { return self.init(128) } - internal static var CenterX: ConstraintAttributes { return self.init(256) } - internal static var CenterY: ConstraintAttributes { return self.init(512) } - internal static var Baseline: ConstraintAttributes { return self.init(1024) } + internal static var none: ConstraintAttributes { return self.init(0) } + internal static var left: ConstraintAttributes { return self.init(1) } + internal static var top: ConstraintAttributes { return self.init(2) } + internal static var right: ConstraintAttributes { return self.init(4) } + internal static var bottom: ConstraintAttributes { return self.init(8) } + internal static var leading: ConstraintAttributes { return self.init(16) } + internal static var trailing: ConstraintAttributes { return self.init(32) } + internal static var width: ConstraintAttributes { return self.init(64) } + internal static var height: ConstraintAttributes { return self.init(128) } + internal static var centerX: ConstraintAttributes { return self.init(256) } + internal static var centerY: ConstraintAttributes { return self.init(512) } + internal static var lastBaseline: ConstraintAttributes { return self.init(1024) } + + @available(iOS 8.0, OSX 10.11, *) + internal static var firstBaseline: ConstraintAttributes { return self.init(2048) } @available(iOS 8.0, *) - internal static var FirstBaseline: ConstraintAttributes { return self.init(2048) } - @available(iOS 8.0, *) - internal static var LeftMargin: ConstraintAttributes { return self.init(4096) } + internal static var leftMargin: ConstraintAttributes { return self.init(4096) } + @available(iOS 8.0, *) - internal static var RightMargin: ConstraintAttributes { return self.init(8192) } + internal static var rightMargin: ConstraintAttributes { return self.init(8192) } + @available(iOS 8.0, *) - internal static var TopMargin: ConstraintAttributes { return self.init(16384) } + internal static var topMargin: ConstraintAttributes { return self.init(16384) } + @available(iOS 8.0, *) - internal static var BottomMargin: ConstraintAttributes { return self.init(32768) } + internal static var bottomMargin: ConstraintAttributes { return self.init(32768) } + @available(iOS 8.0, *) - internal static var LeadingMargin: ConstraintAttributes { return self.init(65536) } + internal static var leadingMargin: ConstraintAttributes { return self.init(65536) } + @available(iOS 8.0, *) - internal static var TrailingMargin: ConstraintAttributes { return self.init(131072) } + internal static var trailingMargin: ConstraintAttributes { return self.init(131072) } + @available(iOS 8.0, *) - internal static var CenterXWithinMargins: ConstraintAttributes { return self.init(262144) } + internal static var centerXWithinMargins: ConstraintAttributes { return self.init(262144) } + @available(iOS 8.0, *) - internal static var CenterYWithinMargins: ConstraintAttributes { return self.init(524288) } + internal static var centerYWithinMargins: ConstraintAttributes { return self.init(524288) } // aggregates - internal static var Edges: ConstraintAttributes { return self.init(15) } - internal static var Size: ConstraintAttributes { return self.init(192) } - internal static var Center: ConstraintAttributes { return self.init(768) } + internal static var edges: ConstraintAttributes { return self.init(15) } + internal static var size: ConstraintAttributes { return self.init(192) } + internal static var center: ConstraintAttributes { return self.init(768) } @available(iOS 8.0, *) - internal static var Margins: ConstraintAttributes { return self.init(61440) } + internal static var margins: ConstraintAttributes { return self.init(61440) } @available(iOS 8.0, *) - internal static var CenterWithinMargins: ConstraintAttributes { return self.init(786432) } + internal static var centerWithinMargins: ConstraintAttributes { return self.init(786432) } internal var layoutAttributes:[NSLayoutAttribute] { var attrs = [NSLayoutAttribute]() - if (self.contains(ConstraintAttributes.Left)) { - attrs.append(.Left) + if (self.contains(ConstraintAttributes.left)) { + attrs.append(.left) } - if (self.contains(ConstraintAttributes.Top)) { - attrs.append(.Top) + if (self.contains(ConstraintAttributes.top)) { + attrs.append(.top) } - if (self.contains(ConstraintAttributes.Right)) { - attrs.append(.Right) + if (self.contains(ConstraintAttributes.right)) { + attrs.append(.right) } - if (self.contains(ConstraintAttributes.Bottom)) { - attrs.append(.Bottom) + if (self.contains(ConstraintAttributes.bottom)) { + attrs.append(.bottom) } - if (self.contains(ConstraintAttributes.Leading)) { - attrs.append(.Leading) + if (self.contains(ConstraintAttributes.leading)) { + attrs.append(.leading) } - if (self.contains(ConstraintAttributes.Trailing)) { - attrs.append(.Trailing) + if (self.contains(ConstraintAttributes.trailing)) { + attrs.append(.trailing) } - if (self.contains(ConstraintAttributes.Width)) { - attrs.append(.Width) + if (self.contains(ConstraintAttributes.width)) { + attrs.append(.width) } - if (self.contains(ConstraintAttributes.Height)) { - attrs.append(.Height) + if (self.contains(ConstraintAttributes.height)) { + attrs.append(.height) } - if (self.contains(ConstraintAttributes.CenterX)) { - attrs.append(.CenterX) + if (self.contains(ConstraintAttributes.centerX)) { + attrs.append(.centerX) } - if (self.contains(ConstraintAttributes.CenterY)) { - attrs.append(.CenterY) + if (self.contains(ConstraintAttributes.centerY)) { + attrs.append(.centerY) } - if (self.contains(ConstraintAttributes.Baseline)) { - attrs.append(.Baseline) + if (self.contains(ConstraintAttributes.lastBaseline)) { + attrs.append(.lastBaseline) } #if os(iOS) || os(tvOS) - #if SNAPKIT_DEPLOYMENT_LEGACY - guard #available(iOS 8.0, *) else { - return attrs - } - #endif - if (self.contains(ConstraintAttributes.FirstBaseline)) { - attrs.append(.FirstBaseline) - } - if (self.contains(ConstraintAttributes.LeftMargin)) { - attrs.append(.LeftMargin) - } - if (self.contains(ConstraintAttributes.RightMargin)) { - attrs.append(.RightMargin) - } - if (self.contains(ConstraintAttributes.TopMargin)) { - attrs.append(.TopMargin) - } - if (self.contains(ConstraintAttributes.BottomMargin)) { - attrs.append(.BottomMargin) - } - if (self.contains(ConstraintAttributes.LeadingMargin)) { - attrs.append(.LeadingMargin) - } - if (self.contains(ConstraintAttributes.TrailingMargin)) { - attrs.append(.TrailingMargin) - } - if (self.contains(ConstraintAttributes.CenterXWithinMargins)) { - attrs.append(.CenterXWithinMargins) - } - if (self.contains(ConstraintAttributes.CenterYWithinMargins)) { - attrs.append(.CenterYWithinMargins) - } + if (self.contains(ConstraintAttributes.firstBaseline)) { + attrs.append(.firstBaseline) + } + if (self.contains(ConstraintAttributes.leftMargin)) { + attrs.append(.leftMargin) + } + if (self.contains(ConstraintAttributes.rightMargin)) { + attrs.append(.rightMargin) + } + if (self.contains(ConstraintAttributes.topMargin)) { + attrs.append(.topMargin) + } + if (self.contains(ConstraintAttributes.bottomMargin)) { + attrs.append(.bottomMargin) + } + if (self.contains(ConstraintAttributes.leadingMargin)) { + attrs.append(.leadingMargin) + } + if (self.contains(ConstraintAttributes.trailingMargin)) { + attrs.append(.trailingMargin) + } + if (self.contains(ConstraintAttributes.centerXWithinMargins)) { + attrs.append(.centerXWithinMargins) + } + if (self.contains(ConstraintAttributes.centerYWithinMargins)) { + attrs.append(.centerYWithinMargins) + } #endif return attrs } } -internal func +=(inout left: ConstraintAttributes, right: ConstraintAttributes) { - left.unionInPlace(right) + +internal func + (left: ConstraintAttributes, right: ConstraintAttributes) -> ConstraintAttributes { + return left.union(right) +} + +internal func +=(left: inout ConstraintAttributes, right: ConstraintAttributes) { + left.formUnion(right) } -internal func -=(inout left: ConstraintAttributes, right: ConstraintAttributes) { - left.subtractInPlace(right) + +internal func -=(left: inout ConstraintAttributes, right: ConstraintAttributes) { + left.subtract(right) } + internal func ==(left: ConstraintAttributes, right: ConstraintAttributes) -> Bool { return left.rawValue == right.rawValue } diff --git a/Example/Pods/SnapKit/Source/ConstraintDescription.swift b/Example/Pods/SnapKit/Source/ConstraintDescription.swift index 6eb5492..d961fb5 100644 --- a/Example/Pods/SnapKit/Source/ConstraintDescription.swift +++ b/Example/Pods/SnapKit/Source/ConstraintDescription.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,585 +22,48 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to expose the final API of a `ConstraintDescription` which allows getting a constraint from it - */ -public protocol ConstraintDescriptionFinalizable: class { - - var constraint: Constraint { get } - - func labeled(label: String) -> ConstraintDescriptionFinalizable - -} - -/** - Used to expose priority APIs - */ -public protocol ConstraintDescriptionPriortizable: ConstraintDescriptionFinalizable { - - func priority(priority: Float) -> ConstraintDescriptionFinalizable - func priority(priority: Double) -> ConstraintDescriptionFinalizable - func priority(priority: CGFloat) -> ConstraintDescriptionFinalizable - func priority(priority: UInt) -> ConstraintDescriptionFinalizable - func priority(priority: Int) -> ConstraintDescriptionFinalizable - func priorityRequired() -> ConstraintDescriptionFinalizable - func priorityHigh() -> ConstraintDescriptionFinalizable - func priorityMedium() -> ConstraintDescriptionFinalizable - func priorityLow() -> ConstraintDescriptionFinalizable -} - -/** - Used to expose multiplier & constant APIs -*/ -public protocol ConstraintDescriptionEditable: ConstraintDescriptionPriortizable { - - func multipliedBy(amount: Float) -> ConstraintDescriptionEditable - func multipliedBy(amount: Double) -> ConstraintDescriptionEditable - func multipliedBy(amount: CGFloat) -> ConstraintDescriptionEditable - func multipliedBy(amount: Int) -> ConstraintDescriptionEditable - func multipliedBy(amount: UInt) -> ConstraintDescriptionEditable - - func dividedBy(amount: Float) -> ConstraintDescriptionEditable - func dividedBy(amount: Double) -> ConstraintDescriptionEditable - func dividedBy(amount: CGFloat) -> ConstraintDescriptionEditable - func dividedBy(amount: Int) -> ConstraintDescriptionEditable - func dividedBy(amount: UInt) -> ConstraintDescriptionEditable - - func offset(amount: Float) -> ConstraintDescriptionEditable - func offset(amount: Double) -> ConstraintDescriptionEditable - func offset(amount: CGFloat) -> ConstraintDescriptionEditable - func offset(amount: Int) -> ConstraintDescriptionEditable - func offset(amount: UInt) -> ConstraintDescriptionEditable - func offset(amount: CGPoint) -> ConstraintDescriptionEditable - func offset(amount: CGSize) -> ConstraintDescriptionEditable - func offset(amount: EdgeInsets) -> ConstraintDescriptionEditable - - func inset(amount: Float) -> ConstraintDescriptionEditable - func inset(amount: Double) -> ConstraintDescriptionEditable - func inset(amount: CGFloat) -> ConstraintDescriptionEditable - func inset(amount: Int) -> ConstraintDescriptionEditable - func inset(amount: UInt) -> ConstraintDescriptionEditable - func inset(amount: EdgeInsets) -> ConstraintDescriptionEditable -} - -/** - Used to expose relation APIs -*/ -public protocol ConstraintDescriptionRelatable: class { - - func equalTo(other: ConstraintItem) -> ConstraintDescriptionEditable - func equalTo(other: View) -> ConstraintDescriptionEditable - @available(iOS 7.0, *) - func equalTo(other: LayoutSupport) -> ConstraintDescriptionEditable - @available(iOS 9.0, OSX 10.11, *) - func equalTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable - func equalTo(other: Float) -> ConstraintDescriptionEditable - func equalTo(other: Double) -> ConstraintDescriptionEditable - func equalTo(other: CGFloat) -> ConstraintDescriptionEditable - func equalTo(other: Int) -> ConstraintDescriptionEditable - func equalTo(other: UInt) -> ConstraintDescriptionEditable - func equalTo(other: CGSize) -> ConstraintDescriptionEditable - func equalTo(other: CGPoint) -> ConstraintDescriptionEditable - func equalTo(other: EdgeInsets) -> ConstraintDescriptionEditable - - func lessThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: View) -> ConstraintDescriptionEditable - @available(iOS 7.0, *) - func lessThanOrEqualTo(other: LayoutSupport) -> ConstraintDescriptionEditable - @available(iOS 9.0, OSX 10.11, *) - func lessThanOrEqualTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: Float) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: Double) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: Int) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: UInt) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: CGSize) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionEditable - func lessThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionEditable - - func greaterThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: View) -> ConstraintDescriptionEditable - @available(iOS 7.0, *) - func greaterThanOrEqualTo(other: LayoutSupport) -> ConstraintDescriptionEditable - @available(iOS 9.0, OSX 10.11, *) - func greaterThanOrEqualTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: Float) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: Double) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: Int) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: UInt) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: CGSize) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionEditable - func greaterThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionEditable - -} -/** - Used to expose chaining APIs -*/ -public protocol ConstraintDescriptionExtendable: ConstraintDescriptionRelatable { - - var left: ConstraintDescriptionExtendable { get } - var top: ConstraintDescriptionExtendable { get } - var bottom: ConstraintDescriptionExtendable { get } - var right: ConstraintDescriptionExtendable { get } - var leading: ConstraintDescriptionExtendable { get } - var trailing: ConstraintDescriptionExtendable { get } - var width: ConstraintDescriptionExtendable { get } - var height: ConstraintDescriptionExtendable { get } - var centerX: ConstraintDescriptionExtendable { get } - var centerY: ConstraintDescriptionExtendable { get } - var baseline: ConstraintDescriptionExtendable { get } - - @available(iOS 8.0, *) - var firstBaseline: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var leftMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var rightMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var topMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var bottomMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var leadingMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var trailingMargin: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var centerXWithinMargins: ConstraintDescriptionExtendable { get } - @available(iOS 8.0, *) - var centerYWithinMargins: ConstraintDescriptionExtendable { get } -} - -/** - Used to internally manage building constraint - */ -internal class ConstraintDescription: ConstraintDescriptionExtendable, ConstraintDescriptionEditable, ConstraintDescriptionFinalizable { - - internal var left: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Left) } - internal var top: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Top) } - internal var right: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Right) } - internal var bottom: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Bottom) } - internal var leading: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Leading) } - internal var trailing: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Trailing) } - internal var width: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Width) } - internal var height: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Height) } - internal var centerX: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterX) } - internal var centerY: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterY) } - internal var baseline: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.Baseline) } - internal var label: String? - - @available(iOS 8.0, *) - internal var firstBaseline: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.FirstBaseline) } - @available(iOS 8.0, *) - internal var leftMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.LeftMargin) } - @available(iOS 8.0, *) - internal var rightMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.RightMargin) } - @available(iOS 8.0, *) - internal var topMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.TopMargin) } - @available(iOS 8.0, *) - internal var bottomMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.BottomMargin) } - @available(iOS 8.0, *) - internal var leadingMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.LeadingMargin) } - @available(iOS 8.0, *) - internal var trailingMargin: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.TrailingMargin) } - @available(iOS 8.0, *) - internal var centerXWithinMargins: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterXWithinMargins) } - @available(iOS 8.0, *) - internal var centerYWithinMargins: ConstraintDescriptionExtendable { return self.addConstraint(ConstraintAttributes.CenterYWithinMargins) } - - // MARK: initializer - - init(fromItem: ConstraintItem) { - self.fromItem = fromItem - self.toItem = ConstraintItem(object: nil, attributes: ConstraintAttributes.None) - } - - // MARK: equalTo - - internal func equalTo(other: ConstraintItem) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - internal func equalTo(other: View) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - @available(iOS 7.0, *) - internal func equalTo(other: LayoutSupport) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - @available(iOS 9.0, OSX 10.11, *) - internal func equalTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - internal func equalTo(other: Float) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - internal func equalTo(other: Double) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .Equal) - } - internal func equalTo(other: CGFloat) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .Equal) - } - internal func equalTo(other: Int) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .Equal) - } - internal func equalTo(other: UInt) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .Equal) - } - internal func equalTo(other: CGSize) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - internal func equalTo(other: CGPoint) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - internal func equalTo(other: EdgeInsets) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .Equal) - } - - // MARK: lessThanOrEqualTo - - internal func lessThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: View) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - @available(iOS 7.0, *) - internal func lessThanOrEqualTo(other: LayoutSupport) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - @available(iOS 9.0, OSX 10.11, *) - internal func lessThanOrEqualTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: Float) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: Double) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: Int) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: UInt) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: CGSize) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func lessThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - - // MARK: greaterThanOrEqualTo - - internal func greaterThanOrEqualTo(other: ConstraintItem) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: View) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - @available(iOS 7.0, *) - internal func greaterThanOrEqualTo(other: LayoutSupport) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - @available(iOS 9.0, OSX 10.11, *) - internal func greaterThanOrEqualTo(other: NSLayoutAnchor) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .LessThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: Float) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: Double) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: CGFloat) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: Int) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: UInt) -> ConstraintDescriptionEditable { - return self.constrainTo(Float(other), relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: CGSize) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: CGPoint) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - internal func greaterThanOrEqualTo(other: EdgeInsets) -> ConstraintDescriptionEditable { - return self.constrainTo(other, relation: .GreaterThanOrEqualTo) - } - - // MARK: multiplier - - internal func multipliedBy(amount: Float) -> ConstraintDescriptionEditable { - self.multiplier = amount - return self - } - internal func multipliedBy(amount: Double) -> ConstraintDescriptionEditable { - return self.multipliedBy(Float(amount)) - } - internal func multipliedBy(amount: CGFloat) -> ConstraintDescriptionEditable { - return self.multipliedBy(Float(amount)) - } - internal func multipliedBy(amount: Int) -> ConstraintDescriptionEditable { - return self.multipliedBy(Float(amount)) - } - internal func multipliedBy(amount: UInt) -> ConstraintDescriptionEditable { - return self.multipliedBy(Float(amount)) - } - - internal func dividedBy(amount: Float) -> ConstraintDescriptionEditable { - self.multiplier = 1.0 / amount; - return self - } - internal func dividedBy(amount: Double) -> ConstraintDescriptionEditable { - return self.dividedBy(Float(amount)) - } - internal func dividedBy(amount: CGFloat) -> ConstraintDescriptionEditable { - return self.dividedBy(Float(amount)) - } - internal func dividedBy(amount: Int) -> ConstraintDescriptionEditable { - return self.dividedBy(Float(amount)) - } - internal func dividedBy(amount: UInt) -> ConstraintDescriptionEditable { - return self.dividedBy(Float(amount)) - } - - // MARK: offset - - internal func offset(amount: Float) -> ConstraintDescriptionEditable { - self.constant = amount - return self - } - internal func offset(amount: Double) -> ConstraintDescriptionEditable { - return self.offset(Float(amount)) - } - internal func offset(amount: CGFloat) -> ConstraintDescriptionEditable { - return self.offset(Float(amount)) - } - internal func offset(amount: Int) -> ConstraintDescriptionEditable { - return self.offset(Float(amount)) - } - internal func offset(amount: UInt) -> ConstraintDescriptionEditable { - return self.offset(Float(amount)) - } - internal func offset(amount: CGPoint) -> ConstraintDescriptionEditable { - self.constant = amount - return self - } - internal func offset(amount: CGSize) -> ConstraintDescriptionEditable { - self.constant = amount - return self - } - internal func offset(amount: EdgeInsets) -> ConstraintDescriptionEditable { - self.constant = amount - return self - } - - // MARK: inset - - internal func inset(amount: Float) -> ConstraintDescriptionEditable { - let value = CGFloat(amount) - self.constant = EdgeInsets(top: value, left: value, bottom: -value, right: -value) - return self - } - internal func inset(amount: Double) -> ConstraintDescriptionEditable { - let value = CGFloat(amount) - self.constant = EdgeInsets(top: value, left: value, bottom: -value, right: -value) - return self - } - internal func inset(amount: CGFloat) -> ConstraintDescriptionEditable { - self.constant = EdgeInsets(top: amount, left: amount, bottom: -amount, right: -amount) - return self - } - internal func inset(amount: Int) -> ConstraintDescriptionEditable { - let value = CGFloat(amount) - self.constant = EdgeInsets(top: value, left: value, bottom: -value, right: -value) - return self - } - internal func inset(amount: UInt) -> ConstraintDescriptionEditable { - let value = CGFloat(amount) - self.constant = EdgeInsets(top: value, left: value, bottom: -value, right: -value) - return self - } - internal func inset(amount: EdgeInsets) -> ConstraintDescriptionEditable { - self.constant = EdgeInsets(top: amount.top, left: amount.left, bottom: -amount.bottom, right: -amount.right) - return self - } - - // MARK: priority - - internal func priority(priority: Float) -> ConstraintDescriptionFinalizable { - self.priority = priority - return self - } - internal func priority(priority: Double) -> ConstraintDescriptionFinalizable { - return self.priority(Float(priority)) - } - internal func priority(priority: CGFloat) -> ConstraintDescriptionFinalizable { - return self.priority(Float(priority)) - } - func priority(priority: UInt) -> ConstraintDescriptionFinalizable { - return self.priority(Float(priority)) - } - internal func priority(priority: Int) -> ConstraintDescriptionFinalizable { - return self.priority(Float(priority)) - } - internal func priorityRequired() -> ConstraintDescriptionFinalizable { - return self.priority(1000.0) - } - internal func priorityHigh() -> ConstraintDescriptionFinalizable { - return self.priority(750.0) - } - internal func priorityMedium() -> ConstraintDescriptionFinalizable { - #if os(iOS) || os(tvOS) - return self.priority(500.0) - #else - return self.priority(501.0) - #endif - } - internal func priorityLow() -> ConstraintDescriptionFinalizable { - return self.priority(250.0) - } - - // MARK: Constraint - - internal var constraint: Constraint { - if self.concreteConstraint == nil { - if self.relation == nil { - fatalError("Attempting to create a constraint from a ConstraintDescription before it has been fully chained.") - } - self.concreteConstraint = ConcreteConstraint( - fromItem: self.fromItem, - toItem: self.toItem, - relation: self.relation!, - constant: self.constant, - multiplier: self.multiplier, - priority: self.priority, - label: self.label) - } - return self.concreteConstraint! - } - - func labeled(label: String) -> ConstraintDescriptionFinalizable { - self.label = label - return self - } - - // MARK: Private - - private let fromItem: ConstraintItem - private var toItem: ConstraintItem { - willSet { - if self.concreteConstraint != nil { - fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.") - } - } - } - private var relation: ConstraintRelation? { - willSet { - if self.concreteConstraint != nil { - fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.") - } - } - } - private var constant: Any = Float(0.0) { - willSet { - if self.concreteConstraint != nil { - fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.") - } - } - } - private var multiplier: Float = 1.0 { - willSet { - if self.concreteConstraint != nil { - fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.") - } - } - } - private var priority: Float = 1000.0 { - willSet { - if self.concreteConstraint != nil { - fatalError("Attempting to modify a ConstraintDescription after its constraint has been created.") - } - } - } - private var concreteConstraint: ConcreteConstraint? = nil - - private func addConstraint(attributes: ConstraintAttributes) -> ConstraintDescription { - if self.relation == nil { - self.fromItem.attributes += attributes +public class ConstraintDescription { + + internal let view: ConstraintView + internal var attributes: ConstraintAttributes + internal var relation: ConstraintRelation? = nil + internal var sourceLocation: (String, UInt)? = nil + internal var label: String? = nil + internal var related: ConstraintItem? = nil + internal var multiplier: ConstraintMultiplierTarget = 1.0 + internal var constant: ConstraintConstantTarget = 0.0 + internal var priority: ConstraintPriorityTarget = 1000.0 + internal lazy var constraint: Constraint? = { + guard let relation = self.relation, + let related = self.related, + let sourceLocation = self.sourceLocation else { + return nil } - return self + let from = ConstraintItem(target: self.view, attributes: self.attributes) + + return Constraint( + from: from, + to: related, + relation: relation, + sourceLocation: sourceLocation, + label: self.label, + multiplier: self.multiplier, + constant: self.constant, + priority: self.priority + ) + }() + + // MARK: Initialization + + internal init(view: ConstraintView, attributes: ConstraintAttributes) { + self.view = view + self.attributes = attributes } - private func constrainTo(other: ConstraintItem, relation: ConstraintRelation) -> ConstraintDescription { - if other.attributes != ConstraintAttributes.None { - let toLayoutAttributes = other.attributes.layoutAttributes - if toLayoutAttributes.count > 1 { - let fromLayoutAttributes = self.fromItem.attributes.layoutAttributes - if toLayoutAttributes != fromLayoutAttributes { - NSException(name: "Invalid Constraint", reason: "Cannot constrain to multiple non identical attributes", userInfo: nil).raise() - return self - } - other.attributes = ConstraintAttributes.None - } - } - self.toItem = other - self.relation = relation - return self - } - - private func constrainTo(other: View, relation: ConstraintRelation) -> ConstraintDescription { - return constrainTo(ConstraintItem(object: other, attributes: ConstraintAttributes.None), relation: relation) - } - - @available(iOS 7.0, *) - private func constrainTo(other: LayoutSupport, relation: ConstraintRelation) -> ConstraintDescription { - return constrainTo(ConstraintItem(object: other, attributes: ConstraintAttributes.None), relation: relation) - } - - @available(iOS 9.0, OSX 10.11, *) - private func constrainTo(other: NSLayoutAnchor, relation: ConstraintRelation) -> ConstraintDescription { - return constrainTo(ConstraintItem(object: other, attributes: ConstraintAttributes.None), relation: relation) - } - - private func constrainTo(other: Float, relation: ConstraintRelation) -> ConstraintDescription { - self.constant = other - return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation) - } - - private func constrainTo(other: Double, relation: ConstraintRelation) -> ConstraintDescription { - self.constant = other - return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation) - } - - private func constrainTo(other: CGSize, relation: ConstraintRelation) -> ConstraintDescription { - self.constant = other - return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation) - } - - private func constrainTo(other: CGPoint, relation: ConstraintRelation) -> ConstraintDescription { - self.constant = other - return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation) - } - - private func constrainTo(other: EdgeInsets, relation: ConstraintRelation) -> ConstraintDescription { - self.constant = other - return constrainTo(ConstraintItem(object: nil, attributes: ConstraintAttributes.None), relation: relation) - } } diff --git a/Example/Pods/SnapKit/Source/ConstraintItem.swift b/Example/Pods/SnapKit/Source/ConstraintItem.swift index b2c9062..a9477da 100644 --- a/Example/Pods/SnapKit/Source/ConstraintItem.swift +++ b/Example/Pods/SnapKit/Source/ConstraintItem.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,47 +22,40 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to assist in building a constraint -*/ -public class ConstraintItem { + +public class ConstraintItem: Equatable { + + internal weak var target: AnyObject? + internal let attributes: ConstraintAttributes - internal init(object: AnyObject?, attributes: ConstraintAttributes) { - self.object = object + internal init(target: AnyObject?, attributes: ConstraintAttributes) { + self.target = target self.attributes = attributes } - internal weak var object: AnyObject? - internal var attributes: ConstraintAttributes - - internal var view: View? { - return self.object as? View + internal var view: ConstraintView? { + return self.target as? ConstraintView } - @available(iOS 7.0, *) - internal var layoutSupport: LayoutSupport? { - return self.object as? LayoutSupport - } } - -internal func ==(left: ConstraintItem, right: ConstraintItem) -> Bool { - if left.object == nil { - return false +public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { + // pointer equality + guard lhs !== rhs else { + return true } - if right.object == nil { - return false - } - if left.object !== right.object { - return false - } - if left.attributes != right.attributes { - return false + + // must both have valid targets and identical attributes + guard let target1 = lhs.target, + let target2 = rhs.target, + target1 === target2 && lhs.attributes == rhs.attributes else { + return false } + return true -} \ No newline at end of file +} diff --git a/Example/Pods/SnapKit/Source/ConstraintMaker.swift b/Example/Pods/SnapKit/Source/ConstraintMaker.swift index 154b9dd..73bc3cd 100644 --- a/Example/Pods/SnapKit/Source/ConstraintMaker.swift +++ b/Example/Pods/SnapKit/Source/ConstraintMaker.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,175 +22,185 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to make constraints -*/ public class ConstraintMaker { - /// left edge - public var left: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Left) } + public var left: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.left) + } - /// top edge - public var top: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Top) } + public var top: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.top) + } - /// right edge - public var right: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Right) } + public var bottom: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.bottom) + } - /// bottom edge - public var bottom: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Bottom) } + public var right: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.right) + } - /// leading edge - public var leading: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Leading) } + public var leading: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.leading) + } - /// trailing edge - public var trailing: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Trailing) } + public var trailing: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.trailing) + } - /// width dimension - public var width: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Width) } + public var width: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.width) + } - /// height dimension - public var height: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Height) } + public var height: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.height) + } - /// centerX dimension - public var centerX: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterX) } + public var centerX: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.centerX) + } - /// centerY dimension - public var centerY: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterY) } + public var centerY: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.centerY) + } - /// baseline position - public var baseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Baseline) } + @available(*, deprecated:3.0, message:"Use lastBaseline instead") + public var baseline: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.lastBaseline) + } - /// firse baseline position - @available(iOS 8.0, *) - public var firstBaseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.FirstBaseline) } + public var lastBaseline: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.lastBaseline) + } - /// left margin - @available(iOS 8.0, *) - public var leftMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeftMargin) } + @available(iOS 8.0, OSX 10.11, *) + public var firstBaseline: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.firstBaseline) + } - /// right margin @available(iOS 8.0, *) - public var rightMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.RightMargin) } + public var leftMargin: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.leftMargin) + } - /// top margin @available(iOS 8.0, *) - public var topMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TopMargin) } + public var rightMargin: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.rightMargin) + } - /// bottom margin @available(iOS 8.0, *) - public var bottomMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.BottomMargin) } + public var bottomMargin: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.bottomMargin) + } - /// leading margin @available(iOS 8.0, *) - public var leadingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeadingMargin) } + public var leadingMargin: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.leadingMargin) + } - /// trailing margin @available(iOS 8.0, *) - public var trailingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TrailingMargin) } + public var trailingMargin: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.trailingMargin) + } - /// centerX within margins @available(iOS 8.0, *) - public var centerXWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterXWithinMargins) } + public var centerXWithinMargins: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.centerXWithinMargins) + } - /// centerY within margins @available(iOS 8.0, *) - public var centerYWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterYWithinMargins) } - - /// top + left + bottom + right edges - public var edges: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Edges) } - - /// width + height dimensions - public var size: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Size) } + public var centerYWithinMargins: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.centerYWithinMargins) + } - // centerX + centerY positions - public var center: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Center) } + public var edges: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.edges) + } + public var size: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.size) + } + public var center: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.center) + } - // top + left + bottom + right margins @available(iOS 8.0, *) - public var margins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Margins) } + public var margins: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.margins) + } - // centerX + centerY within margins @available(iOS 8.0, *) - public var centerWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterWithinMargins) } + public var centerWithinMargins: ConstraintMakerExtendable { + return self.makeExtendableWithAttributes(.centerWithinMargins) + } - internal init(view: View, file: String, line: UInt) { + private let view: ConstraintView + private var descriptions = [ConstraintDescription]() + + internal init(view: ConstraintView) { self.view = view - self.file = file - self.line = line + self.view.translatesAutoresizingMaskIntoConstraints = false } - internal let file: String - internal let line: UInt - internal let view: View - internal var constraintDescriptions = [ConstraintDescription]() - - internal func makeConstraintDescription(attributes: ConstraintAttributes) -> ConstraintDescription { - let item = ConstraintItem(object: self.view, attributes: attributes) - let constraintDescription = ConstraintDescription(fromItem: item) - self.constraintDescriptions.append(constraintDescription) - return constraintDescription + internal func makeExtendableWithAttributes(_ attributes: ConstraintAttributes) -> ConstraintMakerExtendable { + let description = ConstraintDescription(view: self.view, attributes: attributes) + self.descriptions.append(description) + return ConstraintMakerExtendable(description) } - internal class func prepareConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] { - let maker = ConstraintMaker(view: view, file: file, line: line) - closure(make: maker) - - let constraints = maker.constraintDescriptions.map { $0.constraint } - for constraint in constraints { - constraint.makerFile = maker.file - constraint.makerLine = maker.line - } + internal static func prepareConstraints(view: ConstraintView, closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { + let maker = ConstraintMaker(view: view) + closure(maker) + let constraints = maker.descriptions + .map { $0.constraint } + .filter { $0 != nil } + .map { $0! } return constraints } - internal class func makeConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { - view.translatesAutoresizingMaskIntoConstraints = false - let maker = ConstraintMaker(view: view, file: file, line: line) - closure(make: maker) - - let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } + internal static func makeConstraints(view: ConstraintView, closure: (_ make: ConstraintMaker) -> Void) { + let maker = ConstraintMaker(view: view) + closure(maker) + let constraints = maker.descriptions + .map { $0.constraint } + .filter { $0 != nil } + .map { $0! } for constraint in constraints { - constraint.makerFile = maker.file - constraint.makerLine = maker.line - constraint.installOnView(updateExisting: false) + constraint.activateIfNeeded(updatingExisting: false) } } - internal class func remakeConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { - view.translatesAutoresizingMaskIntoConstraints = false - let maker = ConstraintMaker(view: view, file: file, line: line) - closure(make: maker) - + internal static func remakeConstraints(view: ConstraintView, closure: (_ make: ConstraintMaker) -> Void) { self.removeConstraints(view: view) - let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } - for constraint in constraints { - constraint.makerFile = maker.file - constraint.makerLine = maker.line - constraint.installOnView(updateExisting: false) - } + self.makeConstraints(view: view, closure: closure) } - internal class func updateConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { - view.translatesAutoresizingMaskIntoConstraints = false - let maker = ConstraintMaker(view: view, file: file, line: line) - closure(make: maker) + internal static func updateConstraints(view: ConstraintView, closure: (_ make: ConstraintMaker) -> Void) { + guard view.snp.constraints.count > 0 else { + self.makeConstraints(view: view, closure: closure) + return + } - let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint} + let maker = ConstraintMaker(view: view) + closure(maker) + let constraints = maker.descriptions + .map { $0.constraint } + .filter { $0 != nil } + .map { $0! } for constraint in constraints { - constraint.makerFile = maker.file - constraint.makerLine = maker.line - constraint.installOnView(updateExisting: true) + constraint.activateIfNeeded(updatingExisting: true) } } - internal class func removeConstraints(view view: View) { - for existingLayoutConstraint in view.snp_installedLayoutConstraints { - existingLayoutConstraint.snp_constraint?.uninstall() + internal static func removeConstraints(view: ConstraintView) { + let constraints = view.snp.constraints + for constraint in constraints { + constraint.deactivateIfNeeded() } } + } diff --git a/Example/Pods/SnapKit/Source/ConstraintRelation.swift b/Example/Pods/SnapKit/Source/ConstraintRelation.swift index f1b1ab2..48afbfc 100644 --- a/Example/Pods/SnapKit/Source/ConstraintRelation.swift +++ b/Example/Pods/SnapKit/Source/ConstraintRelation.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,27 +22,27 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to define `NSLayoutRelation` -*/ + internal enum ConstraintRelation: Int { - case Equal = 1, LessThanOrEqualTo, GreaterThanOrEqualTo + case equal = 1 + case lessThanOrEqual + case greaterThanOrEqual internal var layoutRelation: NSLayoutRelation { get { switch(self) { - case .LessThanOrEqualTo: - return .LessThanOrEqual - case .GreaterThanOrEqualTo: - return .GreaterThanOrEqual - default: - return .Equal + case .equal: + return .equal + case .lessThanOrEqual: + return .lessThanOrEqual + case .greaterThanOrEqual: + return .greaterThanOrEqual } } } -} \ No newline at end of file +} diff --git a/Example/Pods/SnapKit/Source/Debugging.swift b/Example/Pods/SnapKit/Source/Debugging.swift index 302012a..fdc505d 100644 --- a/Example/Pods/SnapKit/Source/Debugging.swift +++ b/Example/Pods/SnapKit/Source/Debugging.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,72 +22,47 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to allow adding a snp_label to a View for debugging purposes -*/ -public extension View { - - public var snp_label: String? { - get { - return objc_getAssociatedObject(self, &labelKey) as? String - } - set { - objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC) - } - } - -} - -/** - Used to allow adding a snp_label to a LayoutConstraint for debugging purposes -*/ public extension LayoutConstraint { - public var snp_label: String? { - get { - return objc_getAssociatedObject(self, &labelKey) as? String - } - set { - objc_setAssociatedObject(self, &labelKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC) - } - } - override public var description: String { var description = "<" description += descriptionForObject(self) - description += " \(descriptionForObject(self.firstItem))" - if self.firstAttribute != .NotAnAttribute { - description += ".\(self.firstAttribute.snp_description)" + if let firstItem = conditionalOptional(from: self.firstItem) { + description += " \(descriptionForObject(firstItem))" + } + + if self.firstAttribute != .notAnAttribute { + description += ".\(descriptionForAttribute(self.firstAttribute))" } - description += " \(self.relation.snp_description)" + description += " \(descriptionForRelation(self.relation))" - if let secondItem: AnyObject = self.secondItem { + if let secondItem = self.secondItem { description += " \(descriptionForObject(secondItem))" } - if self.secondAttribute != .NotAnAttribute { - description += ".\(self.secondAttribute.snp_description)" + if self.secondAttribute != .notAnAttribute { + description += ".\(descriptionForAttribute(self.secondAttribute))" } if self.multiplier != 1.0 { description += " * \(self.multiplier)" } - if self.secondAttribute == .NotAnAttribute { + if self.secondAttribute == .notAnAttribute { description += " \(self.constant)" } else { if self.constant > 0.0 { description += " + \(self.constant)" } else if self.constant < 0.0 { - description += " - \(CGFloat.abs(self.constant))" + description += " - \(abs(self.constant))" } } @@ -100,97 +75,86 @@ public extension LayoutConstraint { return description } - internal var snp_makerFile: String? { - return self.snp_constraint?.makerFile - } - - internal var snp_makerLine: UInt? { - return self.snp_constraint?.makerLine +} + +private func descriptionForRelation(_ relation: NSLayoutRelation) -> String { + switch relation { + case .equal: return "==" + case .greaterThanOrEqual: return ">=" + case .lessThanOrEqual: return "<=" } - } -private var labelKey = "" +private func descriptionForAttribute(_ attribute: NSLayoutAttribute) -> String { + #if os(iOS) || os(tvOS) + switch attribute { + case .notAnAttribute: return "notAnAttribute" + case .top: return "top" + case .left: return "left" + case .bottom: return "bottom" + case .right: return "right" + case .leading: return "leading" + case .trailing: return "trailing" + case .width: return "width" + case .height: return "height" + case .centerX: return "centerX" + case .centerY: return "centerY" + case .lastBaseline: return "lastBaseline" + case .firstBaseline: return "firstBaseline" + case .topMargin: return "topMargin" + case .leftMargin: return "leftMargin" + case .bottomMargin: return "bottomMargin" + case .rightMargin: return "rightMargin" + case .leadingMargin: return "leadingMargin" + case .trailingMargin: return "trailingMargin" + case .centerXWithinMargins: return "centerXWithinMargins" + case .centerYWithinMargins: return "centerYWithinMargins" + } + #else + switch attribute { + case .notAnAttribute: return "notAnAttribute" + case .top: return "top" + case .left: return "left" + case .bottom: return "bottom" + case .right: return "right" + case .leading: return "leading" + case .trailing: return "trailing" + case .width: return "width" + case .height: return "height" + case .centerX: return "centerX" + case .centerY: return "centerY" + case .lastBaseline: return "lastBaseline" + case .firstBaseline: return "firstBaseline" + } + #endif +} + +private func conditionalOptional(from object: Optional) -> Optional { + return object +} + +private func conditionalOptional(from object: T) -> Optional { + return Optional.some(object) +} -private func descriptionForObject(object: AnyObject) -> String { - let pointerDescription = NSString(format: "%p", ObjectIdentifier(object).uintValue) +private func descriptionForObject(_ object: AnyObject) -> String { + let pointerDescription = String(format: "%p", UInt(bitPattern: ObjectIdentifier(object))) var desc = "" - desc += object.dynamicType.description() + desc += type(of: object).description() - if let object = object as? View { - desc += ":\(object.snp_label ?? pointerDescription)" + if let object = object as? ConstraintView { + desc += ":\(object.snp.label() ?? pointerDescription)" } else if let object = object as? LayoutConstraint { - desc += ":\(object.snp_label ?? pointerDescription)" + desc += ":\(object.label ?? pointerDescription)" } else { desc += ":\(pointerDescription)" } - if let object = object as? LayoutConstraint, let file = object.snp_makerFile, let line = object.snp_makerLine { - desc += "@\(file)#\(line)" + if let object = object as? LayoutConstraint, let file = object.constraint?.sourceLocation.0, let line = object.constraint?.sourceLocation.1 { + desc += "@\((file as NSString).lastPathComponent)#\(line)" } desc += "" return desc } - -private extension NSLayoutRelation { - - private var snp_description: String { - switch self { - case .Equal: return "==" - case .GreaterThanOrEqual: return ">=" - case .LessThanOrEqual: return "<=" - } - } - -} - -private extension NSLayoutAttribute { - - private var snp_description: String { - #if os(iOS) || os(tvOS) - switch self { - case .NotAnAttribute: return "notAnAttribute" - case .Top: return "top" - case .Left: return "left" - case .Bottom: return "bottom" - case .Right: return "right" - case .Leading: return "leading" - case .Trailing: return "trailing" - case .Width: return "width" - case .Height: return "height" - case .CenterX: return "centerX" - case .CenterY: return "centerY" - case .Baseline: return "baseline" - case .FirstBaseline: return "firstBaseline" - case .TopMargin: return "topMargin" - case .LeftMargin: return "leftMargin" - case .BottomMargin: return "bottomMargin" - case .RightMargin: return "rightMargin" - case .LeadingMargin: return "leadingMargin" - case .TrailingMargin: return "trailingMargin" - case .CenterXWithinMargins: return "centerXWithinMargins" - case .CenterYWithinMargins: return "centerYWithinMargins" - } - #else - switch self { - case .NotAnAttribute: return "notAnAttribute" - case .Top: return "top" - case .Left: return "left" - case .Bottom: return "bottom" - case .Right: return "right" - case .Leading: return "leading" - case .Trailing: return "trailing" - case .Width: return "width" - case .Height: return "height" - case .CenterX: return "centerX" - case .CenterY: return "centerY" - case .Baseline: return "baseline" - default: return "default" - } - #endif - - } - -} diff --git a/Example/Pods/SnapKit/Source/EdgeInsets.swift b/Example/Pods/SnapKit/Source/EdgeInsets.swift deleted file mode 100644 index 299874a..0000000 --- a/Example/Pods/SnapKit/Source/EdgeInsets.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) -import UIKit -public typealias EdgeInsets = UIEdgeInsets -public func EdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> EdgeInsets { - return EdgeInsets(top: top, left: left, bottom: bottom, right: right) -} -public let EdgeInsetsZero = EdgeInsets(top: 0, left: 0, bottom: 0, right: 0) -#else -import AppKit -public typealias EdgeInsets = NSEdgeInsets -public func EdgeInsetsMake(top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) -> EdgeInsets { - return EdgeInsets(top: top, left: left, bottom: bottom, right: right) -} -public let EdgeInsetsZero = EdgeInsets(top: 0, left: 0, bottom: 0, right: 0) -#endif diff --git a/Example/Pods/SnapKit/Source/LayoutConstraint.swift b/Example/Pods/SnapKit/Source/LayoutConstraint.swift index 14ec1ed..27c4105 100644 --- a/Example/Pods/SnapKit/Source/LayoutConstraint.swift +++ b/Example/Pods/SnapKit/Source/LayoutConstraint.swift @@ -1,7 +1,7 @@ // // SnapKit // -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit +// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -22,42 +22,36 @@ // THE SOFTWARE. #if os(iOS) || os(tvOS) -import UIKit + import UIKit #else -import AppKit + import AppKit #endif -/** - Used to add extra information to the actual `NSLayoutConstraint`'s that will UIKit/AppKit will utilize -*/ + public class LayoutConstraint: NSLayoutConstraint { - internal var snp_constraint: Constraint? = nil + public var label: String? { + get { + return self.identifier + } + set { + self.identifier = newValue + } + } + + internal weak var constraint: Constraint? = nil } -internal func ==(left: LayoutConstraint, right: LayoutConstraint) -> Bool { - if left.firstItem !== right.firstItem { - return false - } - if left.secondItem !== right.secondItem { - return false - } - if left.firstAttribute != right.firstAttribute { - return false - } - if left.secondAttribute != right.secondAttribute { - return false - } - if left.relation != right.relation { - return false - } - if left.priority != right.priority { - return false - } - if left.multiplier != right.multiplier { +internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { + guard lhs.firstItem === rhs.firstItem && + lhs.secondItem === rhs.secondItem && + lhs.firstAttribute == rhs.firstAttribute && + lhs.secondAttribute == rhs.secondAttribute && + lhs.relation == rhs.relation && + lhs.priority == rhs.priority && + lhs.multiplier == rhs.multiplier else { return false } return true } - diff --git a/Example/Pods/SnapKit/Source/SnapKit.swift b/Example/Pods/SnapKit/Source/SnapKit.swift deleted file mode 100644 index 3aa5181..0000000 --- a/Example/Pods/SnapKit/Source/SnapKit.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) -import UIKit -public typealias InterfaceLayoutDirection = UIUserInterfaceLayoutDirection -public typealias LayoutSupport = UILayoutSupport -#else -import AppKit -public typealias InterfaceLayoutDirection = NSUserInterfaceLayoutDirection -public class LayoutSupport {} -#endif - -/** - Used to configure different parts of SnapKit -*/ -public struct Config { - - /// The interface layout direction - public static var interfaceLayoutDirection = InterfaceLayoutDirection.LeftToRight - -} \ No newline at end of file diff --git a/Example/Pods/SnapKit/Source/View+SnapKit.swift b/Example/Pods/SnapKit/Source/View+SnapKit.swift deleted file mode 100644 index a6ed6e4..0000000 --- a/Example/Pods/SnapKit/Source/View+SnapKit.swift +++ /dev/null @@ -1,183 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) -import UIKit -public typealias View = UIView -#else -import AppKit -public typealias View = NSView -#endif - -/** - Used to expose public API on views -*/ -public extension View { - - /// left edge - public var snp_left: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Left) } - - /// top edge - public var snp_top: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Top) } - - /// right edge - public var snp_right: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Right) } - - /// bottom edge - public var snp_bottom: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Bottom) } - - /// leading edge - public var snp_leading: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Leading) } - - /// trailing edge - public var snp_trailing: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Trailing) } - - /// width dimension - public var snp_width: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Width) } - - /// height dimension - public var snp_height: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Height) } - - /// centerX position - public var snp_centerX: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterX) } - - /// centerY position - public var snp_centerY: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterY) } - - /// baseline position - public var snp_baseline: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Baseline) } - - /// first baseline position - @available(iOS 8.0, *) - public var snp_firstBaseline: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.FirstBaseline) } - - /// left margin - @available(iOS 8.0, *) - public var snp_leftMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.LeftMargin) } - - /// right margin - @available(iOS 8.0, *) - public var snp_rightMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.RightMargin) } - - /// top margin - @available(iOS 8.0, *) - public var snp_topMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.TopMargin) } - - /// bottom margin - @available(iOS 8.0, *) - public var snp_bottomMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.BottomMargin) } - - /// leading margin - @available(iOS 8.0, *) - public var snp_leadingMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.LeadingMargin) } - - /// trailing margin - @available(iOS 8.0, *) - public var snp_trailingMargin: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.TrailingMargin) } - - /// centerX within margins - @available(iOS 8.0, *) - public var snp_centerXWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterXWithinMargins) } - - /// centerY within margins - @available(iOS 8.0, *) - public var snp_centerYWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterYWithinMargins) } - - // top + left + bottom + right edges - public var snp_edges: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Edges) } - - // width + height dimensions - public var snp_size: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Size) } - - // centerX + centerY positions - public var snp_center: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Center) } - - // top + left + bottom + right margins - @available(iOS 8.0, *) - public var snp_margins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.Margins) } - - // centerX + centerY within margins - @available(iOS 8.0, *) - public var snp_centerWithinMargins: ConstraintItem { return ConstraintItem(object: self, attributes: ConstraintAttributes.CenterWithinMargins) } - - /** - Prepares constraints with a `ConstraintMaker` and returns the made constraints but does not install them. - - :param: closure that will be passed the `ConstraintMaker` to make the constraints with - - :returns: the constraints made - */ - public func snp_prepareConstraints(file: String = #file, line: UInt = #line, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] { - return ConstraintMaker.prepareConstraints(view: self, file: file, line: line, closure: closure) - } - - /** - Makes constraints with a `ConstraintMaker` and installs them along side any previous made constraints. - - :param: closure that will be passed the `ConstraintMaker` to make the constraints with - */ - public func snp_makeConstraints(file: String = #file, line: UInt = #line, @noescape closure: (make: ConstraintMaker) -> Void) -> Void { - ConstraintMaker.makeConstraints(view: self, file: file, line: line, closure: closure) - } - - /** - Updates constraints with a `ConstraintMaker` that will replace existing constraints that match and install new ones. - - For constraints to match only the constant can be updated. - - :param: closure that will be passed the `ConstraintMaker` to update the constraints with - */ - public func snp_updateConstraints(file: String = #file, line: UInt = #line, @noescape closure: (make: ConstraintMaker) -> Void) -> Void { - ConstraintMaker.updateConstraints(view: self, file: file, line: line, closure: closure) - } - - /** - Remakes constraints with a `ConstraintMaker` that will first remove all previously made constraints and make and install new ones. - - :param: closure that will be passed the `ConstraintMaker` to remake the constraints with - */ - public func snp_remakeConstraints(file: String = #file, line: UInt = #line, @noescape closure: (make: ConstraintMaker) -> Void) -> Void { - ConstraintMaker.remakeConstraints(view: self, file: file, line: line, closure: closure) - } - - /** - Removes all previously made constraints. - */ - public func snp_removeConstraints() { - ConstraintMaker.removeConstraints(view: self) - } - - internal var snp_installedLayoutConstraints: [LayoutConstraint] { - get { - if let constraints = objc_getAssociatedObject(self, &installedLayoutConstraintsKey) as? [LayoutConstraint] { - return constraints - } - return [] - } - set { - objc_setAssociatedObject(self, &installedLayoutConstraintsKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} - -private var installedLayoutConstraintsKey = "" diff --git a/Example/Pods/SnapKit/Source/ViewController+SnapKit.swift b/Example/Pods/SnapKit/Source/ViewController+SnapKit.swift deleted file mode 100644 index ed5451b..0000000 --- a/Example/Pods/SnapKit/Source/ViewController+SnapKit.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) -import UIKit - -/** - Used to expose public API on view controllers -*/ -public extension UIViewController { - - /// top layout guide top - public var snp_topLayoutGuideTop: ConstraintItem { return ConstraintItem(object: self.topLayoutGuide, attributes: ConstraintAttributes.Top) } - - /// top layout guide bottom - public var snp_topLayoutGuideBottom: ConstraintItem { return ConstraintItem(object: self.topLayoutGuide, attributes: ConstraintAttributes.Bottom) } - - /// bottom layout guide top - public var snp_bottomLayoutGuideTop: ConstraintItem { return ConstraintItem(object: self.bottomLayoutGuide, attributes: ConstraintAttributes.Top) } - - /// bottom layout guide bottom - public var snp_bottomLayoutGuideBottom: ConstraintItem { return ConstraintItem(object: self.bottomLayoutGuide, attributes: ConstraintAttributes.Bottom) } - -} -#endif diff --git a/Example/Pods/Target Support Files/LiquidFloatingActionButton/Info.plist b/Example/Pods/Target Support Files/LiquidFloatingActionButton/Info.plist index b24015f..0d7bfa2 100644 --- a/Example/Pods/Target Support Files/LiquidFloatingActionButton/Info.plist +++ b/Example/Pods/Target Support Files/LiquidFloatingActionButton/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.1.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.2.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Example/Pods/Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.xcconfig b/Example/Pods/Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.xcconfig index 3118ac0..edd420b 100644 --- a/Example/Pods/Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.xcconfig +++ b/Example/Pods/Target Support Files/LiquidFloatingActionButton/LiquidFloatingActionButton.xcconfig @@ -1,5 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/LiquidFloatingActionButton" "${PODS_ROOT}/Headers/Public" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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} -SKIP_INSTALL = YES \ No newline at end of file +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist index 11db4b7..2243fe6 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Info.plist @@ -2,25 +2,25 @@ - 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 - + 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-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown index 08d9f8c..9568dbf 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.markdown @@ -46,4 +46,4 @@ 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 - http://cocoapods.org +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.plist index 1128086..46a4029 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-acknowledgements.plist @@ -34,6 +34,8 @@ 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 LiquidFloatingActionButton Type @@ -61,6 +63,8 @@ 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 SnapKit Type @@ -68,7 +72,7 @@ THE SOFTWARE. FooterText - Generated by CocoaPods - http://cocoapods.org + Generated by CocoaPods - https://cocoapods.org Title Type diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh index c9965ef..938531a 100755 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-frameworks.sh @@ -16,7 +16,7 @@ install_framework() local source="$1" fi - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then echo "Symlinked..." @@ -59,8 +59,8 @@ 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_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" fi } @@ -84,10 +84,10 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "Pods-LiquidFloatingActionButton_Example/LiquidFloatingActionButton.framework" - install_framework "Pods-LiquidFloatingActionButton_Example/SnapKit.framework" + install_framework "$BUILT_PRODUCTS_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework" + install_framework "$BUILT_PRODUCTS_DIR/SnapKit/SnapKit.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "Pods-LiquidFloatingActionButton_Example/LiquidFloatingActionButton.framework" - install_framework "Pods-LiquidFloatingActionButton_Example/SnapKit.framework" + install_framework "$BUILT_PRODUCTS_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework" + install_framework "$BUILT_PRODUCTS_DIR/SnapKit/SnapKit.framework" fi diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh index 16774fb..0a15615 100755 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example-resources.sh @@ -1,13 +1,28 @@ #!/bin/sh set -e -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt > "$RESOURCES_TO_COPY" XCASSET_FILES=() +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + realpath() { DIRECTORY="$(cd "${1%/*}" && pwd)" FILENAME="${1##*/}" @@ -16,50 +31,57 @@ realpath() { install_resource() { - case $1 in + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac } -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -68,21 +90,6 @@ rm -f "$RESOURCES_TO_COPY" if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) while read line; do @@ -91,5 +98,5 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig index ffedbcc..2495afb 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.debug.xcconfig @@ -1,8 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton" "$PODS_CONFIGURATION_BUILD_DIR/SnapKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/SnapKit.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SnapKit/SnapKit.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "LiquidFloatingActionButton" -framework "SnapKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LiquidFloatingActionButton_Example -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig index ffedbcc..2495afb 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Example/Pods-LiquidFloatingActionButton_Example.release.xcconfig @@ -1,8 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton" "$PODS_CONFIGURATION_BUILD_DIR/SnapKit" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton.framework/Headers" -iquote "$CONFIGURATION_BUILD_DIR/SnapKit.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SnapKit/SnapKit.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "LiquidFloatingActionButton" -framework "SnapKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LiquidFloatingActionButton_Example -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist index 11db4b7..2243fe6 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Info.plist @@ -2,25 +2,25 @@ - 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 - + 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-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown index 0d04137..a36bfbf 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.markdown @@ -23,4 +23,4 @@ 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 - http://cocoapods.org +Generated by CocoaPods - https://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist index b09eecd..3725f64 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-acknowledgements.plist @@ -34,6 +34,8 @@ 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 LiquidFloatingActionButton Type @@ -41,7 +43,7 @@ THE SOFTWARE. FooterText - Generated by CocoaPods - http://cocoapods.org + Generated by CocoaPods - https://cocoapods.org Title Type diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh index a71003f..77988ef 100755 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-frameworks.sh @@ -16,7 +16,7 @@ install_framework() local source="$1" fi - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then echo "Symlinked..." @@ -59,8 +59,8 @@ 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_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" fi } @@ -84,8 +84,8 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "Pods-LiquidFloatingActionButton_Tests/LiquidFloatingActionButton.framework" + install_framework "$BUILT_PRODUCTS_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "Pods-LiquidFloatingActionButton_Tests/LiquidFloatingActionButton.framework" + install_framework "$BUILT_PRODUCTS_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework" fi diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh index 16774fb..0a15615 100755 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests-resources.sh @@ -1,13 +1,28 @@ #!/bin/sh set -e -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt > "$RESOURCES_TO_COPY" XCASSET_FILES=() +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + realpath() { DIRECTORY="$(cd "${1%/*}" && pwd)" FILENAME="${1##*/}" @@ -16,50 +31,57 @@ realpath() { install_resource() { - case $1 in + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac } -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -68,21 +90,6 @@ rm -f "$RESOURCES_TO_COPY" if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) while read line; do @@ -91,5 +98,5 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" fi diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig index ad7eaec..ba35e4e 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.debug.xcconfig @@ -1,8 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "LiquidFloatingActionButton" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LiquidFloatingActionButton_Tests -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig index ad7eaec..ba35e4e 100644 --- a/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-LiquidFloatingActionButton_Tests/Pods-LiquidFloatingActionButton_Tests.release.xcconfig @@ -1,8 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/LiquidFloatingActionButton/LiquidFloatingActionButton.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "LiquidFloatingActionButton" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-LiquidFloatingActionButton_Tests -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file +PODS_BUILD_DIR = $BUILD_DIR +PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/SnapKit/Info.plist b/Example/Pods/Target Support Files/SnapKit/Info.plist index 8c8cd6c..b0b461e 100644 --- a/Example/Pods/Target Support Files/SnapKit/Info.plist +++ b/Example/Pods/Target Support Files/SnapKit/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.20.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 3.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig b/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig index 28558bd..e6ea1b4 100644 --- a/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig +++ b/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig @@ -1,5 +1,9 @@ +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SnapKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SnapKit" "${PODS_ROOT}/Headers/Public" +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" 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} -SKIP_INSTALL = YES \ No newline at end of file +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Example/Tests/Tests.swift b/Example/Tests/Tests.swift index e33e4d8..91ce41a 100644 --- a/Example/Tests/Tests.swift +++ b/Example/Tests/Tests.swift @@ -21,7 +21,7 @@ class Tests: XCTestCase { func testPerformanceExample() { // This is an example of a performance test case. - self.measureBlock() { + self.measure() { // Put the code you want to measure the time of here. } } diff --git a/LiquidFloatingActionButton.podspec b/LiquidFloatingActionButton.podspec index 1ce91ef..f7fbf1e 100644 --- a/LiquidFloatingActionButton.podspec +++ b/LiquidFloatingActionButton.podspec @@ -8,32 +8,34 @@ Pod::Spec.new do |s| s.name = "LiquidFloatingActionButton" - s.version = "0.1.1" + s.version = "0.2.0" s.summary = "Material Design Floating Action Button in liquid state" -# 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? -# * Try to keep it short, snappy and to the point. -# * Write the description between the DESC delimiters below. -# * Finally, don't worry about the indent, CocoaPods strips it! + # 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? + # * Try to keep it short, snappy and to the point. + # * Write the description between the DESC delimiters below. + # * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESC Material Design Floating Action Button in liquid state inspired by http://www.materialup.com/posts/material-in-a-liquid-state + Forked from: https://github.com/yoavlt/LiquidFloatingActionButton DESC - s.homepage = "https://github.com/yoavlt/LiquidFloatingActionButton" + s.homepage = "https://github.com/shotaroikeda/LiquidFloatingActionButton" # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" s.license = 'MIT' - s.author = { "Takuma Yoshida" => "yoa.jmpr.w@gmail.com" } - s.source = { :git => "https://github.com/yoavlt/LiquidFloatingActionButton.git", :tag => s.version.to_s } + s.author = { "Shotaro Ikeda" => "ikeda.shot@gmail.com" } + s.source = { :git => "https://github.com/shotaroikeda/LiquidFloatingActionButton.git", :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/' s.platform = :ios, '8.0' s.requires_arc = true s.source_files = 'Pod/Classes/**/*' - s.resource_bundles = { - 'LiquidFloatingActionButton' => ['Pod/Assets/*.png'] - } + # Error in podspec if this is enabled + # s.resource_bundles = { + # 'LiquidFloatingActionButton' => ['Pod/Assets/*.png'] + # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' diff --git a/Pod/Classes/ArrayEx.swift b/Pod/Classes/ArrayEx.swift index 2e4c76f..f437fb9 100644 --- a/Pod/Classes/ArrayEx.swift +++ b/Pod/Classes/ArrayEx.swift @@ -9,7 +9,7 @@ import Foundation extension Array { - func each(f: (Element) -> ()) { + func each(_ f: (Element) -> ()) { for item in self { f(item) } diff --git a/Pod/Classes/CGPointEx.swift b/Pod/Classes/CGPointEx.swift index 6eea558..2d61c63 100644 --- a/Pod/Classes/CGPointEx.swift +++ b/Pod/Classes/CGPointEx.swift @@ -12,30 +12,30 @@ import UIKit extension CGPoint { // 足し算 - func plus(point: CGPoint) -> CGPoint { + func plus(_ point: CGPoint) -> CGPoint { return CGPoint(x: self.x + point.x, y: self.y + point.y) } // 引き算 - func minus(point: CGPoint) -> CGPoint { + func minus(_ point: CGPoint) -> CGPoint { return CGPoint(x: self.x - point.x, y: self.y - point.y) } - func minusX(dx: CGFloat) -> CGPoint { + func minusX(_ dx: CGFloat) -> CGPoint { return CGPoint(x: self.x - dx, y: self.y) } - func minusY(dy: CGFloat) -> CGPoint { + func minusY(_ dy: CGFloat) -> CGPoint { return CGPoint(x: self.x, y: self.y - dy) } // 掛け算 - func mul(rhs: CGFloat) -> CGPoint { + func mul(_ rhs: CGFloat) -> CGPoint { return CGPoint(x: self.x * rhs, y: self.y * rhs) } // 割り算 - func div(rhs: CGFloat) -> CGPoint { + func div(_ rhs: CGFloat) -> CGPoint { return CGPoint(x: self.x / rhs, y: self.y / rhs) } @@ -50,24 +50,24 @@ extension CGPoint { } // 内積 - func dot(point: CGPoint) -> CGFloat { + func dot(_ point: CGPoint) -> CGFloat { return self.x * point.x + self.y * point.y } // 外積 - func cross(point: CGPoint) -> CGFloat { + func cross(_ point: CGPoint) -> CGFloat { return self.x * point.y - self.y * point.x } - func split(point: CGPoint, ratio: CGFloat) -> CGPoint { + func split(_ point: CGPoint, ratio: CGFloat) -> CGPoint { return self.mul(ratio).plus(point.mul(1.0 - ratio)) } - func mid(point: CGPoint) -> CGPoint { + func mid(_ point: CGPoint) -> CGPoint { return split(point, ratio: 0.5) } - static func intersection(from: CGPoint, to: CGPoint, from2: CGPoint, to2: CGPoint) -> CGPoint? { + 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) @@ -84,4 +84,4 @@ extension CGPoint { return nil } -} \ No newline at end of file +} diff --git a/Pod/Classes/LiquidFloatingActionButton.swift b/Pod/Classes/LiquidFloatingActionButton.swift index 948af06..ab990ed 100644 --- a/Pod/Classes/LiquidFloatingActionButton.swift +++ b/Pod/Classes/LiquidFloatingActionButton.swift @@ -11,73 +11,70 @@ import QuartzCore // LiquidFloatingButton DataSource methods @objc public protocol LiquidFloatingActionButtonDataSource { - func numberOfCells(liquidFloatingActionButton: LiquidFloatingActionButton) -> Int - func cellForIndex(index: Int) -> LiquidFloatingCell + func numberOfCells(_ liquidFloatingActionButton: LiquidFloatingActionButton) -> Int + func cellForIndex(_ index: Int) -> LiquidFloatingCell } @objc public protocol LiquidFloatingActionButtonDelegate { // selected method - optional func liquidFloatingActionButton(liquidFloatingActionButton: LiquidFloatingActionButton, didSelectItemAtIndex index: Int) + @objc optional func liquidFloatingActionButton(_ liquidFloatingActionButton: LiquidFloatingActionButton, didSelectItemAtIndex index: Int) } public enum LiquidFloatingActionButtonAnimateStyle : Int { - case Up - case Right - case Left - case Down + case up + case right + case left + case down } @IBDesignable -public class LiquidFloatingActionButton : UIView { +open class LiquidFloatingActionButton : UIView { - private let internalRadiusRatio: CGFloat = 20.0 / 56.0 - public var cellRadiusRatio: CGFloat = 0.38 - public var animateStyle: LiquidFloatingActionButtonAnimateStyle = .Up { + fileprivate let internalRadiusRatio: CGFloat = 20.0 / 56.0 + open var cellRadiusRatio: CGFloat = 0.38 + open var animateStyle: LiquidFloatingActionButtonAnimateStyle = .up { didSet { baseView.animateStyle = animateStyle } } - public var enableShadow = true { + open var enableShadow = true { didSet { + baseView.enableShadow = self.enableShadow setNeedsDisplay() } } - public var delegate: LiquidFloatingActionButtonDelegate? - public var dataSource: LiquidFloatingActionButtonDataSource? + open var delegate: LiquidFloatingActionButtonDelegate? + open var dataSource: LiquidFloatingActionButtonDataSource? - public var responsible = true - public var isOpening: Bool { + open var responsible = true + open var isOpening: Bool { get { return !baseView.openingCells.isEmpty } } - public private(set) var isClosed: Bool = true + open fileprivate(set) var isClosed: Bool = true - @IBInspectable public 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 color: UIColor = UIColor(red: 82 / 255.0, green: 112 / 255.0, blue: 235 / 255.0, alpha: 1.0) - @IBInspectable public var image: UIImage? { + @IBInspectable open var image: UIImage? { didSet { if image != nil { - plusLayer.contents = image!.CGImage + plusLayer.contents = image!.cgImage plusLayer.path = nil } } } - @IBInspectable public var rotationDegrees: CGFloat = 45.0 + @IBInspectable open var rotationDegrees: CGFloat = 45.0 - private var plusLayer = CAShapeLayer() - private let circleLayer = CAShapeLayer() + fileprivate var plusLayer = CAShapeLayer() + fileprivate let circleLayer = CAShapeLayer() - private var touching = false + fileprivate var touching = false - private var baseView = CircleLiquidBaseView() - private let liquidView = UIView() + fileprivate var baseView = CircleLiquidBaseView() + fileprivate let liquidView = UIView() public override init(frame: CGRect) { super.init(frame: frame) @@ -89,15 +86,23 @@ public class LiquidFloatingActionButton : UIView { setup() } - private func insertCell(cell: LiquidFloatingCell) { - cell.color = self.color + fileprivate func insertCell(_ cell: LiquidFloatingCell) { + /* + // Default to the button color + if cell.color == nil { + cell.color = self.color + } + */ + // Make sure the default is my color + cell.defaultColor = self.color + cell.radius = self.frame.width * cellRadiusRatio cell.center = self.center.minus(self.frame.origin) cell.actionButton = self insertSubview(cell, aboveSubview: baseView) } - private func cellArray() -> [LiquidFloatingCell] { + fileprivate func cellArray() -> [LiquidFloatingCell] { var result: [LiquidFloatingCell] = [] if let source = dataSource { for i in 0.. CAShapeLayer { + open func createPlusLayer(_ frame: CGRect) -> CAShapeLayer { // draw plus shape let plusLayer = CAShapeLayer() plusLayer.lineCap = kCALineCapRound - plusLayer.strokeColor = UIColor.whiteColor().CGColor + plusLayer.strokeColor = UIColor.white.cgColor plusLayer.lineWidth = 3.0 let path = UIBezierPath() - path.moveToPoint(CGPoint(x: frame.width * internalRadiusRatio, y: frame.height * 0.5)) - path.addLineToPoint(CGPoint(x: frame.width * (1 - internalRadiusRatio), y: frame.height * 0.5)) - path.moveToPoint(CGPoint(x: frame.width * 0.5, y: frame.height * internalRadiusRatio)) - path.addLineToPoint(CGPoint(x: frame.width * 0.5, y: frame.height * (1 - internalRadiusRatio))) + 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 + plusLayer.path = path.cgPath return plusLayer } - private func drawCircle() { + 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 + self.circleLayer.backgroundColor = self.color.whiteTransform(0.5).cgColor } else { - self.circleLayer.backgroundColor = self.color.CGColor + self.circleLayer.backgroundColor = self.color.cgColor } } - private func drawShadow() { + fileprivate func drawShadow() { if enableShadow { circleLayer.appendShadow() } } // MARK: Events - public override func touchesBegan(touches: Set, withEvent event: UIEvent?) { + open override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.touching = true setNeedsDisplay() } - public override func touchesEnded(touches: Set, withEvent event: UIEvent?) { + open override func touchesEnded(_ touches: Set, with event: UIEvent?) { self.touching = false setNeedsDisplay() didTapped() } - public override func touchesCancelled(touches: Set?, withEvent event: UIEvent?) { + open override func touchesCancelled(_ touches: Set, with event: UIEvent?) { self.touching = false setNeedsDisplay() } - public override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? { + open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { for cell in cellArray() { - let pointForTargetView = cell.convertPoint(point, fromView: self) + let pointForTargetView = cell.convert(point, from: self) - if (CGRectContainsPoint(cell.bounds, pointForTargetView)) { - if cell.userInteractionEnabled { - return cell.hitTest(pointForTargetView, withEvent: event) + if (cell.bounds.contains(pointForTargetView)) { + if cell.isUserInteractionEnabled { + return cell.hitTest(pointForTargetView, with: event) } } } - return super.hitTest(point, withEvent: event) + return super.hitTest(point, with: event) } // MARK: private methods - private func setup() { - self.backgroundColor = UIColor.clearColor() + fileprivate func setup() { + self.backgroundColor = UIColor.clear self.clipsToBounds = false baseView.setup(self) addSubview(baseView) liquidView.frame = baseView.frame - liquidView.userInteractionEnabled = false + liquidView.isUserInteractionEnabled = false addSubview(liquidView) liquidView.layer.addSublayer(circleLayer) @@ -228,7 +233,7 @@ public class LiquidFloatingActionButton : UIView { plusLayer.frame = circleLayer.bounds } - private func didTapped() { + fileprivate func didTapped() { if isClosed { open() } else { @@ -236,7 +241,7 @@ public class LiquidFloatingActionButton : UIView { } } - public func didTappedCell(target: LiquidFloatingCell) { + open func didTappedCell(_ target: LiquidFloatingCell) { if let _ = dataSource { let cells = cellArray() for i in 0.. ()) { + func translateY(_ layer: CALayer, duration: CFTimeInterval, f: (CABasicAnimation) -> ()) { let translate = CABasicAnimation(keyPath: "transform.translation.y") f(translate) translate.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) - translate.removedOnCompletion = false + translate.isRemovedOnCompletion = false translate.fillMode = kCAFillModeForwards translate.duration = duration - layer.addAnimation(translate, forKey: "transYAnim") + layer.add(translate, forKey: "transYAnim") } } @@ -271,24 +276,18 @@ 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 animateStyle: LiquidFloatingActionButtonAnimateStyle = .up + var baseLiquid: LiquittableCircle? var engine: SimpleCircleLiquidEngine? var bigEngine: SimpleCircleLiquidEngine? var enableShadow = true - private var openingCells: [LiquidFloatingCell] = [] - private var keyDuration: CGFloat = 0 - private var displayLink: CADisplayLink? + fileprivate var openingCells: [LiquidFloatingCell] = [] + fileprivate var keyDuration: CGFloat = 0 + fileprivate var displayLink: CADisplayLink? - override func setup(actionButton: LiquidFloatingActionButton) { + override func setup(_ actionButton: LiquidFloatingActionButton) { self.frame = actionButton.frame self.center = actionButton.center.minus(actionButton.frame.origin) self.animateStyle = actionButton.animateStyle @@ -297,9 +296,7 @@ class CircleLiquidBaseView : ActionBarBaseView { 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 @@ -309,10 +306,10 @@ class CircleLiquidBaseView : ActionBarBaseView { addSubview(baseLiquid!) } - func open(cells: [LiquidFloatingCell]) { + func open(_ cells: [LiquidFloatingCell]) { stop() - displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh(_:))) - displayLink?.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) + displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh)) + displayLink?.add(to: RunLoop.current, forMode: RunLoopMode.commonModes) opening = true for cell in cells { cell.layer.removeAllAnimations() @@ -321,23 +318,23 @@ class CircleLiquidBaseView : ActionBarBaseView { } } - func close(cells: [LiquidFloatingCell]) { + func close(_ cells: [LiquidFloatingCell]) { stop() opening = false - displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh(_:))) - displayLink?.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) + displayLink = CADisplayLink(target: self, selector: #selector(CircleLiquidBaseView.didDisplayRefresh)) + displayLink?.add(to: RunLoop.current, forMode: RunLoopMode.commonModes) for cell in cells { cell.layer.removeAllAnimations() cell.layer.eraseShadow() openingCells.append(cell) - cell.userInteractionEnabled = false + cell.isUserInteractionEnabled = false } } func didFinishUpdate() { if opening { for cell in openingCells { - cell.userInteractionEnabled = true + cell.isUserInteractionEnabled = true } } else { for cell in openingCells { @@ -346,7 +343,7 @@ class CircleLiquidBaseView : ActionBarBaseView { } } - func update(delay: CGFloat, duration: CGFloat, f: (LiquidFloatingCell, Int, CGFloat) -> ()) { + func update(_ delay: CGFloat, duration: CGFloat, f: (LiquidFloatingCell, Int, CGFloat) -> ()) { if openingCells.isEmpty { return } @@ -371,11 +368,16 @@ class CircleLiquidBaseView : ActionBarBaseView { } if let firstCell = openingCells.first { + // Set color of bigEngine + bigEngine?.color = firstCell.color ?? firstCell.defaultColor bigEngine?.push(baseLiquid!, other: firstCell) } + for i in 1.. CGPoint { + func differencePoint(_ distance: CGFloat) -> CGPoint { switch animateStyle { - case .Up: + case .up: return CGPoint(x: 0, y: -distance) - case .Right: + case .right: return CGPoint(x: distance, y: 0) - case .Left: + case .left: return CGPoint(x: -distance, y: 0) - case .Down: + case .down: return CGPoint(x: 0, y: distance) } } @@ -423,7 +425,7 @@ class CircleLiquidBaseView : ActionBarBaseView { displayLink?.invalidate() } - func easeInEaseOut(t: CGFloat) -> CGFloat { + func easeInEaseOut(_ t: CGFloat) -> CGFloat { if t >= 1.0 { return 1.0 } @@ -433,7 +435,7 @@ class CircleLiquidBaseView : ActionBarBaseView { return -1 * t * (t - 2) } - func didDisplayRefresh(displayLink: CADisplayLink) { + func didDisplayRefresh(_ displayLink: CADisplayLink) { if opening { keyDuration += CGFloat(displayLink.duration) updateOpen() @@ -445,37 +447,37 @@ class CircleLiquidBaseView : ActionBarBaseView { } -public class LiquidFloatingCell : LiquittableCircle { +open class LiquidFloatingCell : LiquittableCircle { let internalRatio: CGFloat = 0.75 - public var responsible = true - public var imageView = UIImageView() + open var responsible = true + open var imageView = UIImageView() weak var actionButton: LiquidFloatingActionButton? // for implement responsible color - private var originalColor: UIColor + // private var originalColor: UIColor - public override var frame: CGRect { + open override var frame: CGRect { didSet { resizeSubviews() } } init(center: CGPoint, radius: CGFloat, color: UIColor, icon: UIImage) { - self.originalColor = color + // 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 + // self.originalColor = color super.init(center: center, radius: radius, color: color) setupView(view) } public init(icon: UIImage) { - self.originalColor = UIColor.clearColor() + // self.originalColor = UIColor.clearColor() super.init() setup(icon) } @@ -484,48 +486,48 @@ public class LiquidFloatingCell : LiquittableCircle { fatalError("init(coder:) has not been implemented") } - func setup(image: UIImage, tintColor: UIColor = UIColor.whiteColor()) { - imageView.image = image.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) + func setup(_ image: UIImage, tintColor: UIColor = UIColor.white) { + imageView.image = image.withRenderingMode(UIImageRenderingMode.alwaysTemplate) imageView.tintColor = tintColor setupView(imageView) } - public func setupView(view: UIView) { - userInteractionEnabled = false + open func setupView(_ view: UIView) { + isUserInteractionEnabled = false addSubview(view) resizeSubviews() } - private func 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) { + 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 } } - public override func touchesBegan(touches: Set, withEvent event: UIEvent?) { + open override func touchesBegan(_ touches: Set, with event: UIEvent?) { if responsible { - originalColor = color - color = originalColor.white(0.5) + // originalColor = color! + // color = originalColor.white(0.5) setNeedsDisplay() } } - public override func touchesCancelled(touches: Set?, withEvent event: UIEvent?) { + open override func touchesCancelled(_ touches: Set, with event: UIEvent?) { if responsible { - color = originalColor + // color = originalColor setNeedsDisplay() } } - override public func touchesEnded(touches: Set, withEvent event: UIEvent?) { - color = originalColor + override open func touchesEnded(_ touches: Set, with event: UIEvent?) { + // color = originalColor actionButton?.didTappedCell(self) } -} \ No newline at end of file +} diff --git a/Pod/Classes/LiquidUtil.swift b/Pod/Classes/LiquidUtil.swift index 1eeeacd..1c936e4 100644 --- a/Pod/Classes/LiquidUtil.swift +++ b/Pod/Classes/LiquidUtil.swift @@ -9,16 +9,16 @@ import Foundation import UIKit -func withBezier(f: (UIBezierPath) -> ()) -> UIBezierPath { +func withBezier(_ f: (UIBezierPath) -> ()) -> UIBezierPath { let bezierPath = UIBezierPath() f(bezierPath) - bezierPath.closePath() + bezierPath.close() return bezierPath } extension CALayer { func appendShadow() { - shadowColor = UIColor.blackColor().CGColor + shadowColor = UIColor.black.cgColor shadowRadius = 2.0 shadowOpacity = 0.1 shadowOffset = CGSize(width: 4, height: 4) @@ -27,30 +27,30 @@ extension CALayer { func eraseShadow() { shadowRadius = 0.0 - shadowColor = UIColor.clearColor().CGColor + shadowColor = UIColor.clear.cgColor } } class CGMath { - static func radToDeg(rad: CGFloat) -> CGFloat { + static func radToDeg(_ rad: CGFloat) -> CGFloat { return rad * 180 / CGFloat(M_PI) } - static func degToRad(deg: CGFloat) -> CGFloat { + static func degToRad(_ deg: CGFloat) -> CGFloat { return deg * CGFloat(M_PI) / 180 } - static func circlePoint(center: CGPoint, radius: CGFloat, rad: CGFloat) -> CGPoint { + 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] { + static func linSpace(_ from: CGFloat, to: CGFloat, n: Int) -> [CGFloat] { var values: [CGFloat] = [] for i in 0.. CAShapeLayer { + func draw(_ path: UIBezierPath) -> CAShapeLayer { circleLayer.lineWidth = 3.0 - circleLayer.fillColor = self.color.CGColor - circleLayer.path = path.CGPath + circleLayer.fillColor = self.color?.cgColor ?? self.defaultColor.cgColor + circleLayer.path = path.cgPath return circleLayer } - func circlePoint(rad: CGFloat) -> CGPoint { + func circlePoint(_ rad: CGFloat) -> CGPoint { return CGMath.circlePoint(center, radius: radius, rad: rad) } - public override func drawRect(rect: CGRect) { + open override func draw(_ rect: CGRect) { drawCircle() } -} \ No newline at end of file +} diff --git a/Pod/Classes/SimpleCircleLiquidEngine.swift b/Pod/Classes/SimpleCircleLiquidEngine.swift index a1f6c5f..37c372e 100644 --- a/Pod/Classes/SimpleCircleLiquidEngine.swift +++ b/Pod/Classes/SimpleCircleLiquidEngine.swift @@ -15,10 +15,11 @@ import UIKit class SimpleCircleLiquidEngine { let radiusThresh: CGFloat - private var layer: CALayer = CAShapeLayer() + fileprivate var layer: CALayer = CAShapeLayer() + var viscosity: CGFloat = 0.65 - var color = UIColor.redColor() + var color: UIColor = UIColor.blue var angleOpen: CGFloat = 1.0 let ConnectThresh: CGFloat = 0.3 @@ -29,7 +30,7 @@ class SimpleCircleLiquidEngine { self.angleThresh = angleThresh } - func push(circle: LiquittableCircle, other: LiquittableCircle) -> [LiquittableCircle] { + func push(_ circle: LiquittableCircle, other: LiquittableCircle) -> [LiquittableCircle] { if let paths = generateConnectedPath(circle, other: other) { let layers = paths.map(self.constructLayer) layers.each(layer.addSublayer) @@ -38,28 +39,28 @@ class SimpleCircleLiquidEngine { return [] } - func draw(parent: UIView) { + func draw(_ parent: UIView) { parent.layer.addSublayer(layer) } func clear() { layer.removeFromSuperlayer() - layer.sublayers?.each{ $0.removeFromSuperlayer() } + // layer.sublayers?.each{ $0.removeFromSuperlayer() } // let garbage collection handle this layer = CAShapeLayer() } - func constructLayer(path: UIBezierPath) -> CALayer { - let pathBounds = CGPathGetBoundingBox(path.CGPath); + func constructLayer(_ path: UIBezierPath) -> CALayer { + let pathBounds = path.cgPath.boundingBox; let shape = CAShapeLayer() - shape.fillColor = self.color.CGColor - shape.path = path.CGPath + 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) { + fileprivate 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) @@ -67,14 +68,14 @@ class SimpleCircleLiquidEngine { return (p1, p2) } - private func circleConnectedPoint(circle: LiquittableCircle, other: LiquittableCircle) -> (CGPoint, CGPoint) { + fileprivate func circleConnectedPoint(_ circle: LiquittableCircle, other: LiquittableCircle) -> (CGPoint, CGPoint) { var ratio = circleRatio(circle, other: other) ratio = (ratio + ConnectThresh) / (1.0 + ConnectThresh) let angle = CGFloat(M_PI_2) * angleOpen * ratio return circleConnectedPoint(circle, other: other, angle: angle) } - func generateConnectedPath(circle: LiquittableCircle, other: LiquittableCircle) -> [UIBezierPath]? { + func generateConnectedPath(_ circle: LiquittableCircle, other: LiquittableCircle) -> [UIBezierPath]? { if isConnected(circle, other: other) { let ratio = circleRatio(circle, other: other) switch ratio { @@ -93,27 +94,27 @@ class SimpleCircleLiquidEngine { } } - private func normalPath(circle: LiquittableCircle, other: LiquittableCircle) -> UIBezierPath? { + fileprivate func normalPath(_ circle: LiquittableCircle, other: LiquittableCircle) -> UIBezierPath? { let (p1, p2) = circleConnectedPoint(circle, other: other) let (p3, p4) = circleConnectedPoint(other, other: circle) if let crossed = CGPoint.intersection(p1, to: p3, from2: p2, to2: p4) { return withBezier { path in let r = self.circleRatio(circle, other: other) - path.moveToPoint(p1) + 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.addQuadCurveToPoint(p4, controlPoint: mul) - path.addLineToPoint(p3) - path.addQuadCurveToPoint(p2, controlPoint: mul2) + 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] { + fileprivate func splitPath(_ circle: LiquittableCircle, other: LiquittableCircle, ratio: CGFloat) -> [UIBezierPath] { let (p1, p2) = circleConnectedPoint(circle, other: other, angle: CGMath.degToRad(60)) let (p3, p4) = circleConnectedPoint(other, other: circle, angle: CGMath.degToRad(60)) @@ -124,26 +125,26 @@ class SimpleCircleLiquidEngine { let a1 = d2.split(crossed, ratio: (r * r)) let part = withBezier { path in - path.moveToPoint(p1) - path.addQuadCurveToPoint(p2, controlPoint: a1) + path.move(to: p1) + path.addQuadCurve(to: p2, controlPoint: a1) } let a2 = d1.split(crossed, ratio: (r * r)) let part2 = withBezier { path in - path.moveToPoint(p3) - path.addQuadCurveToPoint(p4, controlPoint: a2) + path.move(to: p3) + path.addQuadCurve(to: p4, controlPoint: a2) } return [part, part2] } return [] } - private func circleRatio(circle: LiquittableCircle, other: LiquittableCircle) -> CGFloat { + fileprivate 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 { + 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/Pod/Classes/UIColorEx.swift b/Pod/Classes/UIColorEx.swift index 33c77f7..06d5773 100644 --- a/Pod/Classes/UIColorEx.swift +++ b/Pod/Classes/UIColorEx.swift @@ -11,43 +11,43 @@ import UIKit extension UIColor { - var red: CGFloat { + var redComponent: CGFloat { get { - let components = CGColorGetComponents(self.CGColor) - return components[0] + let components = self.cgColor.components + return components![0] } } - var green: CGFloat { + var greenComponent: CGFloat { get { - let components = CGColorGetComponents(self.CGColor) - return components[1] + let components = self.cgColor.components + return components![1] } } - var blue: CGFloat { + var blueComponent: CGFloat { get { - let components = CGColorGetComponents(self.CGColor) - return components[2] + let components = self.cgColor.components + return components![2] } } - var alpha: CGFloat { + var alphaComponent: CGFloat { get { - return CGColorGetAlpha(self.CGColor) + return self.cgColor.alpha } } - func alpha(alpha: CGFloat) -> UIColor { - return UIColor(red: self.red, green: self.green, blue: self.blue, alpha: alpha) + func alphaTransform(_ alpha: CGFloat) -> UIColor { + return UIColor(red: self.redComponent, green: self.greenComponent, blue: self.blueComponent, alpha: alpha) } - func white(scale: CGFloat) -> UIColor { + func whiteTransform(_ scale: CGFloat) -> UIColor { return UIColor( - red: self.red + (1.0 - self.red) * scale, - green: self.green + (1.0 - self.green) * scale, - blue: self.blue + (1.0 - self.blue) * scale, + red: self.redComponent + (1.0 - self.redComponent) * scale, + green: self.greenComponent + (1.0 - self.greenComponent) * scale, + blue: self.blueComponent + (1.0 - self.blueComponent) * scale, alpha: 1.0 ) } -} \ No newline at end of file +} diff --git a/README.md b/README.md index cb1acff..460f7dc 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,9 @@ This is also [spinner loader](https://github.com/yoavlt/LiquidLoader) components You can play a demo with [appetize.io](https://appetize.io/app/f4t42hgqbnbma4m12jcg3aeebg?device=iphone5s&scale=75&orientation=portrait) +## Requirements +- Swift 2.0 is required. The swift-old branch has swift 1.0 compatibility but does not include the icon customization feature + ## Usage You just need implement `LiquidFloatingActionButtonDataSource` and `LiquidFloatingActionButtonDelegate` similar to well-known UIKit design. @@ -29,6 +32,29 @@ floatingActionButton.dataSource = self floatingActionButton.delegate = self ``` +This fork also allows the use of setting each icon's color intuitively. + +``` swift +let floatingActionButton = LiquidFloatingActionButton(frame: floatingFrame) +floatingActionButton.dataSource = self +floatingActionButton.delegate = self + +// Button 1 will become a red color! +let button1 = LiquidFloatingCell(icon: UIImage(named: iconNameThatExists)!) +button1.color = UIColor.redColor() + +// Button 2 defaults to the floatingActionButton's color. +let button2 = LiquidFloatingCell(icon: UIImage(named: iconNameThatExists)!) +``` + +This will let you have colored animations: + +![Demo](https://github.com/shotaroikeda/LiquidFloatingActionButton/blob/swift-2.0/Demo/colored_example.gif?raw=true) + +See the [example](https://github.com/shotaroikeda/LiquidFloatingActionButton/blob/swift-2.0/Example/LiquidFloatingActionButton/ViewController.swift#L97-L105) for more details. + + + ### LiquidFloatingActionButtonDataSource * func numberOfCells(liquidFloatingActionButton: LiquidFloatingActionButton) -> Int * func cellForIndex(index: Int) -> LiquidFloatingCell @@ -45,12 +71,11 @@ LiquidFloatingActionButton is available through [CocoaPods](http://cocoapods.org it, simply add the following line to your Podfile: ```ruby -pod "LiquidFloatingActionButton" +pod "LiquidFloatingActionButton", :git => "https://github.com/shotaroikeda/LiquidFloatingActionButton" ``` or, if you use [Carthage](https://github.com/Carthage/Carthage), add the following line to your `Carthage` file. - ``` -github "yoavlt/LiquidFloatingActionButton" +github "shotaroikeda/LiquidFloatingActionButton" ``` ## License