52 Commits

Author SHA1 Message Date
cocoatoucher 33fe90797d Modernising the package and the example project. 2022-01-28 17:33:13 +01:00
cocoatoucher 2c5fd8496c Update podspec 2019-08-06 00:16:54 +02:00
cocoatoucher e20edfac58 Update README.md 2019-08-06 00:09:37 +02:00
cocoatoucher 60d91db468 Adding SPM support 2019-08-05 23:55:25 +02:00
cocoatoucher dd9a7b0d66 Initial work on Swift 5 2019-04-08 15:44:47 +02:00
cocoatoucher 6684aa06f9 Merge pull request #18 from Maryom/innerColor_branch
Inner color branch
2019-03-22 14:33:58 +01:00
Maryom 1b76ee765a Use fillColor instead of backgroundColor 2019-03-18 20:13:25 +03:00
Maryom dc7bcba221 Added inner color 2019-03-17 21:44:30 +03:00
Maryom 5a00091cf0 Added inner circle color 2019-03-12 20:49:42 +03:00
cocoatoucher 832e86ddcc Update README.md 2018-11-12 15:51:44 +01:00
cocoatoucher 3e65c688e7 Adding readme for animation observer callbacks 2018-11-12 15:51:27 +01:00
cocoatoucher bea1457103 Adding animation start and stop callbacks 2018-11-12 15:48:32 +01:00
cocoatoucher fe3e74b222 Removing test property 2018-11-12 15:28:23 +01:00
cocoatoucher 2fd25b786d Update .swift-version 2018-11-12 15:08:53 +01:00
cocoatoucher 662bd7b493 Update swift version in Readme 2018-11-12 15:04:43 +01:00
cocoatoucher 0d0369ee44 Update to Swift 4
Adding Contribution guidelines to Readme
2018-11-12 15:02:31 +01:00
cocoatoucher 2425e7a915 Merge pull request #15 from marcuswu/master
Improve accessibility by announcing changed values
2018-09-21 11:30:49 +02:00
Marcus Wu 021827c810 accessibility fix spaces vs tabs 2018-07-20 09:06:09 -04:00
Marcus Wu 1318b88dac bump podspec version 2018-07-18 10:56:21 -04:00
Marcus Wu a4e46759cd Improve accessibility by announcing changed values 2018-06-26 16:44:46 -04:00
cocoatoucher ae2d9ceb22 Merge pull request #13 from bryant1410/master
Fix broken headings in Markdown files
2017-04-19 11:21:54 +02:00
Santiago Castro 16bb26482a Fix broken Markdown headings 2017-04-17 07:11:44 -03:00
cocoatoucher d343a5ee0f Increased pod version 2017-04-08 16:37:15 +02:00
cocoatoucher a68905e181 Merge pull request #12 from Darkkrye/master
Updated for iOS 10.3 and new Xcode 8.3.
2017-04-08 16:33:34 +02:00
Darkkrye d4f9e43ef4 Updated for iOS 10.3 and new Xcode 8.3. 2017-04-05 11:23:26 +02:00
cocoatoucher 6036ea9d11 Version 1.0.1
Added more documentation
Updated title
2016-09-22 19:48:22 +02:00
cocoatoucher d331a5b746 Updated readme for legacy Swift and Xcode 2016-09-18 14:00:42 +02:00
cocoatoucher 4b5df27b3b Updated example pods with cocoapods rc 2016-09-18 13:19:50 +02:00
cocoatoucher 354c228956 Fix for tests swift syntax 2016-09-18 13:05:37 +02:00
cocoatoucher 71f8e08e9a Fix for layoutSublayers method signature 2016-09-18 13:03:47 +02:00
cocoatoucher 2edba5d260 Added swift version file for cocoa pods 2016-09-17 23:44:34 +02:00
cocoatoucher b26632dbcf Reorganised pod structure 2016-09-17 23:39:18 +02:00
cocoatoucher e85b2b0d00 Fix for SWIFT_VERSION build setting 2016-09-17 23:05:05 +02:00
cocoatoucher 264d467f59 Updated readme for pod version 2016-09-17 22:37:05 +02:00
cocoatoucher dfa21645fe Upgraded to Swift 3
Added animatesOnTouch which toggles the animation for touchUpInside
events
Added documentation
Updated pod version to 1.0.0
2016-09-17 22:35:56 +02:00
cocoatoucher 702c3174f4 Added manual installation instructions 2016-08-09 22:14:06 +02:00
cocoatoucher 22a12d6a34 Updated pod spec for 0.0.4 2015-10-27 20:49:37 +01:00
cocoatoucher eea26cc2ef Merge pull request #7 from dehlen/master
Decreased radius by 1 to fix #6
2015-10-27 20:37:41 +01:00
David Ehlen 20c746b86e Changed podspec to point to fork in order to use the fix while not merged 2015-10-24 15:37:50 +02:00
David Ehlen 8c3fd98435 Decreased radius by 1 to fix #6 2015-10-24 15:18:36 +02:00
cocoatoucher 0eacd88eb8 Updated supported iOS & Xcode 2015-10-06 09:31:48 +02:00
cocoatoucher 7a089554c0 Updated for Swift 2
- Removed redundant call to configure from awakeFromNib
2015-10-05 22:24:56 +02:00
cocoatoucher 5a666c3ed5 Update README.md 2015-08-19 12:56:55 +02:00
cocoatoucher 7cf32c59d3 Merge pull request #4 from cocoatoucher/revert-3-swift_2.0
Revert "Convert to latest swift syntax"
2015-08-18 17:51:41 +02:00
cocoatoucher 706dba1ac4 Revert "Convert to latest swift syntax" 2015-08-18 17:51:31 +02:00
cocoatoucher 7a2a6afa47 Added badges 2015-08-18 17:36:54 +02:00
cocoatoucher f685e4f7ad Merge pull request #3 from donvaughn/swift_2.0
Convert to latest swift syntax
2015-08-10 00:40:00 +02:00
Don Vaughn ff20705fed Update to Xcode recommended settings 2015-08-09 22:16:25 +02:00
Don Vaughn baa71050be Use let for unchanging vars 2015-08-09 17:01:41 +02:00
Don Vaughn 7079787ea2 Convert to latest swift syntax 2015-08-09 09:15:22 +02:00
cocoatoucher b9c52202fd Fixes for Swift 1.2 2015-04-15 21:53:01 +03:00
cocoatoucher 5ef97c24da + Scaled sample image in readme 2015-04-03 20:33:13 +02:00
47 changed files with 1241 additions and 2268 deletions
+44 -5
View File
@@ -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
-12
View File
@@ -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
-418
View File
@@ -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 */;
}
@@ -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>
+595
View File
@@ -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 */;
}
@@ -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>
@@ -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 &amp; 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 &amp; 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>
@@ -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>
-6
View File
@@ -1,6 +0,0 @@
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'AIFlatSwitch', :path => '..'
-14
View File
@@ -1,14 +0,0 @@
PODS:
- AIFlatSwitch (0.0.1)
DEPENDENCIES:
- AIFlatSwitch (from `..`)
EXTERNAL SOURCES:
AIFlatSwitch:
:path: ..
SPEC CHECKSUMS:
AIFlatSwitch: d1000b9798874f65f6f1b081f5123b98b13adde3
COCOAPODS: 0.36.0
-19
View File
@@ -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
}
-14
View File
@@ -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
View File
@@ -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>
@@ -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
@@ -1,5 +0,0 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_Pods_AIFlatSwitch : NSObject
@end
@implementation PodsDummy_Pods_AIFlatSwitch
@end
@@ -1,5 +0,0 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#endif
#import "Pods-environment.h"
@@ -1,6 +0,0 @@
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT double AIFlatSwitchVersionNumber;
FOUNDATION_EXPORT const unsigned char AIFlatSwitchVersionString[];
@@ -1,6 +0,0 @@
framework module AIFlatSwitch {
umbrella header "Pods-AIFlatSwitch-umbrella.h"
export *
module * { export * }
}
-26
View File
@@ -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>
-5
View File
@@ -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
-77
View File
@@ -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
-6
View File
@@ -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
-6
View File
@@ -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
+18
View File
@@ -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]
)
+49 -45
View File
@@ -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)
![Screenshot 1](https://s3.amazonaws.com/f.cl.ly/items/1p0w3B0E3m2I2k3e0z1Q/onoff.gif)
<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
-277
View File
@@ -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>
+407
View File
@@ -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)
}
}
+15 -31
View File
@@ -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
View File
@@ -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>