Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 33fe90797d | |||
| 2c5fd8496c | |||
| e20edfac58 | |||
| 60d91db468 | |||
| dd9a7b0d66 | |||
| 6684aa06f9 | |||
| 1b76ee765a | |||
| dc7bcba221 | |||
| 5a00091cf0 | |||
| 832e86ddcc | |||
| 3e65c688e7 | |||
| bea1457103 | |||
| fe3e74b222 | |||
| 2fd25b786d | |||
| 662bd7b493 | |||
| 0d0369ee44 | |||
| 2425e7a915 | |||
| 021827c810 | |||
| 1318b88dac | |||
| a4e46759cd | |||
| ae2d9ceb22 | |||
| 16bb26482a | |||
| d343a5ee0f | |||
| a68905e181 | |||
| d4f9e43ef4 | |||
| 6036ea9d11 | |||
| d331a5b746 | |||
| 4b5df27b3b | |||
| 354c228956 | |||
| 71f8e08e9a | |||
| 2edba5d260 | |||
| b26632dbcf | |||
| e85b2b0d00 | |||
| 264d467f59 | |||
| dfa21645fe | |||
| 702c3174f4 | |||
| 22a12d6a34 | |||
| eea26cc2ef | |||
| 20c746b86e | |||
| 8c3fd98435 | |||
| 0eacd88eb8 | |||
| 7a089554c0 | |||
| 5a666c3ed5 | |||
| 7cf32c59d3 | |||
| 706dba1ac4 | |||
| 7a2a6afa47 | |||
| f685e4f7ad | |||
| ff20705fed | |||
| baa71050be | |||
| 7079787ea2 | |||
| b9c52202fd | |||
| 5ef97c24da |
+44
-5
@@ -1,6 +1,12 @@
|
||||
# Xcode
|
||||
#
|
||||
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||
|
||||
## Build generated
|
||||
build/
|
||||
DerivedData/
|
||||
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
@@ -9,19 +15,38 @@ build/
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
xcuserdata/
|
||||
|
||||
## Other
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.xccheckout
|
||||
*.xcscmblueprint
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
*.dSYM.zip
|
||||
*.dSYM
|
||||
|
||||
## Playgrounds
|
||||
timeline.xctimeline
|
||||
playground.xcworkspace
|
||||
|
||||
# Swift Package Manager
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
||||
*.xcworkspacedata
|
||||
xcshareddata/
|
||||
Packages/
|
||||
# Package.pins
|
||||
# Package.resolved
|
||||
.build/
|
||||
|
||||
# CocoaPods
|
||||
#
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
# you should judge for yourself, the pros and cons are mentioned at:
|
||||
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
|
||||
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||
#
|
||||
# Pods/
|
||||
|
||||
@@ -31,3 +56,17 @@ DerivedData
|
||||
# Carthage/Checkouts
|
||||
|
||||
Carthage/Build
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||
# screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||
|
||||
fastlane/report.xml
|
||||
fastlane/Preview.html
|
||||
fastlane/screenshots/**/*.png
|
||||
fastlane/test_output
|
||||
|
||||
.DS_Store
|
||||
@@ -1,12 +0,0 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AIFlatSwitch'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'An alternative flat component to UISwitch on iOS'
|
||||
s.homepage = 'https://github.com/cocoatoucher/AIFlatSwitch'
|
||||
s.authors = { 'cocoatoucher' => 'cocoatoucher@aol.com' }
|
||||
s.source = { :git => 'https://github.com/cocoatoucher/AIFlatSwitch.git', :tag => s.version }
|
||||
s.ios.deployment_target = '8.0'
|
||||
s.source_files = 'Source/*.swift'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -1,418 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4EC481601ACEEA2B00A6A7BA /* AIFlatSwitch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EC481541ACEEA2B00A6A7BA /* AIFlatSwitch.framework */; };
|
||||
4EC481771ACEEB3C00A6A7BA /* AIFlatSwitch.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EC481741ACEEB3C00A6A7BA /* AIFlatSwitch.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4EC481781ACEEB3C00A6A7BA /* AIFlatSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC481751ACEEB3C00A6A7BA /* AIFlatSwitch.swift */; };
|
||||
4EC4817F1ACEECC300A6A7BA /* AIFlatSwitchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC4817B1ACEEBFB00A6A7BA /* AIFlatSwitchTests.swift */; };
|
||||
4EC481801ACEECD100A6A7BA /* AIFlatSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC481751ACEEB3C00A6A7BA /* AIFlatSwitch.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
4EC481611ACEEA2B00A6A7BA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4EC4814B1ACEEA2B00A6A7BA /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4EC481531ACEEA2B00A6A7BA;
|
||||
remoteInfo = AIFlatSwitch;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4EC481541ACEEA2B00A6A7BA /* AIFlatSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AIFlatSwitch.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4EC4815F1ACEEA2B00A6A7BA /* AIFlatSwitchTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AIFlatSwitchTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4EC481741ACEEB3C00A6A7BA /* AIFlatSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AIFlatSwitch.h; sourceTree = "<group>"; };
|
||||
4EC481751ACEEB3C00A6A7BA /* AIFlatSwitch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AIFlatSwitch.swift; sourceTree = "<group>"; };
|
||||
4EC481761ACEEB3C00A6A7BA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4EC4817B1ACEEBFB00A6A7BA /* AIFlatSwitchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AIFlatSwitchTests.swift; sourceTree = "<group>"; };
|
||||
4EC4817C1ACEEBFB00A6A7BA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
4EC481501ACEEA2B00A6A7BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4815C1ACEEA2B00A6A7BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481601ACEEA2B00A6A7BA /* AIFlatSwitch.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4EC4814A1ACEEA2B00A6A7BA = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481711ACEEB0800A6A7BA /* Source */,
|
||||
4EC481721ACEEB0D00A6A7BA /* Tests */,
|
||||
4EC481551ACEEA2B00A6A7BA /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481551ACEEA2B00A6A7BA /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481541ACEEA2B00A6A7BA /* AIFlatSwitch.framework */,
|
||||
4EC4815F1ACEEA2B00A6A7BA /* AIFlatSwitchTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481711ACEEB0800A6A7BA /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481741ACEEB3C00A6A7BA /* AIFlatSwitch.h */,
|
||||
4EC481751ACEEB3C00A6A7BA /* AIFlatSwitch.swift */,
|
||||
4EC481731ACEEB1800A6A7BA /* Supporting Files */,
|
||||
);
|
||||
path = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481721ACEEB0D00A6A7BA /* Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4817B1ACEEBFB00A6A7BA /* AIFlatSwitchTests.swift */,
|
||||
4EC4817A1ACEEBF000A6A7BA /* Supporting Files */,
|
||||
);
|
||||
path = Tests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481731ACEEB1800A6A7BA /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481761ACEEB3C00A6A7BA /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC4817A1ACEEBF000A6A7BA /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4817C1ACEEBFB00A6A7BA /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
4EC481511ACEEA2B00A6A7BA /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481771ACEEB3C00A6A7BA /* AIFlatSwitch.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
4EC481531ACEEA2B00A6A7BA /* AIFlatSwitch */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4EC4816A1ACEEA2B00A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitch" */;
|
||||
buildPhases = (
|
||||
4EC4814F1ACEEA2B00A6A7BA /* Sources */,
|
||||
4EC481501ACEEA2B00A6A7BA /* Frameworks */,
|
||||
4EC481511ACEEA2B00A6A7BA /* Headers */,
|
||||
4EC481521ACEEA2B00A6A7BA /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = AIFlatSwitch;
|
||||
productName = AIFlatSwitch;
|
||||
productReference = 4EC481541ACEEA2B00A6A7BA /* AIFlatSwitch.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
4EC4815E1ACEEA2B00A6A7BA /* AIFlatSwitchTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4EC4816D1ACEEA2B00A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchTests" */;
|
||||
buildPhases = (
|
||||
4EC4815B1ACEEA2B00A6A7BA /* Sources */,
|
||||
4EC4815C1ACEEA2B00A6A7BA /* Frameworks */,
|
||||
4EC4815D1ACEEA2B00A6A7BA /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
4EC481621ACEEA2B00A6A7BA /* PBXTargetDependency */,
|
||||
);
|
||||
name = AIFlatSwitchTests;
|
||||
productName = AIFlatSwitchTests;
|
||||
productReference = 4EC4815F1ACEEA2B00A6A7BA /* AIFlatSwitchTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
4EC4814B1ACEEA2B00A6A7BA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0620;
|
||||
ORGANIZATIONNAME = Cocoatoucher;
|
||||
TargetAttributes = {
|
||||
4EC481531ACEEA2B00A6A7BA = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
};
|
||||
4EC4815E1ACEEA2B00A6A7BA = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 4EC4814E1ACEEA2B00A6A7BA /* Build configuration list for PBXProject "AIFlatSwitch" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 4EC4814A1ACEEA2B00A6A7BA;
|
||||
productRefGroup = 4EC481551ACEEA2B00A6A7BA /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
4EC481531ACEEA2B00A6A7BA /* AIFlatSwitch */,
|
||||
4EC4815E1ACEEA2B00A6A7BA /* AIFlatSwitchTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
4EC481521ACEEA2B00A6A7BA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4815D1ACEEA2B00A6A7BA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
4EC4814F1ACEEA2B00A6A7BA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481781ACEEB3C00A6A7BA /* AIFlatSwitch.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4815B1ACEEA2B00A6A7BA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481801ACEECD100A6A7BA /* AIFlatSwitch.swift in Sources */,
|
||||
4EC4817F1ACEECC300A6A7BA /* AIFlatSwitchTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
4EC481621ACEEA2B00A6A7BA /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4EC481531ACEEA2B00A6A7BA /* AIFlatSwitch */;
|
||||
targetProxy = 4EC481611ACEEA2B00A6A7BA /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
4EC481681ACEEA2B00A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC481691ACEEA2B00A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4EC4816B1ACEEA2B00A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC4816C1ACEEA2B00A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4EC4816E1ACEEA2B00A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC4816F1ACEEA2B00A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
4EC4814E1ACEEA2B00A6A7BA /* Build configuration list for PBXProject "AIFlatSwitch" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC481681ACEEA2B00A6A7BA /* Debug */,
|
||||
4EC481691ACEEA2B00A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4EC4816A1ACEEA2B00A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitch" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC4816B1ACEEA2B00A6A7BA /* Debug */,
|
||||
4EC4816C1ACEEA2B00A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4EC4816D1ACEEA2B00A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC4816E1ACEEA2B00A6A7BA /* Debug */,
|
||||
4EC4816F1ACEEA2B00A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 4EC4814B1ACEEA2B00A6A7BA /* Project object */;
|
||||
}
|
||||
@@ -1,495 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4EC481901ACEED2900A6A7BA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC4818F1ACEED2900A6A7BA /* AppDelegate.swift */; };
|
||||
4EC481921ACEED2900A6A7BA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EC481911ACEED2900A6A7BA /* ViewController.swift */; };
|
||||
4EC481951ACEED2900A6A7BA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4EC481931ACEED2900A6A7BA /* Main.storyboard */; };
|
||||
4EC481971ACEED2900A6A7BA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4EC481961ACEED2900A6A7BA /* Images.xcassets */; };
|
||||
4EC4819A1ACEED2900A6A7BA /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4EC481981ACEED2900A6A7BA /* LaunchScreen.xib */; };
|
||||
608646D5E8623B080E899C3D /* Pods.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF7DC1425F3779CC71001207 /* Pods.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
4EC481A01ACEED2900A6A7BA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4EC481821ACEED2900A6A7BA /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4EC481891ACEED2900A6A7BA;
|
||||
remoteInfo = AIFlatSwitchExample;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4EC4818A1ACEED2900A6A7BA /* AIFlatSwitchExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AIFlatSwitchExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4EC4818E1ACEED2900A6A7BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4EC4818F1ACEED2900A6A7BA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
4EC481911ACEED2900A6A7BA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
4EC481941ACEED2900A6A7BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
4EC481961ACEED2900A6A7BA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
4EC481991ACEED2900A6A7BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
4EC4819F1ACEED2900A6A7BA /* AIFlatSwitchExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AIFlatSwitchExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4EC481A41ACEED2900A6A7BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
686E691C7A429D25E5279F1B /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; };
|
||||
C0B699992027755D13EBA9AC /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
CF7DC1425F3779CC71001207 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
4EC481871ACEED2900A6A7BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
608646D5E8623B080E899C3D /* Pods.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4819C1ACEED2900A6A7BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4EC481811ACEED2900A6A7BA = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4818C1ACEED2900A6A7BA /* AIFlatSwitchExample */,
|
||||
4EC481A21ACEED2900A6A7BA /* AIFlatSwitchExampleTests */,
|
||||
4EC4818B1ACEED2900A6A7BA /* Products */,
|
||||
9F88FD0EABE72008D2DEB033 /* Pods */,
|
||||
5CE229E64536CB6DA2CF26E6 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC4818B1ACEED2900A6A7BA /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4818A1ACEED2900A6A7BA /* AIFlatSwitchExample.app */,
|
||||
4EC4819F1ACEED2900A6A7BA /* AIFlatSwitchExampleTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC4818C1ACEED2900A6A7BA /* AIFlatSwitchExample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4818F1ACEED2900A6A7BA /* AppDelegate.swift */,
|
||||
4EC481911ACEED2900A6A7BA /* ViewController.swift */,
|
||||
4EC481931ACEED2900A6A7BA /* Main.storyboard */,
|
||||
4EC481961ACEED2900A6A7BA /* Images.xcassets */,
|
||||
4EC481981ACEED2900A6A7BA /* LaunchScreen.xib */,
|
||||
4EC4818D1ACEED2900A6A7BA /* Supporting Files */,
|
||||
);
|
||||
path = AIFlatSwitchExample;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC4818D1ACEED2900A6A7BA /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC4818E1ACEED2900A6A7BA /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481A21ACEED2900A6A7BA /* AIFlatSwitchExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481A31ACEED2900A6A7BA /* Supporting Files */,
|
||||
);
|
||||
path = AIFlatSwitchExampleTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481A31ACEED2900A6A7BA /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4EC481A41ACEED2900A6A7BA /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5CE229E64536CB6DA2CF26E6 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CF7DC1425F3779CC71001207 /* Pods.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9F88FD0EABE72008D2DEB033 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C0B699992027755D13EBA9AC /* Pods.debug.xcconfig */,
|
||||
686E691C7A429D25E5279F1B /* Pods.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
4EC481891ACEED2900A6A7BA /* AIFlatSwitchExample */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4EC481A91ACEED2900A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchExample" */;
|
||||
buildPhases = (
|
||||
6E2097817B1329D89E948A7D /* Check Pods Manifest.lock */,
|
||||
4EC481861ACEED2900A6A7BA /* Sources */,
|
||||
4EC481871ACEED2900A6A7BA /* Frameworks */,
|
||||
4EC481881ACEED2900A6A7BA /* Resources */,
|
||||
B6354AAE5457CAC06943E284 /* Embed Pods Frameworks */,
|
||||
90634CAF3C27FABCEB26A84E /* Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = AIFlatSwitchExample;
|
||||
productName = AIFlatSwitchExample;
|
||||
productReference = 4EC4818A1ACEED2900A6A7BA /* AIFlatSwitchExample.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
4EC4819E1ACEED2900A6A7BA /* AIFlatSwitchExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4EC481AC1ACEED2900A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchExampleTests" */;
|
||||
buildPhases = (
|
||||
4EC4819B1ACEED2900A6A7BA /* Sources */,
|
||||
4EC4819C1ACEED2900A6A7BA /* Frameworks */,
|
||||
4EC4819D1ACEED2900A6A7BA /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
4EC481A11ACEED2900A6A7BA /* PBXTargetDependency */,
|
||||
);
|
||||
name = AIFlatSwitchExampleTests;
|
||||
productName = AIFlatSwitchExampleTests;
|
||||
productReference = 4EC4819F1ACEED2900A6A7BA /* AIFlatSwitchExampleTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
4EC481821ACEED2900A6A7BA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0620;
|
||||
ORGANIZATIONNAME = cocoatoucher;
|
||||
TargetAttributes = {
|
||||
4EC481891ACEED2900A6A7BA = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
};
|
||||
4EC4819E1ACEED2900A6A7BA = {
|
||||
CreatedOnToolsVersion = 6.2;
|
||||
TestTargetID = 4EC481891ACEED2900A6A7BA;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 4EC481851ACEED2900A6A7BA /* Build configuration list for PBXProject "AIFlatSwitchExample" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 4EC481811ACEED2900A6A7BA;
|
||||
productRefGroup = 4EC4818B1ACEED2900A6A7BA /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
4EC481891ACEED2900A6A7BA /* AIFlatSwitchExample */,
|
||||
4EC4819E1ACEED2900A6A7BA /* AIFlatSwitchExampleTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
4EC481881ACEED2900A6A7BA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481951ACEED2900A6A7BA /* Main.storyboard in Resources */,
|
||||
4EC4819A1ACEED2900A6A7BA /* LaunchScreen.xib in Resources */,
|
||||
4EC481971ACEED2900A6A7BA /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4819D1ACEED2900A6A7BA /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
6E2097817B1329D89E948A7D /* Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "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";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
90634CAF3C27FABCEB26A84E /* Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
B6354AAE5457CAC06943E284 /* Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
4EC481861ACEED2900A6A7BA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4EC481921ACEED2900A6A7BA /* ViewController.swift in Sources */,
|
||||
4EC481901ACEED2900A6A7BA /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4EC4819B1ACEED2900A6A7BA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
4EC481A11ACEED2900A6A7BA /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4EC481891ACEED2900A6A7BA /* AIFlatSwitchExample */;
|
||||
targetProxy = 4EC481A01ACEED2900A6A7BA /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
4EC481931ACEED2900A6A7BA /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4EC481941ACEED2900A6A7BA /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4EC481981ACEED2900A6A7BA /* LaunchScreen.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4EC481991ACEED2900A6A7BA /* Base */,
|
||||
);
|
||||
name = LaunchScreen.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
4EC481A71ACEED2900A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC481A81ACEED2900A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4EC481AA1ACEED2900A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C0B699992027755D13EBA9AC /* Pods.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = AIFlatSwitchExample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC481AB1ACEED2900A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 686E691C7A429D25E5279F1B /* Pods.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = AIFlatSwitchExample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4EC481AD1ACEED2900A6A7BA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = AIFlatSwitchExampleTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AIFlatSwitchExample.app/AIFlatSwitchExample";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4EC481AE1ACEED2900A6A7BA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(SDKROOT)/Developer/Library/Frameworks",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = AIFlatSwitchExampleTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AIFlatSwitchExample.app/AIFlatSwitchExample";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
4EC481851ACEED2900A6A7BA /* Build configuration list for PBXProject "AIFlatSwitchExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC481A71ACEED2900A6A7BA /* Debug */,
|
||||
4EC481A81ACEED2900A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4EC481A91ACEED2900A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchExample" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC481AA1ACEED2900A6A7BA /* Debug */,
|
||||
4EC481AB1ACEED2900A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4EC481AC1ACEED2900A6A7BA /* Build configuration list for PBXNativeTarget "AIFlatSwitchExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4EC481AD1ACEED2900A6A7BA /* Debug */,
|
||||
4EC481AE1ACEED2900A6A7BA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 4EC481821ACEED2900A6A7BA /* Project object */;
|
||||
}
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:AIFlatSwitchExample.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:AIFlatSwitchExample.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6751" systemVersion="14C1514" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6736"/>
|
||||
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="iOS Example" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
|
||||
<rect key="frame" x="20" y="140" width="441" height="43"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
|
||||
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
|
||||
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<point key="canvasLocation" x="548" y="455"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,595 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 52;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4E0A87D022F8DA450007472B /* AIFlatSwitch in Frameworks */ = {isa = PBXBuildFile; productRef = 4E0A87CF22F8DA450007472B /* AIFlatSwitch */; };
|
||||
4ED8F5651D8DED0500B97B8D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED8F5641D8DED0500B97B8D /* AppDelegate.swift */; };
|
||||
4ED8F5671D8DED0500B97B8D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED8F5661D8DED0500B97B8D /* ViewController.swift */; };
|
||||
4ED8F56A1D8DED0500B97B8D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4ED8F5681D8DED0500B97B8D /* Main.storyboard */; };
|
||||
4ED8F56C1D8DED0500B97B8D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4ED8F56B1D8DED0500B97B8D /* Assets.xcassets */; };
|
||||
4ED8F56F1D8DED0500B97B8D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4ED8F56D1D8DED0500B97B8D /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
4ED8F5761D8DED0500B97B8D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4ED8F5591D8DED0500B97B8D /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4ED8F5601D8DED0500B97B8D;
|
||||
remoteInfo = Example;
|
||||
};
|
||||
4ED8F5811D8DED0500B97B8D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4ED8F5591D8DED0500B97B8D /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4ED8F5601D8DED0500B97B8D;
|
||||
remoteInfo = Example;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4E0A87CD22F8DA340007472B /* AIFlatSwitch */ = {isa = PBXFileReference; lastKnownFileType = folder; name = AIFlatSwitch; path = ..; sourceTree = "<group>"; };
|
||||
4ED8F5611D8DED0500B97B8D /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4ED8F5641D8DED0500B97B8D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
4ED8F5661D8DED0500B97B8D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
4ED8F5691D8DED0500B97B8D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
4ED8F56B1D8DED0500B97B8D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
4ED8F56E1D8DED0500B97B8D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
4ED8F5701D8DED0500B97B8D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4ED8F5751D8DED0500B97B8D /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4ED8F57B1D8DED0500B97B8D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4ED8F5801D8DED0500B97B8D /* ExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4ED8F5861D8DED0500B97B8D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
4ED8F55E1D8DED0500B97B8D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4E0A87D022F8DA450007472B /* AIFlatSwitch in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F5721D8DED0500B97B8D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F57D1D8DED0500B97B8D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4E0A87CE22F8DA450007472B /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F5581D8DED0500B97B8D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4E0A87CD22F8DA340007472B /* AIFlatSwitch */,
|
||||
4ED8F5631D8DED0500B97B8D /* Example */,
|
||||
4ED8F5781D8DED0500B97B8D /* ExampleTests */,
|
||||
4ED8F5831D8DED0500B97B8D /* ExampleUITests */,
|
||||
4ED8F5621D8DED0500B97B8D /* Products */,
|
||||
4E0A87CE22F8DA450007472B /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F5621D8DED0500B97B8D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4ED8F5611D8DED0500B97B8D /* Example.app */,
|
||||
4ED8F5751D8DED0500B97B8D /* ExampleTests.xctest */,
|
||||
4ED8F5801D8DED0500B97B8D /* ExampleUITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F5631D8DED0500B97B8D /* Example */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4ED8F5641D8DED0500B97B8D /* AppDelegate.swift */,
|
||||
4ED8F5661D8DED0500B97B8D /* ViewController.swift */,
|
||||
4ED8F5681D8DED0500B97B8D /* Main.storyboard */,
|
||||
4ED8F56B1D8DED0500B97B8D /* Assets.xcassets */,
|
||||
4ED8F56D1D8DED0500B97B8D /* LaunchScreen.storyboard */,
|
||||
4ED8F5701D8DED0500B97B8D /* Info.plist */,
|
||||
);
|
||||
path = Example;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F5781D8DED0500B97B8D /* ExampleTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4ED8F57B1D8DED0500B97B8D /* Info.plist */,
|
||||
);
|
||||
path = ExampleTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F5831D8DED0500B97B8D /* ExampleUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4ED8F5861D8DED0500B97B8D /* Info.plist */,
|
||||
);
|
||||
path = ExampleUITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
4ED8F5601D8DED0500B97B8D /* Example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4ED8F5891D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "Example" */;
|
||||
buildPhases = (
|
||||
4ED8F55D1D8DED0500B97B8D /* Sources */,
|
||||
4ED8F55E1D8DED0500B97B8D /* Frameworks */,
|
||||
4ED8F55F1D8DED0500B97B8D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Example;
|
||||
packageProductDependencies = (
|
||||
4E0A87CF22F8DA450007472B /* AIFlatSwitch */,
|
||||
);
|
||||
productName = Example;
|
||||
productReference = 4ED8F5611D8DED0500B97B8D /* Example.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
4ED8F5741D8DED0500B97B8D /* ExampleTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4ED8F58C1D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "ExampleTests" */;
|
||||
buildPhases = (
|
||||
4ED8F5711D8DED0500B97B8D /* Sources */,
|
||||
4ED8F5721D8DED0500B97B8D /* Frameworks */,
|
||||
4ED8F5731D8DED0500B97B8D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
4ED8F5771D8DED0500B97B8D /* PBXTargetDependency */,
|
||||
);
|
||||
name = ExampleTests;
|
||||
productName = ExampleTests;
|
||||
productReference = 4ED8F5751D8DED0500B97B8D /* ExampleTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
4ED8F57F1D8DED0500B97B8D /* ExampleUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4ED8F58F1D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "ExampleUITests" */;
|
||||
buildPhases = (
|
||||
4ED8F57C1D8DED0500B97B8D /* Sources */,
|
||||
4ED8F57D1D8DED0500B97B8D /* Frameworks */,
|
||||
4ED8F57E1D8DED0500B97B8D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
4ED8F5821D8DED0500B97B8D /* PBXTargetDependency */,
|
||||
);
|
||||
name = ExampleUITests;
|
||||
productName = ExampleUITests;
|
||||
productReference = 4ED8F5801D8DED0500B97B8D /* ExampleUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
4ED8F5591D8DED0500B97B8D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0800;
|
||||
LastUpgradeCheck = 1320;
|
||||
ORGANIZATIONNAME = cocoatoucher;
|
||||
TargetAttributes = {
|
||||
4ED8F5601D8DED0500B97B8D = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
LastSwiftMigration = 1000;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
4ED8F5741D8DED0500B97B8D = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
LastSwiftMigration = 0800;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 4ED8F5601D8DED0500B97B8D;
|
||||
};
|
||||
4ED8F57F1D8DED0500B97B8D = {
|
||||
CreatedOnToolsVersion = 8.0;
|
||||
LastSwiftMigration = 0800;
|
||||
ProvisioningStyle = Automatic;
|
||||
TestTargetID = 4ED8F5601D8DED0500B97B8D;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 4ED8F55C1D8DED0500B97B8D /* Build configuration list for PBXProject "Example" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 4ED8F5581D8DED0500B97B8D;
|
||||
productRefGroup = 4ED8F5621D8DED0500B97B8D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
4ED8F5601D8DED0500B97B8D /* Example */,
|
||||
4ED8F5741D8DED0500B97B8D /* ExampleTests */,
|
||||
4ED8F57F1D8DED0500B97B8D /* ExampleUITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
4ED8F55F1D8DED0500B97B8D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4ED8F56F1D8DED0500B97B8D /* LaunchScreen.storyboard in Resources */,
|
||||
4ED8F56C1D8DED0500B97B8D /* Assets.xcassets in Resources */,
|
||||
4ED8F56A1D8DED0500B97B8D /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F5731D8DED0500B97B8D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F57E1D8DED0500B97B8D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
4ED8F55D1D8DED0500B97B8D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4ED8F5671D8DED0500B97B8D /* ViewController.swift in Sources */,
|
||||
4ED8F5651D8DED0500B97B8D /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F5711D8DED0500B97B8D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4ED8F57C1D8DED0500B97B8D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
4ED8F5771D8DED0500B97B8D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4ED8F5601D8DED0500B97B8D /* Example */;
|
||||
targetProxy = 4ED8F5761D8DED0500B97B8D /* PBXContainerItemProxy */;
|
||||
};
|
||||
4ED8F5821D8DED0500B97B8D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4ED8F5601D8DED0500B97B8D /* Example */;
|
||||
targetProxy = 4ED8F5811D8DED0500B97B8D /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
4ED8F5681D8DED0500B97B8D /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4ED8F5691D8DED0500B97B8D /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
4ED8F56D1D8DED0500B97B8D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
4ED8F56E1D8DED0500B97B8D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
4ED8F5871D8DED0500B97B8D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
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_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVES = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4ED8F5881D8DED0500B97B8D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
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_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVES = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4ED8F58A1D8DED0500B97B8D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = Example/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.Example;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4ED8F58B1D8DED0500B97B8D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = Example/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.Example;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4ED8F58D1D8DED0500B97B8D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = ExampleTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.ExampleTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4ED8F58E1D8DED0500B97B8D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
INFOPLIST_FILE = ExampleTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.ExampleTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4ED8F5901D8DED0500B97B8D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
INFOPLIST_FILE = ExampleUITests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.ExampleUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_TARGET_NAME = Example;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4ED8F5911D8DED0500B97B8D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
INFOPLIST_FILE = ExampleUITests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.cocoatoucher.ExampleUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TEST_TARGET_NAME = Example;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
4ED8F55C1D8DED0500B97B8D /* Build configuration list for PBXProject "Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4ED8F5871D8DED0500B97B8D /* Debug */,
|
||||
4ED8F5881D8DED0500B97B8D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4ED8F5891D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "Example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4ED8F58A1D8DED0500B97B8D /* Debug */,
|
||||
4ED8F58B1D8DED0500B97B8D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4ED8F58C1D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "ExampleTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4ED8F58D1D8DED0500B97B8D /* Debug */,
|
||||
4ED8F58E1D8DED0500B97B8D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4ED8F58F1D8DED0500B97B8D /* Build configuration list for PBXNativeTarget "ExampleUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4ED8F5901D8DED0500B97B8D /* Debug */,
|
||||
4ED8F5911D8DED0500B97B8D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
4E0A87CF22F8DA450007472B /* AIFlatSwitch */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = AIFlatSwitch;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 4ED8F5591D8DED0500B97B8D /* Project object */;
|
||||
}
|
||||
+1
-1
@@ -2,6 +2,6 @@
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:AIFlatSwitch.xcodeproj">
|
||||
location = "self:Example.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -10,37 +10,37 @@ import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
|
||||
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: 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:.
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
+44
-29
@@ -1,24 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6751" systemVersion="14C1514" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="wTD-Tt-MES">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="wTD-Tt-MES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6736"/>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="HHx-Lf-ppo">
|
||||
<objects>
|
||||
<viewController id="wTD-Tt-MES" customClass="ViewController" customModule="AIFlatSwitchExample" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<viewController id="wTD-Tt-MES" customClass="ViewController" customModule="Example" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="MCC-tT-iee"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="YEU-40-Ufk"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="5e8-Cf-Z2w">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="if0-Nq-mSF" customClass="AIFlatSwitch" customModule="AIFlatSwitch">
|
||||
<rect key="frame" x="16" y="28" width="50" height="50"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="6b0-G7-s2c"/>
|
||||
<constraint firstAttribute="height" constant="50" id="BQn-k8-iZ1"/>
|
||||
@@ -28,12 +33,14 @@
|
||||
<real key="value" value="3"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="strokeColor">
|
||||
<color key="value" red="0.84705882352941175" green="0.29411764705882354" blue="0.098039215686274508" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.84705882352941175" green="0.29411764705882354" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="trailStrokeColor">
|
||||
<color key="value" red="0.94509803921568625" green="0.63529411764705879" blue="0.15294117647058825" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.94509803921568625" green="0.63529411764705879" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="backgroundLayerColor">
|
||||
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="selected" value="NO"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onSwitchValueChange:" destination="wTD-Tt-MES" eventType="valueChanged" id="BGh-BF-7kd"/>
|
||||
@@ -41,7 +48,6 @@
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wpe-KQ-dfv" customClass="AIFlatSwitch" customModule="AIFlatSwitch">
|
||||
<rect key="frame" x="16" y="98" width="70" height="70"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="70" id="UOB-m6-kHF"/>
|
||||
<constraint firstAttribute="width" constant="70" id="dgd-3H-0Mf"/>
|
||||
@@ -51,12 +57,14 @@
|
||||
<real key="value" value="4"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="strokeColor">
|
||||
<color key="value" red="0.17647058823529413" green="0.70588235294117652" blue="0.20392156862745098" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.17647058823529413" green="0.70588235294117652" blue="0.20392156862745098" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="trailStrokeColor">
|
||||
<color key="value" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="backgroundLayerColor">
|
||||
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="selected" value="NO"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onSwitchValueChange:" destination="wTD-Tt-MES" eventType="valueChanged" id="K0c-Du-86O"/>
|
||||
@@ -64,7 +72,7 @@
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kjq-na-ZAi" customClass="AIFlatSwitch" customModule="AIFlatSwitch">
|
||||
<rect key="frame" x="16" y="188" width="30" height="30"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="30" id="b0S-rp-S0o"/>
|
||||
<constraint firstAttribute="width" constant="30" id="swP-IN-9uW"/>
|
||||
@@ -74,54 +82,58 @@
|
||||
<real key="value" value="2"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="strokeColor">
|
||||
<color key="value" red="0.89803921568627454" green="0.17647058823529413" blue="0.46274509803921571" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.89803921568627454" green="0.17647058823529413" blue="0.46274509803921571" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="trailStrokeColor">
|
||||
<color key="value" red="0.18431372549019609" green="0.77254901960784317" blue="0.67843137254901964" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="value" red="0.18431372549019609" green="0.77254901960784317" blue="0.67843137254901964" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="animatesOnTouch" value="NO"/>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="backgroundLayerColor">
|
||||
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="selected" value="NO"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="onSwitchValueChange:" destination="wTD-Tt-MES" eventType="valueChanged" id="YMi-Ut-6Tq"/>
|
||||
</connections>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JeA-RR-O87">
|
||||
<rect key="frame" x="74" y="42" width="42" height="21"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="State" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JeA-RR-O87">
|
||||
<rect key="frame" x="74" y="42.5" width="40.5" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Auto select & animation" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="esR-Sl-3KM">
|
||||
<rect key="frame" x="94" y="122" width="182" height="21"/>
|
||||
<rect key="frame" x="94" y="122.5" width="181.5" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Auto select & no animation" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VzB-Wm-qAV">
|
||||
<rect key="frame" x="54" y="192" width="206" height="21"/>
|
||||
<rect key="frame" x="54" y="192.5" width="205" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="djN-Dk-3LS">
|
||||
<rect key="frame" x="16" y="238" width="50" height="50"/>
|
||||
<color key="backgroundColor" red="0.82352941180000006" green="0.82352941180000006" blue="0.82352941180000006" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" red="0.82352941180000006" green="0.82352941180000006" blue="0.82352941180000006" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="8Je-M2-Jhc"/>
|
||||
<constraint firstAttribute="width" constant="50" id="N6s-FH-MTL"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Programmatic" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wyR-ag-4eg">
|
||||
<rect key="frame" x="74" y="252" width="108" height="21"/>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Added from view controller" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wyR-ag-4eg">
|
||||
<rect key="frame" x="74" y="252.5" width="206.5" height="20.5"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Wpe-KQ-dfv" firstAttribute="top" secondItem="if0-Nq-mSF" secondAttribute="bottom" constant="20" id="1iI-gd-Anf"/>
|
||||
<constraint firstItem="djN-Dk-3LS" firstAttribute="centerY" secondItem="wyR-ag-4eg" secondAttribute="centerY" constant="0.5" id="2R5-lD-Jlh"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="wyR-ag-4eg" secondAttribute="trailing" id="50j-Ba-1a1"/>
|
||||
<constraint firstItem="Wpe-KQ-dfv" firstAttribute="leading" secondItem="if0-Nq-mSF" secondAttribute="leading" id="ABS-Eo-0Ko"/>
|
||||
<constraint firstItem="JeA-RR-O87" firstAttribute="centerY" secondItem="if0-Nq-mSF" secondAttribute="centerY" constant="-0.5" id="Am9-UL-Ik8"/>
|
||||
<constraint firstItem="JeA-RR-O87" firstAttribute="leading" secondItem="if0-Nq-mSF" secondAttribute="trailing" constant="8" id="FYc-eZ-EmE"/>
|
||||
@@ -132,9 +144,12 @@
|
||||
<constraint firstItem="esR-Sl-3KM" firstAttribute="leading" secondItem="Wpe-KQ-dfv" secondAttribute="trailing" constant="8" id="VY1-nc-pOA"/>
|
||||
<constraint firstItem="Kjq-na-ZAi" firstAttribute="leading" secondItem="Wpe-KQ-dfv" secondAttribute="leading" id="Vpm-ui-WCZ"/>
|
||||
<constraint firstItem="if0-Nq-mSF" firstAttribute="leading" secondItem="5e8-Cf-Z2w" secondAttribute="leading" constant="16" id="dIE-Gy-Eyk"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="esR-Sl-3KM" secondAttribute="trailing" id="eiq-qo-Xi6"/>
|
||||
<constraint firstItem="VzB-Wm-qAV" firstAttribute="leading" secondItem="Kjq-na-ZAi" secondAttribute="trailing" constant="8" id="h5X-lz-DvC"/>
|
||||
<constraint firstItem="djN-Dk-3LS" firstAttribute="leading" secondItem="Kjq-na-ZAi" secondAttribute="leading" id="i2t-Ip-mb9"/>
|
||||
<constraint firstItem="djN-Dk-3LS" firstAttribute="top" secondItem="Kjq-na-ZAi" secondAttribute="bottom" constant="20" id="n0b-Rg-iqw"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="VzB-Wm-qAV" secondAttribute="trailing" id="nNf-sx-77a"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="JeA-RR-O87" secondAttribute="trailing" id="obb-gY-2oC"/>
|
||||
<constraint firstItem="wyR-ag-4eg" firstAttribute="leading" secondItem="djN-Dk-3LS" secondAttribute="trailing" constant="8" id="pig-et-8am"/>
|
||||
</constraints>
|
||||
</view>
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.cocoaotoucher.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -16,8 +16,6 @@
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
+12
-12
@@ -21,34 +21,34 @@ class ViewController: UIViewController {
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
self.programmaticSwitch = AIFlatSwitch(frame: CGRectMake(0, 0, 50, 50))
|
||||
self.programmaticSwitch = AIFlatSwitch(frame: CGRect(x: 0, y: 0, width: programmaticSwitchContainer.frame.width, height: programmaticSwitchContainer.frame.height))
|
||||
self.programmaticSwitch.lineWidth = 2.0
|
||||
self.programmaticSwitch.strokeColor = UIColor.blueColor()
|
||||
self.programmaticSwitch.trailStrokeColor = UIColor.redColor().colorWithAlphaComponent(0.2)
|
||||
self.programmaticSwitch.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
|
||||
self.programmaticSwitch.strokeColor = UIColor.blue
|
||||
self.programmaticSwitch.backgroundLayerColor = UIColor.white
|
||||
self.programmaticSwitch.trailStrokeColor = UIColor.red.withAlphaComponent(0.2)
|
||||
self.programmaticSwitch.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
||||
programmaticSwitchContainer.addSubview(programmaticSwitch)
|
||||
|
||||
updateSwitchValue()
|
||||
}
|
||||
|
||||
@IBAction func onSwitchValueChange(sender: AnyObject) {
|
||||
@IBAction func onSwitchValueChange(_ sender: AnyObject) {
|
||||
if sender as? AIFlatSwitch == flatSwitch {
|
||||
self.updateSwitchValue()
|
||||
|
||||
bigFlatSwitch.setSelected(!bigFlatSwitch.selected, animated: true)
|
||||
smallFlatSwitch.selected = !smallFlatSwitch.selected
|
||||
bigFlatSwitch.setSelected(!bigFlatSwitch.isSelected, animated: true)
|
||||
smallFlatSwitch.isSelected = !smallFlatSwitch.isSelected
|
||||
}
|
||||
}
|
||||
|
||||
func updateSwitchValue() {
|
||||
label.text = (flatSwitch.selected) ? NSLocalizedString("On", comment: "") : NSLocalizedString("Off", comment: "")
|
||||
label.text = (flatSwitch.isSelected) ? NSLocalizedString("On", comment: "") : NSLocalizedString("Off", comment: "")
|
||||
}
|
||||
|
||||
|
||||
override func didReceiveMemoryWarning() {
|
||||
super.didReceiveMemoryWarning()
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.cocoaotoucher.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -16,8 +16,6 @@
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
@@ -7,20 +7,16 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.cocoatoucher.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,6 +0,0 @@
|
||||
source 'https://github.com/CocoaPods/Specs.git'
|
||||
|
||||
platform :ios, '8.0'
|
||||
use_frameworks!
|
||||
|
||||
pod 'AIFlatSwitch', :path => '..'
|
||||
@@ -1,14 +0,0 @@
|
||||
PODS:
|
||||
- AIFlatSwitch (0.0.1)
|
||||
|
||||
DEPENDENCIES:
|
||||
- AIFlatSwitch (from `..`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
AIFlatSwitch:
|
||||
:path: ..
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AIFlatSwitch: d1000b9798874f65f6f1b081f5123b98b13adde3
|
||||
|
||||
COCOAPODS: 0.36.0
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"name": "AIFlatSwitch",
|
||||
"version": "0.0.1",
|
||||
"license": "MIT",
|
||||
"summary": "An alternative flat component to UISwitch",
|
||||
"homepage": "https://github.com/cocoatoucher/AIFlatSwitch",
|
||||
"authors": {
|
||||
"cocoatoucher": "cocoatoucher@aol.com"
|
||||
},
|
||||
"source": {
|
||||
"git": "https://github.com/cocoatoucher/AIFlatSwitch.git",
|
||||
"tag": "0.0.1"
|
||||
},
|
||||
"platforms": {
|
||||
"ios": "8.0"
|
||||
},
|
||||
"source_files": "Source/*.swift",
|
||||
"requires_arc": true
|
||||
}
|
||||
Generated
-14
@@ -1,14 +0,0 @@
|
||||
PODS:
|
||||
- AIFlatSwitch (0.0.1)
|
||||
|
||||
DEPENDENCIES:
|
||||
- AIFlatSwitch (from `..`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
AIFlatSwitch:
|
||||
:path: ..
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AIFlatSwitch: d1000b9798874f65f6f1b081f5123b98b13adde3
|
||||
|
||||
COCOAPODS: 0.36.0
|
||||
-512
@@ -1,512 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
313482C7E8366E73CCF23D60 /* Pods-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 152EB8D0EB83A6894DCCF7E1 /* Pods-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3257BD5A0CA654EF4D6FD448 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D4AC5AA8242BA607FDFEF21 /* Foundation.framework */; };
|
||||
3F09CA85493C5098CE3F29AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D4AC5AA8242BA607FDFEF21 /* Foundation.framework */; };
|
||||
4E78DAAFE9E39FDC24E68EB5 /* Pods-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A91CA1C97187D49500027DA6 /* Pods-dummy.m */; };
|
||||
6879A132C7B6FC55FE7BD5F2 /* AIFlatSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32CD4F27726DF02D880C17D /* AIFlatSwitch.swift */; };
|
||||
7F4374F52DC18F3B0719814A /* Pods-AIFlatSwitch-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE92A94ABE080919211313FF /* Pods-AIFlatSwitch-dummy.m */; };
|
||||
C369B8D0ADB8E92AFCE9062F /* Pods-AIFlatSwitch-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 209188715C1CE37AB642D211 /* Pods-AIFlatSwitch-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
995B616A8D25A5F431CE1C59 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0A23ED82CB8C5A4F21271A51 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = CA5C71CEBF8EE45BAC0039A4;
|
||||
remoteInfo = "Pods-AIFlatSwitch";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
048E0D65A99D2FE8DD6EA749 /* Pods-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
06B63458E125BCF9D5F06E81 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
14D0656B4BA494E48886FA24 /* Pods-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-environment.h"; sourceTree = "<group>"; };
|
||||
152EB8D0EB83A6894DCCF7E1 /* Pods-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-umbrella.h"; sourceTree = "<group>"; };
|
||||
209188715C1CE37AB642D211 /* Pods-AIFlatSwitch-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AIFlatSwitch-umbrella.h"; sourceTree = "<group>"; };
|
||||
24C54F043455D0E333C44466 /* AIFlatSwitch.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AIFlatSwitch.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2C7E18ECC274AD209407EBAE /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.release.xcconfig; sourceTree = "<group>"; };
|
||||
2DC9FF3D4E9D3D2D5507EC77 /* Pods-AIFlatSwitch.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AIFlatSwitch.xcconfig"; sourceTree = "<group>"; };
|
||||
32B3387AE2D024F8ED6E6938 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
3FB5B2852086691839DB3001 /* Pods.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Pods.modulemap; sourceTree = "<group>"; };
|
||||
5034795883EEB6742ECA3BB1 /* Pods-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
505550ADE38DDC797054F698 /* Pods-AIFlatSwitch-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AIFlatSwitch-Private.xcconfig"; sourceTree = "<group>"; };
|
||||
62ABFFB1E9D15E9D9B987FB7 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Pods.debug.xcconfig; sourceTree = "<group>"; };
|
||||
7D4AC5AA8242BA607FDFEF21 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
9B4DF316FA61BDBA7BB10486 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A32CD4F27726DF02D880C17D /* AIFlatSwitch.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AIFlatSwitch.swift; sourceTree = "<group>"; };
|
||||
A85CBB333177572EA69443D7 /* Pods-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-frameworks.sh"; sourceTree = "<group>"; };
|
||||
A91CA1C97187D49500027DA6 /* Pods-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-dummy.m"; sourceTree = "<group>"; };
|
||||
AE92A94ABE080919211313FF /* Pods-AIFlatSwitch-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AIFlatSwitch-dummy.m"; sourceTree = "<group>"; };
|
||||
BCFB10A94F2D5D2786E3D4D9 /* Pods-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-resources.sh"; sourceTree = "<group>"; };
|
||||
C762829F53CA15DF08D087DE /* Pods-AIFlatSwitch.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-AIFlatSwitch.modulemap"; sourceTree = "<group>"; };
|
||||
DFC225C95A33565A3621CFA0 /* Pods-AIFlatSwitch-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AIFlatSwitch-prefix.pch"; sourceTree = "<group>"; };
|
||||
FA26AC5D6638E5625F836BA2 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
AE7E632EBAF8C3C1F59672BA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3257BD5A0CA654EF4D6FD448 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
BB44636A650637FB31827B28 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3F09CA85493C5098CE3F29AA /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0306D0CC1BC19CB83BD87197 /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9B4DF316FA61BDBA7BB10486 /* Info.plist */,
|
||||
C762829F53CA15DF08D087DE /* Pods-AIFlatSwitch.modulemap */,
|
||||
2DC9FF3D4E9D3D2D5507EC77 /* Pods-AIFlatSwitch.xcconfig */,
|
||||
505550ADE38DDC797054F698 /* Pods-AIFlatSwitch-Private.xcconfig */,
|
||||
AE92A94ABE080919211313FF /* Pods-AIFlatSwitch-dummy.m */,
|
||||
DFC225C95A33565A3621CFA0 /* Pods-AIFlatSwitch-prefix.pch */,
|
||||
209188715C1CE37AB642D211 /* Pods-AIFlatSwitch-umbrella.h */,
|
||||
);
|
||||
name = "Support Files";
|
||||
path = "Example/Pods/Target Support Files/Pods-AIFlatSwitch";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
14AC5A1E7F9CC6985DA4E27F /* AIFlatSwitch */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AE1B8DBD5125F72951DE0352 /* Source */,
|
||||
0306D0CC1BC19CB83BD87197 /* Support Files */,
|
||||
);
|
||||
name = AIFlatSwitch;
|
||||
path = ../..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
429DBE3FE26D06FDF6DD0FBE /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
24C54F043455D0E333C44466 /* AIFlatSwitch.framework */,
|
||||
FA26AC5D6638E5625F836BA2 /* Pods.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AAADF199916CD7946ECC9BA0 /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7D4AC5AA8242BA607FDFEF21 /* Foundation.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AC6D357DDFAF72893A95CDA0 /* Targets Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B11D69A9ED7C8356E1A703B1 /* Pods */,
|
||||
);
|
||||
name = "Targets Support Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AE1B8DBD5125F72951DE0352 /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A32CD4F27726DF02D880C17D /* AIFlatSwitch.swift */,
|
||||
);
|
||||
path = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B11D69A9ED7C8356E1A703B1 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32B3387AE2D024F8ED6E6938 /* Info.plist */,
|
||||
3FB5B2852086691839DB3001 /* Pods.modulemap */,
|
||||
048E0D65A99D2FE8DD6EA749 /* Pods-acknowledgements.markdown */,
|
||||
5034795883EEB6742ECA3BB1 /* Pods-acknowledgements.plist */,
|
||||
A91CA1C97187D49500027DA6 /* Pods-dummy.m */,
|
||||
14D0656B4BA494E48886FA24 /* Pods-environment.h */,
|
||||
A85CBB333177572EA69443D7 /* Pods-frameworks.sh */,
|
||||
BCFB10A94F2D5D2786E3D4D9 /* Pods-resources.sh */,
|
||||
152EB8D0EB83A6894DCCF7E1 /* Pods-umbrella.h */,
|
||||
62ABFFB1E9D15E9D9B987FB7 /* Pods.debug.xcconfig */,
|
||||
2C7E18ECC274AD209407EBAE /* Pods.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = "Target Support Files/Pods";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9640C321352A626A537F4C7 /* Development Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
14AC5A1E7F9CC6985DA4E27F /* AIFlatSwitch */,
|
||||
);
|
||||
name = "Development Pods";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
DD904C1675884AE9A68D1636 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
06B63458E125BCF9D5F06E81 /* Podfile */,
|
||||
C9640C321352A626A537F4C7 /* Development Pods */,
|
||||
EAD743AD68CF714575E6FF97 /* Frameworks */,
|
||||
429DBE3FE26D06FDF6DD0FBE /* Products */,
|
||||
AC6D357DDFAF72893A95CDA0 /* Targets Support Files */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EAD743AD68CF714575E6FF97 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AAADF199916CD7946ECC9BA0 /* iOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
02664374AA444EB619B32315 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
313482C7E8366E73CCF23D60 /* Pods-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
37CE38EC740E2D84BFB71CA4 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C369B8D0ADB8E92AFCE9062F /* Pods-AIFlatSwitch-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
CA5C71CEBF8EE45BAC0039A4 /* Pods-AIFlatSwitch */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6EF8BFCC82B44EE21D7236D1 /* Build configuration list for PBXNativeTarget "Pods-AIFlatSwitch" */;
|
||||
buildPhases = (
|
||||
89AB2CD53E08E1E173DBB4A4 /* Sources */,
|
||||
BB44636A650637FB31827B28 /* Frameworks */,
|
||||
37CE38EC740E2D84BFB71CA4 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "Pods-AIFlatSwitch";
|
||||
productName = "Pods-AIFlatSwitch";
|
||||
productReference = 24C54F043455D0E333C44466 /* AIFlatSwitch.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
E8AF1025C0FD3E3C2D890835 /* Pods */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = DCC895E60BD88AC5F42809CA /* Build configuration list for PBXNativeTarget "Pods" */;
|
||||
buildPhases = (
|
||||
7CB439DEE3D6D99D63ADF038 /* Sources */,
|
||||
AE7E632EBAF8C3C1F59672BA /* Frameworks */,
|
||||
02664374AA444EB619B32315 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
00098D84E434DAA221ECD99B /* PBXTargetDependency */,
|
||||
);
|
||||
name = Pods;
|
||||
productName = Pods;
|
||||
productReference = FA26AC5D6638E5625F836BA2 /* Pods.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0A23ED82CB8C5A4F21271A51 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
};
|
||||
buildConfigurationList = 8B291888D53A3CAE33081F80 /* Build configuration list for PBXProject "Pods" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = DD904C1675884AE9A68D1636;
|
||||
productRefGroup = 429DBE3FE26D06FDF6DD0FBE /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
E8AF1025C0FD3E3C2D890835 /* Pods */,
|
||||
CA5C71CEBF8EE45BAC0039A4 /* Pods-AIFlatSwitch */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
7CB439DEE3D6D99D63ADF038 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4E78DAAFE9E39FDC24E68EB5 /* Pods-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
89AB2CD53E08E1E173DBB4A4 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6879A132C7B6FC55FE7BD5F2 /* AIFlatSwitch.swift in Sources */,
|
||||
7F4374F52DC18F3B0719814A /* Pods-AIFlatSwitch-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
00098D84E434DAA221ECD99B /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = "Pods-AIFlatSwitch";
|
||||
target = CA5C71CEBF8EE45BAC0039A4 /* Pods-AIFlatSwitch */;
|
||||
targetProxy = 995B616A8D25A5F431CE1C59 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
008B49DEEF1C31AC1E0ED25E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 62ABFFB1E9D15E9D9B987FB7 /* Pods.debug.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;
|
||||
INFOPLIST_FILE = "Target Support Files/Pods/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/Pods/Pods.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_NAME = Pods;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1B8E0C6333CAAA88CB88D83D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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.0;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
6C27265B70097FB4EC1C6AD8 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 505550ADE38DDC797054F698 /* Pods-AIFlatSwitch-Private.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/Pods-AIFlatSwitch/Pods-AIFlatSwitch-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-AIFlatSwitch/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/Pods-AIFlatSwitch/Pods-AIFlatSwitch.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_NAME = AIFlatSwitch;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
7F5BE546FFA863A7CAE1095A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
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 = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
95BB16A5317D43798721CBC5 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 2C7E18ECC274AD209407EBAE /* Pods.release.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;
|
||||
INFOPLIST_FILE = "Target Support Files/Pods/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/Pods/Pods.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_NAME = Pods;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
EE5F9016F7D66386B90927F2 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 505550ADE38DDC797054F698 /* Pods-AIFlatSwitch-Private.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/Pods-AIFlatSwitch/Pods-AIFlatSwitch-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-AIFlatSwitch/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/Pods-AIFlatSwitch/Pods-AIFlatSwitch.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_NAME = AIFlatSwitch;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
6EF8BFCC82B44EE21D7236D1 /* Build configuration list for PBXNativeTarget "Pods-AIFlatSwitch" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6C27265B70097FB4EC1C6AD8 /* Debug */,
|
||||
EE5F9016F7D66386B90927F2 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8B291888D53A3CAE33081F80 /* Build configuration list for PBXProject "Pods" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7F5BE546FFA863A7CAE1095A /* Debug */,
|
||||
1B8E0C6333CAAA88CB88D83D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
DCC895E60BD88AC5F42809CA /* Build configuration list for PBXNativeTarget "Pods" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
008B49DEEF1C31AC1E0ED25E /* Debug */,
|
||||
95BB16A5317D43798721CBC5 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0A23ED82CB8C5A4F21271A51 /* Project object */;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.cocoapods.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
#include "Pods-AIFlatSwitch.xcconfig"
|
||||
CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH
|
||||
FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AIFlatSwitch" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AIFlatSwitch"
|
||||
OTHER_LDFLAGS = -ObjC
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
SKIP_INSTALL = YES
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_AIFlatSwitch : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_AIFlatSwitch
|
||||
@end
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
|
||||
#import "Pods-environment.h"
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double AIFlatSwitchVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char AIFlatSwitchVersionString[];
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
framework module AIFlatSwitch {
|
||||
umbrella header "Pods-AIFlatSwitch-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.cocoapods.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,3 +0,0 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
Generated by CocoaPods - http://cocoapods.org
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - http://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,5 +0,0 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods
|
||||
@end
|
||||
@@ -1,14 +0,0 @@
|
||||
|
||||
// To check if a library is compiled with CocoaPods you
|
||||
// can use the `COCOAPODS` macro definition which is
|
||||
// defined in the xcconfigs so it is available in
|
||||
// headers also when they are imported in the client
|
||||
// project.
|
||||
|
||||
|
||||
// AIFlatSwitch
|
||||
#define COCOAPODS_POD_AVAILABLE_AIFlatSwitch
|
||||
#define COCOAPODS_VERSION_MAJOR_AIFlatSwitch 0
|
||||
#define COCOAPODS_VERSION_MINOR_AIFlatSwitch 0
|
||||
#define COCOAPODS_VERSION_PATCH_AIFlatSwitch 1
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
|
||||
install_framework()
|
||||
{
|
||||
local source="${BUILT_PRODUCTS_DIR}/Pods/$1"
|
||||
local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source=$(readlink "${source}")
|
||||
fi
|
||||
|
||||
# use filter instead of exclude so missing patterns dont' throw errors
|
||||
echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" ${source} ${destination}"
|
||||
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" "${source}" "${destination}"
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then
|
||||
code_sign "${destination}/$1"
|
||||
fi
|
||||
|
||||
# Embed linked Swift runtime libraries
|
||||
local basename
|
||||
basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]})
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then
|
||||
code_sign "${destination}/${lib}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign() {
|
||||
# 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"
|
||||
}
|
||||
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework 'AIFlatSwitch.framework'
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework 'AIFlatSwitch.framework'
|
||||
fi
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
|
||||
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||
> "$RESOURCES_TO_COPY"
|
||||
|
||||
XCASSET_FILES=""
|
||||
|
||||
install_resource()
|
||||
{
|
||||
case $1 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}"
|
||||
;;
|
||||
*.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}"
|
||||
;;
|
||||
*.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}"
|
||||
;;
|
||||
*.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"
|
||||
;;
|
||||
*.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"
|
||||
;;
|
||||
*.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"
|
||||
;;
|
||||
*.xcassets)
|
||||
XCASSET_FILES="$XCASSET_FILES '$1'"
|
||||
;;
|
||||
/*)
|
||||
echo "$1"
|
||||
echo "$1" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
*)
|
||||
echo "${PODS_ROOT}/$1"
|
||||
echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
if [[ "${ACTION}" == "install" ]]; then
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
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
|
||||
echo $XCASSET_FILES | xargs 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}"
|
||||
fi
|
||||
@@ -1,6 +0,0 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double PodsVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char PodsVersionString[];
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AIFlatSwitch.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -framework "AIFlatSwitch"
|
||||
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -1,6 +0,0 @@
|
||||
framework module Pods {
|
||||
umbrella header "Pods-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AIFlatSwitch.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -ObjC -framework "AIFlatSwitch"
|
||||
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -0,0 +1,18 @@
|
||||
// swift-tools-version:5.0
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "AIFlatSwitch",
|
||||
platforms: [
|
||||
.iOS(.v9), .tvOS(.v12)
|
||||
],
|
||||
products: [
|
||||
.library(name: "AIFlatSwitch", targets: ["AIFlatSwitch"])
|
||||
],
|
||||
dependencies: [],
|
||||
targets: [
|
||||
.target(name: "AIFlatSwitch", path: "Sources"),
|
||||
.testTarget(name: "AIFlatSwitch-Tests", dependencies: ["AIFlatSwitch"], path: "Tests")
|
||||
],
|
||||
swiftLanguageVersions: [.v5]
|
||||
)
|
||||
@@ -1,49 +1,29 @@
|
||||
# AIFlatSwitch
|
||||
|
||||
A smooth, nice looking and IBDesignable animated flat switch component for iOS
|
||||
A smooth, nice looking and IBDesignable flat design switch for iOS. Can be used instead of UISwitch.
|
||||
|
||||
Inspired by Creativedash's Dribbble post [here](http://dribbble.com/shots/1631598-On-Off)
|
||||
|
||||

|
||||
<p align="center">
|
||||
<a target="_blank" rel="noopener noreferrer" href="http://dribbble.com/shots/1631598-On-Off">
|
||||
<img src="https://s3.amazonaws.com/f.cl.ly/items/1p0w3B0E3m2I2k3e0z1Q/onoff.gif" width="200" max-width="80%" alt="Flat switch animation">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
##Requirements
|
||||
- iOS 7.1+
|
||||
- Xcode 6.1
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/Swift-5.0-orange.svg"/>
|
||||
<a href="https://cocoapods.org/pods/AIFlatSwitch">
|
||||
<img src="https://img.shields.io/cocoapods/v/AIFlatSwitch.svg" alt="cocoapods"/>
|
||||
</a>
|
||||
</p>
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square"/>
|
||||
</p>
|
||||
|
||||
## Installation
|
||||
|
||||
> **Embedded frameworks require a minimum deployment target of iOS 8.**
|
||||
>
|
||||
> To use with a project targeting iOS 7, you must include the `AIFlatSwitch.swift` source file directly in your project.
|
||||
>
|
||||
|
||||
### CocoaPods
|
||||
|
||||
[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects.
|
||||
|
||||
CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command:
|
||||
|
||||
```bash
|
||||
$ gem install cocoapods
|
||||
```
|
||||
|
||||
To integrate AIFlatSwitch into your Xcode project using CocoaPods, specify it in your `Podfile`:
|
||||
|
||||
```ruby
|
||||
source 'https://github.com/CocoaPods/Specs.git'
|
||||
platform :ios, '8.0'
|
||||
use_frameworks!
|
||||
|
||||
pod 'AIFlatSwitch', '~> 0.0.1'
|
||||
```
|
||||
|
||||
Then, run the following command:
|
||||
|
||||
```bash
|
||||
$ pod install
|
||||
```
|
||||
|
||||
---
|
||||
## Requirements
|
||||
- iOS 8.0+, tvOS 12.0+
|
||||
- Xcode 11.0+
|
||||
- Swift 5
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -62,7 +42,7 @@ var flatSwitch = AIFlatSwitch(frame: CGRectMake(0, 0, 50, 50))
|
||||
> To change its selected state:
|
||||
|
||||
```swift
|
||||
flatSwitch.selected = true
|
||||
flatSwitch.isSelected = true
|
||||
```
|
||||
- [x] IBInspectable
|
||||
|
||||
@@ -75,22 +55,46 @@ flatSwitch.setSelected(true, animated: true)
|
||||
> To listen to its state changes:
|
||||
|
||||
```swift
|
||||
@IBAction func onSwitchValueChange(sender: AnyObject) {
|
||||
@IBAction func handleSwitchValueChange(sender: AnyObject) {
|
||||
if let flatSwitch = sender as? AIFlatSwitch {
|
||||
println(flatSwitch.selected)
|
||||
print(flatSwitch.isSelected)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> Animation observer callbacks:
|
||||
|
||||
```swift
|
||||
flatSwitch.selectionAnimationDidStart = { isSelected in
|
||||
print("New state: \(isSelected)")
|
||||
}
|
||||
|
||||
flatSwitch.selectionAnimationDidStop = { isSelected in
|
||||
print("State when animation stopped: \(isSelected)")
|
||||
}
|
||||
```
|
||||
|
||||
> Styling the switch:
|
||||
|
||||
```swift
|
||||
flatSwitch.lineWidth = 2.0
|
||||
flatSwitch.strokeColor = UIColor.blueColor()
|
||||
flatSwitch.trailStrokeColor = UIColor.redColor()
|
||||
flatSwitch.strokeColor = UIColor.blue
|
||||
flatSwitch.trailStrokeColor = UIColor.red
|
||||
flatSwitch.backgroundLayerColor = UIColor.red
|
||||
flatSwitch.animatesOnTouch = false
|
||||
```
|
||||
- [x] IBInspectable
|
||||
|
||||
## Contribution guidelines
|
||||
|
||||
- Make your changes in your branch
|
||||
- Bump the pod version in AIFlatSwitch.podspec file (e.g. 1.0.1 to 1.0.2)
|
||||
- Make sure the Example project compiles and works fine in the Simulator
|
||||
- Find references to your source code changes in README.md and update them (e.g. method names, changed features)
|
||||
- Create a pull request
|
||||
|
||||
## License
|
||||
|
||||
AIFlatSwitch is released under the MIT license. See LICENSE for details.
|
||||
AIFlatSwitch is released under the MIT license. See LICENSE for details.
|
||||
|
||||
animated check button, checkmark
|
||||
|
||||
@@ -1,277 +0,0 @@
|
||||
//
|
||||
// AIFlatSwitch.swift
|
||||
// AIFlatSwitch
|
||||
//
|
||||
// Created by cocoatoucher on 11/02/15.
|
||||
// Copyright (c) 2015 cocoatoucher. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@IBDesignable public class AIFlatSwitch: UIControl {
|
||||
|
||||
let finalStrokeEndForCheckmark: CGFloat = 0.85
|
||||
let finalStrokeStartForCheckmark: CGFloat = 0.3
|
||||
let checkmarkBounceAmount: CGFloat = 0.1
|
||||
let animationDuration: CFTimeInterval = 0.3
|
||||
|
||||
@IBInspectable public var lineWidth: CGFloat = 2.0 {
|
||||
didSet {
|
||||
self.circle.lineWidth = lineWidth
|
||||
self.checkmark.lineWidth = lineWidth
|
||||
self.trailCircle.lineWidth = lineWidth
|
||||
}
|
||||
}
|
||||
|
||||
@IBInspectable public var strokeColor: UIColor = UIColor.blackColor() {
|
||||
didSet {
|
||||
self.circle.strokeColor = strokeColor.CGColor
|
||||
self.checkmark.strokeColor = strokeColor.CGColor
|
||||
}
|
||||
}
|
||||
|
||||
@IBInspectable public var trailStrokeColor: UIColor = UIColor.grayColor() {
|
||||
didSet {
|
||||
self.trailCircle.strokeColor = trailStrokeColor.CGColor
|
||||
}
|
||||
}
|
||||
|
||||
@IBInspectable public override var selected: Bool {
|
||||
get {
|
||||
return selected_internal
|
||||
}
|
||||
set {
|
||||
super.selected = newValue
|
||||
self.setSelected(newValue, animated: false)
|
||||
}
|
||||
}
|
||||
|
||||
private var trailCircle: CAShapeLayer = CAShapeLayer()
|
||||
private var circle: CAShapeLayer = CAShapeLayer()
|
||||
private var checkmark: CAShapeLayer = CAShapeLayer()
|
||||
|
||||
private var checkmarkMidPoint: CGPoint = CGPointZero
|
||||
|
||||
private var selected_internal: Bool = false
|
||||
|
||||
public override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
|
||||
self.configure()
|
||||
}
|
||||
|
||||
public required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
|
||||
self.configure()
|
||||
}
|
||||
|
||||
public override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
self.configure()
|
||||
}
|
||||
|
||||
public override func layoutSublayersOfLayer(layer: CALayer!) {
|
||||
super.layoutSublayersOfLayer(layer)
|
||||
|
||||
if layer == self.layer {
|
||||
|
||||
var offset: CGPoint = CGPointZero
|
||||
var radius = fmin(self.bounds.width, self.bounds.height) / 2
|
||||
offset.x = (self.bounds.width - radius * 2) / 2.0
|
||||
offset.y = (self.bounds.height - radius * 2) / 2.0
|
||||
|
||||
CATransaction.begin()
|
||||
CATransaction.setDisableActions(true)
|
||||
|
||||
var ovalRect = CGRectMake(offset.x, offset.y, radius * 2, radius * 2)
|
||||
|
||||
var circlePath = UIBezierPath(ovalInRect: ovalRect)
|
||||
trailCircle.path = circlePath.CGPath
|
||||
|
||||
circle.transform = CATransform3DIdentity
|
||||
circle.frame = self.bounds
|
||||
circle.path = UIBezierPath(ovalInRect: ovalRect).CGPath
|
||||
circle.transform = CATransform3DMakeRotation(CGFloat(212 * M_PI / 180), 0, 0, 1)
|
||||
|
||||
var origin = CGPointMake(offset.x + radius, offset.y + radius)
|
||||
var checkStartPoint = CGPointZero
|
||||
checkStartPoint.x = origin.x + radius * CGFloat(cos(212 * M_PI / 180))
|
||||
checkStartPoint.y = origin.y + radius * CGFloat(sin(212 * M_PI / 180))
|
||||
|
||||
var checkmarkPath = UIBezierPath()
|
||||
checkmarkPath.moveToPoint(checkStartPoint)
|
||||
|
||||
self.checkmarkMidPoint = CGPointMake(offset.x + radius * 0.9, offset.y + radius * 1.4)
|
||||
checkmarkPath.addLineToPoint(self.checkmarkMidPoint)
|
||||
|
||||
var checkEndPoint = CGPointZero
|
||||
checkEndPoint.x = origin.x + radius * CGFloat(cos(320 * M_PI / 180))
|
||||
checkEndPoint.y = origin.y + radius * CGFloat(sin(320 * M_PI / 180))
|
||||
|
||||
checkmarkPath.addLineToPoint(checkEndPoint)
|
||||
|
||||
checkmark.frame = self.bounds
|
||||
checkmark.path = checkmarkPath.CGPath
|
||||
|
||||
CATransaction.commit()
|
||||
}
|
||||
}
|
||||
|
||||
private func configure() {
|
||||
|
||||
self.backgroundColor = UIColor.clearColor()
|
||||
|
||||
configureShapeLayer(trailCircle)
|
||||
trailCircle.strokeColor = trailStrokeColor.CGColor
|
||||
|
||||
configureShapeLayer(circle)
|
||||
circle.strokeColor = strokeColor.CGColor
|
||||
|
||||
configureShapeLayer(checkmark)
|
||||
checkmark.strokeColor = strokeColor.CGColor
|
||||
|
||||
self.setSelected(false, animated: false)
|
||||
|
||||
self.addTarget(self, action: "onTouchUpInside:", forControlEvents: UIControlEvents.TouchUpInside)
|
||||
}
|
||||
|
||||
internal func onTouchUpInside(sender: AnyObject) {
|
||||
self.setSelected(!self.selected, animated: true)
|
||||
self.sendActionsForControlEvents(UIControlEvents.ValueChanged)
|
||||
}
|
||||
|
||||
private func configureShapeLayer(shapeLayer: CAShapeLayer) {
|
||||
shapeLayer.lineJoin = kCALineJoinRound
|
||||
shapeLayer.lineCap = kCALineCapRound
|
||||
shapeLayer.lineWidth = self.lineWidth
|
||||
shapeLayer.fillColor = UIColor.clearColor().CGColor
|
||||
self.layer.addSublayer(shapeLayer)
|
||||
}
|
||||
|
||||
public func setSelected(isSelected: Bool, animated: Bool) {
|
||||
self.selected_internal = isSelected
|
||||
|
||||
checkmark.removeAllAnimations()
|
||||
circle.removeAllAnimations()
|
||||
trailCircle.removeAllAnimations()
|
||||
|
||||
self.resetValues(animated: animated)
|
||||
|
||||
if animated {
|
||||
self.addAnimationsForSelected(selected_internal)
|
||||
}
|
||||
}
|
||||
|
||||
private func resetValues(#animated: Bool) {
|
||||
CATransaction.begin()
|
||||
CATransaction.setDisableActions(true)
|
||||
|
||||
if (selected_internal && animated) || (selected_internal == false && animated == false) {
|
||||
checkmark.strokeEnd = 0.0
|
||||
checkmark.strokeStart = 0.0
|
||||
trailCircle.opacity = 0.0
|
||||
circle.strokeStart = 0.0
|
||||
circle.strokeEnd = 1.0
|
||||
} else {
|
||||
checkmark.strokeEnd = finalStrokeEndForCheckmark
|
||||
checkmark.strokeStart = finalStrokeStartForCheckmark
|
||||
trailCircle.opacity = 1.0
|
||||
circle.strokeStart = 0.0
|
||||
circle.strokeEnd = 0.0
|
||||
}
|
||||
|
||||
CATransaction.commit()
|
||||
}
|
||||
|
||||
private func addAnimationsForSelected(selected: Bool) {
|
||||
var circleAnimationDuration = animationDuration * 0.5
|
||||
|
||||
var checkmarkEndDuration = animationDuration * 0.8
|
||||
var checkmarkStartDuration = checkmarkEndDuration - circleAnimationDuration
|
||||
var checkmarkBounceDuration = animationDuration - checkmarkEndDuration
|
||||
|
||||
var checkmarkAnimationGroup = CAAnimationGroup()
|
||||
checkmarkAnimationGroup.removedOnCompletion = false
|
||||
checkmarkAnimationGroup.fillMode = kCAFillModeForwards
|
||||
checkmarkAnimationGroup.duration = animationDuration
|
||||
checkmarkAnimationGroup.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
|
||||
|
||||
var checkmarkStrokeEnd = CAKeyframeAnimation(keyPath: "strokeEnd")
|
||||
checkmarkStrokeEnd.duration = checkmarkEndDuration + checkmarkBounceDuration
|
||||
checkmarkStrokeEnd.removedOnCompletion = false
|
||||
checkmarkStrokeEnd.fillMode = kCAFillModeForwards
|
||||
checkmarkStrokeEnd.calculationMode = kCAAnimationPaced
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeEnd.values = NSArray(objects: NSNumber(float: 0.0), NSNumber(float: Float(finalStrokeEndForCheckmark + checkmarkBounceAmount)), NSNumber(float: Float(finalStrokeEndForCheckmark)))
|
||||
checkmarkStrokeEnd.keyTimes = [NSNumber(double: 0.0), NSNumber(double: checkmarkEndDuration), NSNumber(double: checkmarkEndDuration + checkmarkBounceDuration)]
|
||||
} else {
|
||||
checkmarkStrokeEnd.values = NSArray(objects: NSNumber(float: Float(finalStrokeEndForCheckmark)), NSNumber(float: Float(finalStrokeEndForCheckmark + checkmarkBounceAmount)), NSNumber(float: -0.1))
|
||||
checkmarkStrokeEnd.keyTimes = [NSNumber(double: 0.0), NSNumber(double: checkmarkBounceDuration), NSNumber(double: checkmarkEndDuration + checkmarkBounceDuration)]
|
||||
}
|
||||
|
||||
var checkmarkStrokeStart = CAKeyframeAnimation(keyPath: "strokeStart")
|
||||
checkmarkStrokeStart.duration = checkmarkStartDuration + checkmarkBounceDuration
|
||||
checkmarkStrokeStart.removedOnCompletion = false
|
||||
checkmarkStrokeStart.fillMode = kCAFillModeForwards
|
||||
checkmarkStrokeStart.calculationMode = kCAAnimationPaced
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeStart.values = NSArray(objects: NSNumber(float: 0.0), NSNumber(float: Float(finalStrokeStartForCheckmark + checkmarkBounceAmount)), NSNumber(float: Float(finalStrokeStartForCheckmark)))
|
||||
checkmarkStrokeStart.keyTimes = [NSNumber(double: 0.0), NSNumber(double: checkmarkStartDuration), NSNumber(double: checkmarkStartDuration + checkmarkBounceDuration)]
|
||||
} else {
|
||||
checkmarkStrokeStart.values = NSArray(objects: NSNumber(float: Float(finalStrokeStartForCheckmark)), NSNumber(float: Float(finalStrokeStartForCheckmark + checkmarkBounceAmount)), NSNumber(float: 0.0))
|
||||
checkmarkStrokeStart.keyTimes = [NSNumber(double: 0.0), NSNumber(double: checkmarkBounceDuration), NSNumber(double: checkmarkStartDuration + checkmarkBounceDuration)]
|
||||
}
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeStart.beginTime = circleAnimationDuration
|
||||
}
|
||||
|
||||
checkmarkAnimationGroup.animations = [checkmarkStrokeEnd, checkmarkStrokeStart]
|
||||
checkmark.addAnimation(checkmarkAnimationGroup, forKey: "checkmarkAnimation")
|
||||
|
||||
var circleAnimationGroup = CAAnimationGroup()
|
||||
circleAnimationGroup.duration = animationDuration
|
||||
circleAnimationGroup.removedOnCompletion = false
|
||||
circleAnimationGroup.fillMode = kCAFillModeForwards
|
||||
circleAnimationGroup.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
|
||||
|
||||
var circleStrokeEnd = CABasicAnimation(keyPath: "strokeEnd")
|
||||
circleStrokeEnd.duration = circleAnimationDuration
|
||||
if selected {
|
||||
circleStrokeEnd.beginTime = 0.0
|
||||
|
||||
circleStrokeEnd.fromValue = NSNumber(float: 1.0)
|
||||
circleStrokeEnd.toValue = NSNumber(float: -0.1)
|
||||
} else {
|
||||
circleStrokeEnd.beginTime = animationDuration - circleAnimationDuration
|
||||
|
||||
circleStrokeEnd.fromValue = NSNumber(float: 0.0)
|
||||
circleStrokeEnd.toValue = NSNumber(float: 1.0)
|
||||
}
|
||||
circleStrokeEnd.removedOnCompletion = false
|
||||
circleStrokeEnd.fillMode = kCAFillModeForwards
|
||||
|
||||
circleAnimationGroup.animations = [circleStrokeEnd]
|
||||
circle.addAnimation(circleAnimationGroup, forKey: "circleStrokeEnd")
|
||||
|
||||
var trailCircleColor = CABasicAnimation(keyPath: "opacity")
|
||||
trailCircleColor.duration = animationDuration
|
||||
if selected {
|
||||
trailCircleColor.fromValue = NSNumber(float: 0.0)
|
||||
trailCircleColor.toValue = NSNumber(float: 1.0)
|
||||
} else {
|
||||
trailCircleColor.fromValue = NSNumber(float: 1.0)
|
||||
trailCircleColor.toValue = NSNumber(float: 0.0)
|
||||
}
|
||||
trailCircleColor.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
|
||||
|
||||
trailCircleColor.fillMode = kCAFillModeForwards
|
||||
trailCircleColor.removedOnCompletion = false
|
||||
trailCircle.addAnimation(trailCircleColor, forKey: "trailCircleColor")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,5 +8,12 @@
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for AIFlatSwitch.
|
||||
FOUNDATION_EXPORT double AIFlatSwitchVersionNumber;
|
||||
|
||||
//! Project version string for AIFlatSwitch.
|
||||
FOUNDATION_EXPORT const unsigned char AIFlatSwitchVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <AIFlatSwitch/PublicHeader.h>
|
||||
|
||||
|
||||
@@ -0,0 +1,407 @@
|
||||
//
|
||||
// AIFlatSwitch.swift
|
||||
// AIFlatSwitch
|
||||
//
|
||||
// Created by cocoatoucher on 11/02/15.
|
||||
// Copyright (c) 2015 cocoatoucher. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
/**
|
||||
A flat design switch alternative to UISwitch
|
||||
*/
|
||||
@IBDesignable open class AIFlatSwitch: UIControl {
|
||||
|
||||
// MARK: - Public
|
||||
|
||||
/**
|
||||
Line width for the circle, trail and checkmark parts of the switch.
|
||||
*/
|
||||
@IBInspectable open var lineWidth: CGFloat = 2.0 {
|
||||
didSet {
|
||||
self.circle.lineWidth = lineWidth
|
||||
self.checkmark.lineWidth = lineWidth
|
||||
self.trailCircle.lineWidth = lineWidth
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Set to false if the selection should not be animated with touch up inside events.
|
||||
*/
|
||||
@IBInspectable open var animatesOnTouch: Bool = true
|
||||
|
||||
/**
|
||||
Stroke color for circle and checkmark.
|
||||
Circle disappears and trail becomes visible when the switch is selected.
|
||||
*/
|
||||
@IBInspectable open var strokeColor: UIColor = UIColor.black {
|
||||
didSet {
|
||||
self.circle.strokeColor = strokeColor.cgColor
|
||||
self.checkmark.strokeColor = strokeColor.cgColor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Stroke color for trail.
|
||||
Trail disappears and circle becomes visible when the switch is deselected.
|
||||
*/
|
||||
@IBInspectable open var trailStrokeColor: UIColor = UIColor.gray {
|
||||
didSet {
|
||||
self.trailCircle.strokeColor = trailStrokeColor.cgColor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Color for the inner circle.
|
||||
*/
|
||||
@IBInspectable open var backgroundLayerColor: UIColor = UIColor.clear {
|
||||
didSet {
|
||||
self.backgroundLayer.fillColor = backgroundLayerColor.cgColor
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Overrides isSelected from UIControl using internal state flag.
|
||||
Default value is false.
|
||||
*/
|
||||
@IBInspectable open override var isSelected: Bool {
|
||||
get {
|
||||
return isSelectedInternal
|
||||
}
|
||||
set {
|
||||
super.isSelected = newValue
|
||||
self.setSelected(newValue, animated: false)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Called when selection animation started
|
||||
Either when selecting or deselecting
|
||||
*/
|
||||
public var selectionAnimationDidStart: ((_ isSelected: Bool) -> Void)?
|
||||
/**
|
||||
Called when selection animation stopped
|
||||
Either when selecting or deselecting
|
||||
*/
|
||||
public var selectionAnimationDidStop: ((_ isSelected: Bool) -> Void)?
|
||||
|
||||
public override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
// Configure switch when created with frame
|
||||
self.configure()
|
||||
}
|
||||
|
||||
public required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
// Configure switch when created from xib
|
||||
self.configure()
|
||||
}
|
||||
|
||||
/**
|
||||
Switches between selected and deselected state. Use this method to programmatically change the value of selected state.
|
||||
- Parameter isSelected: Whether the switch should be selected or not
|
||||
- Parameter animated: Whether the transition should be animated or not
|
||||
*/
|
||||
open func setSelected(_ isSelected: Bool, animated: Bool) {
|
||||
self.isSelectedInternal = isSelected
|
||||
|
||||
// Remove all animations before switching to new state
|
||||
checkmark.removeAllAnimations()
|
||||
circle.removeAllAnimations()
|
||||
trailCircle.removeAllAnimations()
|
||||
|
||||
// Reset sublayer values
|
||||
self.resetLayerValues(self.isSelectedInternal, stateWillBeAnimated: animated)
|
||||
|
||||
// Animate to new state
|
||||
if animated {
|
||||
self.addAnimations(desiredSelectedState: isSelectedInternal)
|
||||
self.accessibilityValue = isSelected ? "checked" : "unchecked"
|
||||
}
|
||||
}
|
||||
|
||||
open override func layoutSublayers(of layer: CALayer) {
|
||||
super.layoutSublayers(of: layer)
|
||||
|
||||
guard layer == self.layer else {
|
||||
return
|
||||
}
|
||||
|
||||
var offset: CGPoint = CGPoint.zero
|
||||
let radius = fmin(self.bounds.width, self.bounds.height) / 2 - (lineWidth / 2)
|
||||
offset.x = (self.bounds.width - radius * 2) / 2.0
|
||||
offset.y = (self.bounds.height - radius * 2) / 2.0
|
||||
|
||||
CATransaction.begin()
|
||||
CATransaction.setDisableActions(true)
|
||||
|
||||
// Calculate frame for circle and trail circle
|
||||
let circleAndTrailFrame = CGRect(x: offset.x, y: offset.y, width: radius * 2, height: radius * 2)
|
||||
|
||||
let circlePath = UIBezierPath(ovalIn: circleAndTrailFrame)
|
||||
trailCircle.path = circlePath.cgPath
|
||||
|
||||
circle.transform = CATransform3DIdentity
|
||||
circle.frame = self.bounds
|
||||
circle.path = UIBezierPath(ovalIn: circleAndTrailFrame).cgPath
|
||||
// Rotating circle by 212 degrees to be able to manipulate stroke end location.
|
||||
circle.transform = CATransform3DMakeRotation(CGFloat(212 * Double.pi / 180), 0, 0, 1)
|
||||
|
||||
let origin = CGPoint(x: offset.x + radius, y: offset.y + radius)
|
||||
|
||||
// Calculate checkmark path
|
||||
let checkmarkPath = UIBezierPath()
|
||||
|
||||
var checkmarkStartPoint = CGPoint.zero
|
||||
// Checkmark will start from circle's stroke end calculated above.
|
||||
checkmarkStartPoint.x = origin.x + radius * CGFloat(cos(212 * Double.pi / 180))
|
||||
checkmarkStartPoint.y = origin.y + radius * CGFloat(sin(212 * Double.pi / 180))
|
||||
checkmarkPath.move(to: checkmarkStartPoint)
|
||||
|
||||
self.checkmarkSplitPoint = CGPoint(x: offset.x + radius * 0.9, y: offset.y + radius * 1.4)
|
||||
checkmarkPath.addLine(to: self.checkmarkSplitPoint)
|
||||
|
||||
var checkmarkEndPoint = CGPoint.zero
|
||||
// Checkmark will end 320 degrees location of the circle layer.
|
||||
checkmarkEndPoint.x = origin.x + radius * CGFloat(cos(320 * Double.pi / 180))
|
||||
checkmarkEndPoint.y = origin.y + radius * CGFloat(sin(320 * Double.pi / 180))
|
||||
checkmarkPath.addLine(to: checkmarkEndPoint)
|
||||
|
||||
checkmark.frame = self.bounds
|
||||
checkmark.path = checkmarkPath.cgPath
|
||||
|
||||
let innerCircleRadius = fmin(self.bounds.width, self.bounds.height) / 2.1 - (lineWidth / 2.1)
|
||||
|
||||
offset.x = (self.bounds.width - innerCircleRadius * 2) / 2.0
|
||||
offset.y = (self.bounds.height - innerCircleRadius * 2) / 2.0
|
||||
|
||||
backgroundLayer.path = UIBezierPath(ovalIn: CGRect(x: offset.x, y: offset.y, width: innerCircleRadius * 2, height: innerCircleRadius * 2)).cgPath
|
||||
|
||||
CATransaction.commit()
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
/**
|
||||
Animation duration for the whole selection transition
|
||||
*/
|
||||
private let animationDuration: CFTimeInterval = 0.3
|
||||
/**
|
||||
Percentage where the checkmark tail ends
|
||||
*/
|
||||
private let finalStrokeEndForCheckmark: CGFloat = 0.85
|
||||
/**
|
||||
Percentage where the checkmark head begins
|
||||
*/
|
||||
private let finalStrokeStartForCheckmark: CGFloat = 0.3
|
||||
/**
|
||||
Percentage of the bounce amount of checkmark near animation completion
|
||||
*/
|
||||
private let checkmarkBounceAmount: CGFloat = 0.1
|
||||
/**
|
||||
Internal flag to keep track of selected state.
|
||||
*/
|
||||
private var isSelectedInternal: Bool = false
|
||||
/**
|
||||
Trail layer. Trail is the circle which appears when the switch is in deselected state.
|
||||
*/
|
||||
private var trailCircle: CAShapeLayer = CAShapeLayer()
|
||||
/**
|
||||
Circle layer. Circle appears when the switch is in selected state.
|
||||
*/
|
||||
private var circle: CAShapeLayer = CAShapeLayer()
|
||||
/**
|
||||
Checkmark layer. Checkmark appears when the switch is in selected state.
|
||||
*/
|
||||
private var checkmark: CAShapeLayer = CAShapeLayer()
|
||||
/**
|
||||
circleLayer, is the layer which appears inside the circle.
|
||||
*/
|
||||
private var backgroundLayer: CAShapeLayer = CAShapeLayer()
|
||||
/**
|
||||
Middle point of the checkmark layer. Calculated each time the sublayers are layout.
|
||||
*/
|
||||
private var checkmarkSplitPoint: CGPoint = CGPoint.zero
|
||||
|
||||
|
||||
/**
|
||||
Configures circle, trail and checkmark layers after initialization.
|
||||
Setups switch with the default selection state.
|
||||
Configures target for tocuh up inside event for triggering selection.
|
||||
*/
|
||||
private func configure() {
|
||||
|
||||
func configureShapeLayer(_ shapeLayer: CAShapeLayer) {
|
||||
shapeLayer.lineJoin = CAShapeLayerLineJoin.round
|
||||
shapeLayer.lineCap = CAShapeLayerLineCap.round
|
||||
shapeLayer.lineWidth = self.lineWidth
|
||||
shapeLayer.fillColor = UIColor.clear.cgColor
|
||||
self.layer.addSublayer(shapeLayer)
|
||||
}
|
||||
|
||||
// Setup layers
|
||||
self.layer.addSublayer(backgroundLayer)
|
||||
backgroundLayer.fillColor = backgroundLayerColor.cgColor
|
||||
|
||||
configureShapeLayer(trailCircle)
|
||||
trailCircle.strokeColor = trailStrokeColor.cgColor
|
||||
|
||||
configureShapeLayer(circle)
|
||||
circle.strokeColor = strokeColor.cgColor
|
||||
|
||||
configureShapeLayer(checkmark)
|
||||
checkmark.strokeColor = strokeColor.cgColor
|
||||
|
||||
// Setup initial state
|
||||
self.setSelected(false, animated: false)
|
||||
|
||||
// Add target for handling touch up inside event as a default manner
|
||||
self.addTarget(self, action: #selector(AIFlatSwitch.handleTouchUpInside), for: UIControl.Event.touchUpInside)
|
||||
}
|
||||
|
||||
/**
|
||||
Switches between selected and deselected state with touch up inside events. Set animatesOnTouch to false to disable animation on touch.
|
||||
Send valueChanged event as a result.
|
||||
*/
|
||||
@objc private func handleTouchUpInside() {
|
||||
self.setSelected(!self.isSelected, animated: self.animatesOnTouch)
|
||||
self.sendActions(for: UIControl.Event.valueChanged)
|
||||
}
|
||||
|
||||
/**
|
||||
Switches layer values to selected or deselected state without any animation.
|
||||
If the there is going to be an animation(stateWillBeAnimated parameter is true), then the layer values are reset to reverse of the desired state value to provide the transition for animation.
|
||||
- Parameter desiredSelectedState: Desired selection state for the reset to handle
|
||||
- Parameter stateWillBeAnimated: If the reset should prepare the layers for animation
|
||||
*/
|
||||
private func resetLayerValues(_ desiredSelectedState: Bool, stateWillBeAnimated: Bool) {
|
||||
CATransaction.begin()
|
||||
CATransaction.setDisableActions(true)
|
||||
|
||||
if (desiredSelectedState && stateWillBeAnimated) || (desiredSelectedState == false && stateWillBeAnimated == false) {
|
||||
// Switch to deselected state
|
||||
checkmark.strokeEnd = 0.0
|
||||
checkmark.strokeStart = 0.0
|
||||
trailCircle.opacity = 0.0
|
||||
circle.strokeStart = 0.0
|
||||
circle.strokeEnd = 1.0
|
||||
} else {
|
||||
// Switch to selected state
|
||||
checkmark.strokeEnd = finalStrokeEndForCheckmark
|
||||
checkmark.strokeStart = finalStrokeStartForCheckmark
|
||||
trailCircle.opacity = 1.0
|
||||
circle.strokeStart = 0.0
|
||||
circle.strokeEnd = 0.0
|
||||
}
|
||||
|
||||
CATransaction.commit()
|
||||
}
|
||||
|
||||
/**
|
||||
Animates the selected state transition.
|
||||
- Parameter desiredSelectedState: Desired selection state for the animation to handle
|
||||
*/
|
||||
private func addAnimations(desiredSelectedState selected: Bool) {
|
||||
let circleAnimationDuration = animationDuration * 0.5
|
||||
|
||||
let checkmarkEndDuration = animationDuration * 0.8
|
||||
let checkmarkStartDuration = checkmarkEndDuration - circleAnimationDuration
|
||||
let checkmarkBounceDuration = animationDuration - checkmarkEndDuration
|
||||
|
||||
let checkmarkAnimationGroup = CAAnimationGroup()
|
||||
checkmarkAnimationGroup.isRemovedOnCompletion = false
|
||||
checkmarkAnimationGroup.fillMode = CAMediaTimingFillMode.forwards
|
||||
checkmarkAnimationGroup.duration = animationDuration
|
||||
checkmarkAnimationGroup.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
|
||||
|
||||
let checkmarkStrokeEndAnimation = CAKeyframeAnimation(keyPath: "strokeEnd")
|
||||
checkmarkStrokeEndAnimation.duration = checkmarkEndDuration + checkmarkBounceDuration
|
||||
checkmarkStrokeEndAnimation.isRemovedOnCompletion = false
|
||||
checkmarkStrokeEndAnimation.fillMode = CAMediaTimingFillMode.forwards
|
||||
checkmarkStrokeEndAnimation.calculationMode = CAAnimationCalculationMode.paced
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeEndAnimation.values = [NSNumber(value: 0.0 as Float), NSNumber(value: Float(finalStrokeEndForCheckmark + checkmarkBounceAmount) as Float), NSNumber(value: Float(finalStrokeEndForCheckmark) as Float)]
|
||||
checkmarkStrokeEndAnimation.keyTimes = [NSNumber(value: 0.0 as Double), NSNumber(value: checkmarkEndDuration as Double), NSNumber(value: checkmarkEndDuration + checkmarkBounceDuration as Double)]
|
||||
} else {
|
||||
checkmarkStrokeEndAnimation.values = [NSNumber(value: Float(finalStrokeEndForCheckmark) as Float), NSNumber(value: Float(finalStrokeEndForCheckmark + checkmarkBounceAmount) as Float), NSNumber(value: -0.1 as Float)]
|
||||
checkmarkStrokeEndAnimation.keyTimes = [NSNumber(value: 0.0 as Double), NSNumber(value: checkmarkBounceDuration as Double), NSNumber(value: checkmarkEndDuration + checkmarkBounceDuration as Double)]
|
||||
}
|
||||
|
||||
let checkmarkStrokeStartAnimation = CAKeyframeAnimation(keyPath: "strokeStart")
|
||||
checkmarkStrokeStartAnimation.duration = checkmarkStartDuration + checkmarkBounceDuration
|
||||
checkmarkStrokeStartAnimation.isRemovedOnCompletion = false
|
||||
checkmarkStrokeStartAnimation.fillMode = CAMediaTimingFillMode.forwards
|
||||
checkmarkStrokeStartAnimation.calculationMode = CAAnimationCalculationMode.paced
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeStartAnimation.values = [NSNumber(value: 0.0 as Float), NSNumber(value: Float(finalStrokeStartForCheckmark + checkmarkBounceAmount) as Float), NSNumber(value: Float(finalStrokeStartForCheckmark) as Float)]
|
||||
checkmarkStrokeStartAnimation.keyTimes = [NSNumber(value: 0.0 as Double), NSNumber(value: checkmarkStartDuration as Double), NSNumber(value: checkmarkStartDuration + checkmarkBounceDuration as Double)]
|
||||
} else {
|
||||
checkmarkStrokeStartAnimation.values = [NSNumber(value: Float(finalStrokeStartForCheckmark) as Float), NSNumber(value: Float(finalStrokeStartForCheckmark + checkmarkBounceAmount) as Float), NSNumber(value: 0.0 as Float)]
|
||||
checkmarkStrokeStartAnimation.keyTimes = [NSNumber(value: 0.0 as Double), NSNumber(value: checkmarkBounceDuration as Double), NSNumber(value: checkmarkStartDuration + checkmarkBounceDuration as Double)]
|
||||
}
|
||||
|
||||
if selected {
|
||||
checkmarkStrokeStartAnimation.beginTime = circleAnimationDuration
|
||||
}
|
||||
|
||||
checkmarkAnimationGroup.animations = [checkmarkStrokeEndAnimation, checkmarkStrokeStartAnimation]
|
||||
checkmark.add(checkmarkAnimationGroup, forKey: "checkmarkAnimation")
|
||||
|
||||
let circleAnimationGroup = CAAnimationGroup()
|
||||
circleAnimationGroup.duration = animationDuration
|
||||
circleAnimationGroup.isRemovedOnCompletion = false
|
||||
circleAnimationGroup.fillMode = CAMediaTimingFillMode.forwards
|
||||
circleAnimationGroup.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
|
||||
|
||||
let circleStrokeEnd = CABasicAnimation(keyPath: "strokeEnd")
|
||||
circleStrokeEnd.duration = circleAnimationDuration
|
||||
if selected {
|
||||
circleStrokeEnd.beginTime = 0.0
|
||||
|
||||
circleStrokeEnd.fromValue = NSNumber(value: 1.0 as Float)
|
||||
circleStrokeEnd.toValue = NSNumber(value: -0.1 as Float)
|
||||
} else {
|
||||
circleStrokeEnd.beginTime = animationDuration - circleAnimationDuration
|
||||
|
||||
circleStrokeEnd.fromValue = NSNumber(value: 0.0 as Float)
|
||||
circleStrokeEnd.toValue = NSNumber(value: 1.0 as Float)
|
||||
}
|
||||
circleStrokeEnd.isRemovedOnCompletion = false
|
||||
circleStrokeEnd.fillMode = CAMediaTimingFillMode.forwards
|
||||
|
||||
circleAnimationGroup.animations = [circleStrokeEnd]
|
||||
circleAnimationGroup.delegate = self
|
||||
circle.add(circleAnimationGroup, forKey: "circleStrokeEnd")
|
||||
|
||||
let trailCircleColor = CABasicAnimation(keyPath: "opacity")
|
||||
trailCircleColor.duration = animationDuration
|
||||
if selected {
|
||||
trailCircleColor.fromValue = NSNumber(value: 0.0 as Float)
|
||||
trailCircleColor.toValue = NSNumber(value: 1.0 as Float)
|
||||
} else {
|
||||
trailCircleColor.fromValue = NSNumber(value: 1.0 as Float)
|
||||
trailCircleColor.toValue = NSNumber(value: 0.0 as Float)
|
||||
}
|
||||
trailCircleColor.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
|
||||
|
||||
trailCircleColor.fillMode = CAMediaTimingFillMode.forwards
|
||||
trailCircleColor.isRemovedOnCompletion = false
|
||||
trailCircle.add(trailCircleColor, forKey: "trailCircleColor")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension AIFlatSwitch: CAAnimationDelegate {
|
||||
|
||||
public func animationDidStart(_ anim: CAAnimation) {
|
||||
selectionAnimationDidStart?(isSelectedInternal)
|
||||
}
|
||||
|
||||
public func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
|
||||
selectionAnimationDidStop?(isSelectedInternal)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,47 +6,31 @@
|
||||
// Copyright (c) 2015 cocoatoucher. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import XCTest
|
||||
@testable import AIFlatSwitch
|
||||
|
||||
//Basic tests
|
||||
class AIFlatSwitchTests: XCTestCase {
|
||||
|
||||
var flatSwitch: AIFlatSwitch!
|
||||
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
|
||||
self.flatSwitch = AIFlatSwitch(frame: CGRectMake(0, 0, 50, 50))
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
func testIsSelected() {
|
||||
self.flatSwitch.setSelected(true, animated: false)
|
||||
|
||||
XCTAssertTrue(self.flatSwitch.selected, "Selected state should be true")
|
||||
}
|
||||
|
||||
func testIsDeselected() {
|
||||
self.flatSwitch.setSelected(false, animated: false)
|
||||
|
||||
XCTAssertFalse(self.flatSwitch.selected, "Selected state should be false")
|
||||
}
|
||||
|
||||
func testIsSelectedAnimated() {
|
||||
self.flatSwitch.setSelected(true, animated: true)
|
||||
|
||||
XCTAssertTrue(self.flatSwitch.selected, "Selected state should be true")
|
||||
}
|
||||
|
||||
func testIsDeselectedAnimated() {
|
||||
self.flatSwitch.setSelected(false, animated: true)
|
||||
|
||||
XCTAssertFalse(self.flatSwitch.selected, "Selected state should be false")
|
||||
}
|
||||
|
||||
func testExample() {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
self.measure {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-3
@@ -7,7 +7,7 @@
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.cocoatoucher.$(PRODUCT_NAME:rfc1034identifier)</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -16,8 +16,6 @@
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
|
||||
Reference in New Issue
Block a user