From bec280482d9daefd9f59303565e1f66ff047c0a3 Mon Sep 17 00:00:00 2001 From: Gergely Orosz Date: Tue, 5 Apr 2016 22:07:42 +0100 Subject: [PATCH] Adding Objective C example --- .../project.pbxproj | 305 +++++++++ .../contents.xcworkspacedata | 7 + .../ObjectiveCExample/AppDelegate.h | 17 + .../ObjectiveCExample/AppDelegate.m | 45 ++ .../AppIcon.appiconset/Contents.json | 38 ++ .../Base.lproj/LaunchScreen.storyboard | 27 + .../Base.lproj/Main.storyboard | 25 + .../ObjectiveCExample/Info.plist | 40 ++ .../ObjectiveCExample/ViewController.h | 15 + .../ObjectiveCExample/ViewController.m | 27 + ObjectiveCExample/ObjectiveCExample/main.m | 16 + .../Podfile | 5 + .../Podfile.lock | 10 + .../Pods/Manifest.lock | 10 + .../Pods/Pods.xcodeproj/project.pbxproj | 510 +++++++++++++++ .../Pods/SkyFloatingLabelTextField/LICENSE.md | 170 +++++ .../Pods/SkyFloatingLabelTextField/README.md | 192 ++++++ .../Sources/SkyFloatingLabelTextField.swift | 602 ++++++++++++++++++ .../SkyFloatingLabelTextFieldWithIcon.swift | 179 ++++++ .../UITextField+fixCaretPosition.swift | 24 + .../Info.plist | 26 + ...bjectiveCExample-acknowledgements.markdown | 177 +++++ ...ldObjectiveCExample-acknowledgements.plist | 207 ++++++ ...ingLabelTextFieldObjectiveCExample-dummy.m | 5 + ...elTextFieldObjectiveCExample-frameworks.sh | 91 +++ ...belTextFieldObjectiveCExample-resources.sh | 95 +++ ...LabelTextFieldObjectiveCExample-umbrella.h | 6 + ...lTextFieldObjectiveCExample.debug.xcconfig | 8 + ...gLabelTextFieldObjectiveCExample.modulemap | 6 + ...extFieldObjectiveCExample.release.xcconfig | 8 + .../SkyFloatingLabelTextField/Info.plist | 26 + .../SkyFloatingLabelTextField-dummy.m | 5 + .../SkyFloatingLabelTextField-prefix.pch | 4 + .../SkyFloatingLabelTextField-umbrella.h | 6 + .../SkyFloatingLabelTextField.modulemap | 6 + .../SkyFloatingLabelTextField.xcconfig | 5 + .../project.pbxproj | 385 +++++++++++ .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 10 + .../AppDelegate.h | 19 + .../AppDelegate.m | 47 ++ .../AppIcon.appiconset/Contents.json | 38 ++ .../Base.lproj/LaunchScreen.storyboard | 27 + .../Base.lproj/Main.storyboard | 25 + .../Info.plist | 40 ++ .../ViewController.h | 17 + .../ViewController.m | 38 ++ .../main.m | 18 + 48 files changed, 3616 insertions(+) create mode 100644 ObjectiveCExample/ObjectiveCExample.xcodeproj/project.pbxproj create mode 100644 ObjectiveCExample/ObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ObjectiveCExample/ObjectiveCExample/AppDelegate.h create mode 100644 ObjectiveCExample/ObjectiveCExample/AppDelegate.m create mode 100644 ObjectiveCExample/ObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ObjectiveCExample/ObjectiveCExample/Base.lproj/LaunchScreen.storyboard create mode 100644 ObjectiveCExample/ObjectiveCExample/Base.lproj/Main.storyboard create mode 100644 ObjectiveCExample/ObjectiveCExample/Info.plist create mode 100644 ObjectiveCExample/ObjectiveCExample/ViewController.h create mode 100644 ObjectiveCExample/ObjectiveCExample/ViewController.m create mode 100644 ObjectiveCExample/ObjectiveCExample/main.m create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Podfile create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Podfile.lock create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Manifest.lock create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/LICENSE.md create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/README.md create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextField.swift create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextFieldWithIcon.swift create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/UITextField+fixCaretPosition.swift create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m create mode 100755 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh create mode 100755 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/Info.plist create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-dummy.m create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-umbrella.h create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcconfig create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.pbxproj create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcworkspace/contents.xcworkspacedata create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.h create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.m create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/LaunchScreen.storyboard create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/Main.storyboard create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Info.plist create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.h create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.m create mode 100644 SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/main.m diff --git a/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.pbxproj b/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..714e9b7 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.pbxproj @@ -0,0 +1,305 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + F5F562691CB44AA800E8B713 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F562681CB44AA800E8B713 /* main.m */; }; + F5F5626C1CB44AA800E8B713 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F5626B1CB44AA800E8B713 /* AppDelegate.m */; }; + F5F5626F1CB44AA800E8B713 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5F5626E1CB44AA800E8B713 /* ViewController.m */; }; + F5F562721CB44AA800E8B713 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5F562701CB44AA800E8B713 /* Main.storyboard */; }; + F5F562741CB44AA800E8B713 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F5F562731CB44AA800E8B713 /* Assets.xcassets */; }; + F5F562771CB44AA800E8B713 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5F562751CB44AA800E8B713 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + F5F562641CB44AA800E8B713 /* ObjectiveCExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ObjectiveCExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F5F562681CB44AA800E8B713 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + F5F5626A1CB44AA800E8B713 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + F5F5626B1CB44AA800E8B713 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + F5F5626D1CB44AA800E8B713 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + F5F5626E1CB44AA800E8B713 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + F5F562711CB44AA800E8B713 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + F5F562731CB44AA800E8B713 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F5F562761CB44AA800E8B713 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F5F562781CB44AA800E8B713 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F5F562611CB44AA800E8B713 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F5F5625B1CB44AA800E8B713 = { + isa = PBXGroup; + children = ( + F5F562661CB44AA800E8B713 /* ObjectiveCExample */, + F5F562651CB44AA800E8B713 /* Products */, + ); + sourceTree = ""; + }; + F5F562651CB44AA800E8B713 /* Products */ = { + isa = PBXGroup; + children = ( + F5F562641CB44AA800E8B713 /* ObjectiveCExample.app */, + ); + name = Products; + sourceTree = ""; + }; + F5F562661CB44AA800E8B713 /* ObjectiveCExample */ = { + isa = PBXGroup; + children = ( + F5F5626A1CB44AA800E8B713 /* AppDelegate.h */, + F5F5626B1CB44AA800E8B713 /* AppDelegate.m */, + F5F5626D1CB44AA800E8B713 /* ViewController.h */, + F5F5626E1CB44AA800E8B713 /* ViewController.m */, + F5F562701CB44AA800E8B713 /* Main.storyboard */, + F5F562731CB44AA800E8B713 /* Assets.xcassets */, + F5F562751CB44AA800E8B713 /* LaunchScreen.storyboard */, + F5F562781CB44AA800E8B713 /* Info.plist */, + F5F562671CB44AA800E8B713 /* Supporting Files */, + ); + path = ObjectiveCExample; + sourceTree = ""; + }; + F5F562671CB44AA800E8B713 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + F5F562681CB44AA800E8B713 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F5F562631CB44AA800E8B713 /* ObjectiveCExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = F5F5627B1CB44AA800E8B713 /* Build configuration list for PBXNativeTarget "ObjectiveCExample" */; + buildPhases = ( + F5F562601CB44AA800E8B713 /* Sources */, + F5F562611CB44AA800E8B713 /* Frameworks */, + F5F562621CB44AA800E8B713 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ObjectiveCExample; + productName = ObjectiveCExample; + productReference = F5F562641CB44AA800E8B713 /* ObjectiveCExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F5F5625C1CB44AA800E8B713 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = Skyscanner; + TargetAttributes = { + F5F562631CB44AA800E8B713 = { + CreatedOnToolsVersion = 7.2.1; + }; + }; + }; + buildConfigurationList = F5F5625F1CB44AA800E8B713 /* Build configuration list for PBXProject "ObjectiveCExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F5F5625B1CB44AA800E8B713; + productRefGroup = F5F562651CB44AA800E8B713 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F5F562631CB44AA800E8B713 /* ObjectiveCExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F5F562621CB44AA800E8B713 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F5F562771CB44AA800E8B713 /* LaunchScreen.storyboard in Resources */, + F5F562741CB44AA800E8B713 /* Assets.xcassets in Resources */, + F5F562721CB44AA800E8B713 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F5F562601CB44AA800E8B713 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F5F5626F1CB44AA800E8B713 /* ViewController.m in Sources */, + F5F5626C1CB44AA800E8B713 /* AppDelegate.m in Sources */, + F5F562691CB44AA800E8B713 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + F5F562701CB44AA800E8B713 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F5F562711CB44AA800E8B713 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + F5F562751CB44AA800E8B713 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F5F562761CB44AA800E8B713 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F5F562791CB44AA800E8B713 /* 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; + 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 = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + F5F5627A1CB44AA800E8B713 /* 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; + 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 = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F5F5627C1CB44AA800E8B713 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = ObjectiveCExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = net.skyscanner.ObjectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + F5F5627D1CB44AA800E8B713 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = ObjectiveCExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = net.skyscanner.ObjectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F5F5625F1CB44AA800E8B713 /* Build configuration list for PBXProject "ObjectiveCExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F5F562791CB44AA800E8B713 /* Debug */, + F5F5627A1CB44AA800E8B713 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F5F5627B1CB44AA800E8B713 /* Build configuration list for PBXNativeTarget "ObjectiveCExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F5F5627C1CB44AA800E8B713 /* Debug */, + F5F5627D1CB44AA800E8B713 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = F5F5625C1CB44AA800E8B713 /* Project object */; +} diff --git a/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..54c0346 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ObjectiveCExample/ObjectiveCExample/AppDelegate.h b/ObjectiveCExample/ObjectiveCExample/AppDelegate.h new file mode 100644 index 0000000..05cf698 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/AppDelegate.h @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// ObjectiveCExample +// +// Created by Gergely Orosz on 05/04/2016. +// Copyright © 2016 Skyscanner. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/ObjectiveCExample/ObjectiveCExample/AppDelegate.m b/ObjectiveCExample/ObjectiveCExample/AppDelegate.m new file mode 100644 index 0000000..8b6bfd8 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/AppDelegate.m @@ -0,0 +1,45 @@ +// +// AppDelegate.m +// ObjectiveCExample +// +// Created by Gergely Orosz on 05/04/2016. +// Copyright © 2016 Skyscanner. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // 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. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // 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. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // 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. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // 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. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/ObjectiveCExample/ObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/ObjectiveCExample/ObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ObjectiveCExample/ObjectiveCExample/Base.lproj/LaunchScreen.storyboard b/ObjectiveCExample/ObjectiveCExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ObjectiveCExample/ObjectiveCExample/Base.lproj/Main.storyboard b/ObjectiveCExample/ObjectiveCExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/Base.lproj/Main.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ObjectiveCExample/ObjectiveCExample/Info.plist b/ObjectiveCExample/ObjectiveCExample/Info.plist new file mode 100644 index 0000000..6905cc6 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ObjectiveCExample/ObjectiveCExample/ViewController.h b/ObjectiveCExample/ObjectiveCExample/ViewController.h new file mode 100644 index 0000000..1a0333f --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// ObjectiveCExample +// +// Created by Gergely Orosz on 05/04/2016. +// Copyright © 2016 Skyscanner. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/ObjectiveCExample/ObjectiveCExample/ViewController.m b/ObjectiveCExample/ObjectiveCExample/ViewController.m new file mode 100644 index 0000000..59edc78 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/ViewController.m @@ -0,0 +1,27 @@ +// +// ViewController.m +// ObjectiveCExample +// +// Created by Gergely Orosz on 05/04/2016. +// Copyright © 2016 Skyscanner. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/ObjectiveCExample/ObjectiveCExample/main.m b/ObjectiveCExample/ObjectiveCExample/main.m new file mode 100644 index 0000000..b3ecc64 --- /dev/null +++ b/ObjectiveCExample/ObjectiveCExample/main.m @@ -0,0 +1,16 @@ +// +// main.m +// ObjectiveCExample +// +// Created by Gergely Orosz on 05/04/2016. +// Copyright © 2016 Skyscanner. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Podfile b/SkyFloatingLabelTextFieldObjectiveCExample/Podfile new file mode 100644 index 0000000..e086caf --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Podfile @@ -0,0 +1,5 @@ +use_frameworks! + +target 'SkyFloatingLabelTextFieldObjectiveCExample' do + pod 'SkyFloatingLabelTextField', '~> 1.0' +end diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Podfile.lock b/SkyFloatingLabelTextFieldObjectiveCExample/Podfile.lock new file mode 100644 index 0000000..611761c --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Podfile.lock @@ -0,0 +1,10 @@ +PODS: + - SkyFloatingLabelTextField (1.1) + +DEPENDENCIES: + - SkyFloatingLabelTextField (~> 1.0) + +SPEC CHECKSUMS: + SkyFloatingLabelTextField: 6e85e54d84fd612001263db68565653cca5c1404 + +COCOAPODS: 0.39.0 diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Manifest.lock b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Manifest.lock new file mode 100644 index 0000000..611761c --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Manifest.lock @@ -0,0 +1,10 @@ +PODS: + - SkyFloatingLabelTextField (1.1) + +DEPENDENCIES: + - SkyFloatingLabelTextField (~> 1.0) + +SPEC CHECKSUMS: + SkyFloatingLabelTextField: 6e85e54d84fd612001263db68565653cca5c1404 + +COCOAPODS: 0.39.0 diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Pods.xcodeproj/project.pbxproj b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..16dbe60 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,510 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 298372CC930900B33E816ECB51324BD9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; + 6A63C085976D235EDFE28BEB7F371A70 /* SkyFloatingLabelTextField-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 856C1FB00B0585E564D3D0EBDE90E4F5 /* SkyFloatingLabelTextField-dummy.m */; }; + 9511D1C26A9A3A1FD5D4336E4B272D7A /* UITextField+fixCaretPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFEECCA755E56BD7670ACA5B8FDE8C49 /* UITextField+fixCaretPosition.swift */; }; + A73E5EAF330B4F40783C7E1B9AEE4221 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8FD9BC72AADDE903F31DAD652DDC64D /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AA71494CBA4CF3059BE65C7CAB67DDDD /* SkyFloatingLabelTextFieldWithIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18AB6AF7BE4547CE64DE5711633CFFC0 /* SkyFloatingLabelTextFieldWithIcon.swift */; }; + BA7CF7E71C36813986E483BE33269E41 /* SkyFloatingLabelTextField-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3998D604C4194CAA0ABE4BC6A6FD0608 /* SkyFloatingLabelTextField-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C21B72FB32F6421531884089F1C19B1E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; + E1580C3FE719760BC08D357701CABF71 /* SkyFloatingLabelTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC2FD3B444C15779258A1E4254154328 /* SkyFloatingLabelTextField.swift */; }; + FDCB8F51ED4A95A2B4C769AB528D3683 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 472AE259D4B6C766FAEB95BAF0660825 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + F174B0B19FE96CED403EBFC0ED527CB9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = CB6AC0E33B6523244BD19E4F80C74343; + remoteInfo = SkyFloatingLabelTextField; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 18AB6AF7BE4547CE64DE5711633CFFC0 /* SkyFloatingLabelTextFieldWithIcon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkyFloatingLabelTextFieldWithIcon.swift; path = Sources/SkyFloatingLabelTextFieldWithIcon.swift; sourceTree = ""; }; + 1D4C7F6233BAAB174F0D840600ED1783 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 212B52B1676A4819900A99C4B5BC62ED /* SkyFloatingLabelTextField-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SkyFloatingLabelTextField-prefix.pch"; sourceTree = ""; }; + 356A19BFAAF00477D1ABD66C094B5716 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist"; sourceTree = ""; }; + 36CABBF5470AA208075638D4E508EBAB /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig"; sourceTree = ""; }; + 3998D604C4194CAA0ABE4BC6A6FD0608 /* SkyFloatingLabelTextField-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SkyFloatingLabelTextField-umbrella.h"; sourceTree = ""; }; + 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 472AE259D4B6C766FAEB95BAF0660825 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m"; sourceTree = ""; }; + 47C9E5A771B58D18420E13898741CDB5 /* SkyFloatingLabelTextField.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SkyFloatingLabelTextField.modulemap; sourceTree = ""; }; + 6804FB54F18C5058CCAB97C41F5D7C85 /* SkyFloatingLabelTextField.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SkyFloatingLabelTextField.xcconfig; sourceTree = ""; }; + 7E5C4F1B2C974DB8376C1560ED118FC5 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 856C1FB00B0585E564D3D0EBDE90E4F5 /* SkyFloatingLabelTextField-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SkyFloatingLabelTextField-dummy.m"; sourceTree = ""; }; + 8FE141022607F83C8FC6E1595BD2DA5F /* SkyFloatingLabelTextField.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SkyFloatingLabelTextField.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FD9BC72AADDE903F31DAD652DDC64D /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h"; sourceTree = ""; }; + AA057EED586E6FF9EE325A98595EADE4 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig"; sourceTree = ""; }; + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C2611DCF609E1A4085CAA984A1C208FA /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh"; sourceTree = ""; }; + DC2FD3B444C15779258A1E4254154328 /* SkyFloatingLabelTextField.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SkyFloatingLabelTextField.swift; path = Sources/SkyFloatingLabelTextField.swift; sourceTree = ""; }; + DFEECCA755E56BD7670ACA5B8FDE8C49 /* UITextField+fixCaretPosition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UITextField+fixCaretPosition.swift"; path = "Sources/UITextField+fixCaretPosition.swift"; sourceTree = ""; }; + E87D819FED0C533F47742A3BABE4BB59 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh"; sourceTree = ""; }; + EAB0E5DA724F075F8DF106BE5FA866CD /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown"; sourceTree = ""; }; + F192FFD4466BA7234EE597DA9AAD4490 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap"; sourceTree = ""; }; + F4ADEA7F9BD0721D0AF2472DC64BBCFD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1C786EC553625A89887CFB058EE8F461 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 298372CC930900B33E816ECB51324BD9 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 72507B0DC9FAA3E33915BAB75F4D86ED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C21B72FB32F6421531884089F1C19B1E /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C8F83CCEF573C773C34D82C14313BF9 /* Support Files */ = { + isa = PBXGroup; + children = ( + F4ADEA7F9BD0721D0AF2472DC64BBCFD /* Info.plist */, + 47C9E5A771B58D18420E13898741CDB5 /* SkyFloatingLabelTextField.modulemap */, + 6804FB54F18C5058CCAB97C41F5D7C85 /* SkyFloatingLabelTextField.xcconfig */, + 856C1FB00B0585E564D3D0EBDE90E4F5 /* SkyFloatingLabelTextField-dummy.m */, + 212B52B1676A4819900A99C4B5BC62ED /* SkyFloatingLabelTextField-prefix.pch */, + 3998D604C4194CAA0ABE4BC6A6FD0608 /* SkyFloatingLabelTextField-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/SkyFloatingLabelTextField"; + sourceTree = ""; + }; + 0FF8BFD3752DA47D8D8CDB3898B401B0 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample */ = { + isa = PBXGroup; + children = ( + 7E5C4F1B2C974DB8376C1560ED118FC5 /* Info.plist */, + F192FFD4466BA7234EE597DA9AAD4490 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap */, + EAB0E5DA724F075F8DF106BE5FA866CD /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown */, + 356A19BFAAF00477D1ABD66C094B5716 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist */, + 472AE259D4B6C766FAEB95BAF0660825 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m */, + C2611DCF609E1A4085CAA984A1C208FA /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh */, + E87D819FED0C533F47742A3BABE4BB59 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh */, + A8FD9BC72AADDE903F31DAD652DDC64D /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h */, + AA057EED586E6FF9EE325A98595EADE4 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig */, + 36CABBF5470AA208075638D4E508EBAB /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig */, + ); + name = "Pods-SkyFloatingLabelTextFieldObjectiveCExample"; + path = "Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample"; + sourceTree = ""; + }; + 3E538C50B5FBAB3A28B0BDDB5EEAA44A /* Pods */ = { + isa = PBXGroup; + children = ( + BE06ED5906FCC1C2AA7EDA322B1D832D /* SkyFloatingLabelTextField */, + ); + name = Pods; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + 3E538C50B5FBAB3A28B0BDDB5EEAA44A /* Pods */, + BD6C86F1ED340C2BBB5C51DBF3159F37 /* Products */, + DCD508918CD4E81F6ECCE1DF86DB3FB3 /* Targets Support Files */, + ); + sourceTree = ""; + }; + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + isa = PBXGroup; + children = ( + BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + BD6C86F1ED340C2BBB5C51DBF3159F37 /* Products */ = { + isa = PBXGroup; + children = ( + 1D4C7F6233BAAB174F0D840600ED1783 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */, + 8FE141022607F83C8FC6E1595BD2DA5F /* SkyFloatingLabelTextField.framework */, + ); + name = Products; + sourceTree = ""; + }; + BE06ED5906FCC1C2AA7EDA322B1D832D /* SkyFloatingLabelTextField */ = { + isa = PBXGroup; + children = ( + DC2FD3B444C15779258A1E4254154328 /* SkyFloatingLabelTextField.swift */, + 18AB6AF7BE4547CE64DE5711633CFFC0 /* SkyFloatingLabelTextFieldWithIcon.swift */, + DFEECCA755E56BD7670ACA5B8FDE8C49 /* UITextField+fixCaretPosition.swift */, + 0C8F83CCEF573C773C34D82C14313BF9 /* Support Files */, + ); + path = SkyFloatingLabelTextField; + sourceTree = ""; + }; + BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */ = { + isa = PBXGroup; + children = ( + 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + DCD508918CD4E81F6ECCE1DF86DB3FB3 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 0FF8BFD3752DA47D8D8CDB3898B401B0 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5C8412524E923442183802F5DF04DD56 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BA7CF7E71C36813986E483BE33269E41 /* SkyFloatingLabelTextField-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D163689705DD8F1A48C88B4F06BC8B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A73E5EAF330B4F40783C7E1B9AEE4221 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 9BA448A89BCA95019626C8A16E96D81D /* Pods-SkyFloatingLabelTextFieldObjectiveCExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = AD4F25D296C44580E519A8CDB5F7FB3C /* Build configuration list for PBXNativeTarget "Pods-SkyFloatingLabelTextFieldObjectiveCExample" */; + buildPhases = ( + BB2E272B876158AE6BF8D1BADA96D597 /* Sources */, + 1C786EC553625A89887CFB058EE8F461 /* Frameworks */, + 7D163689705DD8F1A48C88B4F06BC8B4 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 1A41AB188F1BEF40DCF6469AD691A49E /* PBXTargetDependency */, + ); + name = "Pods-SkyFloatingLabelTextFieldObjectiveCExample"; + productName = "Pods-SkyFloatingLabelTextFieldObjectiveCExample"; + productReference = 1D4C7F6233BAAB174F0D840600ED1783 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */; + productType = "com.apple.product-type.framework"; + }; + CB6AC0E33B6523244BD19E4F80C74343 /* SkyFloatingLabelTextField */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BA7D3F99B27FA9C6AD32E4CDD9D5D47 /* Build configuration list for PBXNativeTarget "SkyFloatingLabelTextField" */; + buildPhases = ( + CCA05441AE464A55B738C59E1AA4600B /* Sources */, + 72507B0DC9FAA3E33915BAB75F4D86ED /* Frameworks */, + 5C8412524E923442183802F5DF04DD56 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SkyFloatingLabelTextField; + productName = SkyFloatingLabelTextField; + productReference = 8FE141022607F83C8FC6E1595BD2DA5F /* SkyFloatingLabelTextField.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = BD6C86F1ED340C2BBB5C51DBF3159F37 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9BA448A89BCA95019626C8A16E96D81D /* Pods-SkyFloatingLabelTextFieldObjectiveCExample */, + CB6AC0E33B6523244BD19E4F80C74343 /* SkyFloatingLabelTextField */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + BB2E272B876158AE6BF8D1BADA96D597 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FDCB8F51ED4A95A2B4C769AB528D3683 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CCA05441AE464A55B738C59E1AA4600B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A63C085976D235EDFE28BEB7F371A70 /* SkyFloatingLabelTextField-dummy.m in Sources */, + E1580C3FE719760BC08D357701CABF71 /* SkyFloatingLabelTextField.swift in Sources */, + AA71494CBA4CF3059BE65C7CAB67DDDD /* SkyFloatingLabelTextFieldWithIcon.swift in Sources */, + 9511D1C26A9A3A1FD5D4336E4B272D7A /* UITextField+fixCaretPosition.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 1A41AB188F1BEF40DCF6469AD691A49E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SkyFloatingLabelTextField; + target = CB6AC0E33B6523244BD19E4F80C74343 /* SkyFloatingLabelTextField */; + targetProxy = F174B0B19FE96CED403EBFC0ED527CB9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2E14EC149D18E4E6B4F883ACEE12246F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AA057EED586E6FF9EE325A98595EADE4 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.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-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SkyFloatingLabelTextFieldObjectiveCExample; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 79CFC54826F200633A8C58E905EF24F3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 36CABBF5470AA208075638D4E508EBAB /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.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-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SkyFloatingLabelTextFieldObjectiveCExample; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8D1534490D941DCA47C62AC4314182AF /* 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 = 9.2; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + C5A18280E9321A9268D1C80B7DA43967 /* 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 = 9.2; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C5E23FA38306FB2987AE3BC63889CA72 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6804FB54F18C5058CCAB97C41F5D7C85 /* SkyFloatingLabelTextField.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/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SkyFloatingLabelTextField/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SkyFloatingLabelTextField; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + DCC03C273227AD974A694D8A0DFB1B66 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6804FB54F18C5058CCAB97C41F5D7C85 /* SkyFloatingLabelTextField.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/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SkyFloatingLabelTextField/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SkyFloatingLabelTextField; + 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 */ + 0BA7D3F99B27FA9C6AD32E4CDD9D5D47 /* Build configuration list for PBXNativeTarget "SkyFloatingLabelTextField" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C5E23FA38306FB2987AE3BC63889CA72 /* Debug */, + DCC03C273227AD974A694D8A0DFB1B66 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8D1534490D941DCA47C62AC4314182AF /* Debug */, + C5A18280E9321A9268D1C80B7DA43967 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AD4F25D296C44580E519A8CDB5F7FB3C /* Build configuration list for PBXNativeTarget "Pods-SkyFloatingLabelTextFieldObjectiveCExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2E14EC149D18E4E6B4F883ACEE12246F /* Debug */, + 79CFC54826F200633A8C58E905EF24F3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/LICENSE.md b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/LICENSE.md new file mode 100644 index 0000000..3b3847f --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/LICENSE.md @@ -0,0 +1,170 @@ +Apache License +============== + +_Version 2.0, January 2004_ +_<>_ + +### Terms and Conditions for use, reproduction, and distribution + +#### 1. Definitions + +“License” shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +“Licensor” shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +“Legal Entity” shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, “control” means **(i)** the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the +outstanding shares, or **(iii)** beneficial ownership of such entity. + +“You” (or “Your”) shall mean an individual or Legal Entity exercising +permissions granted by this License. + +“Source” form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +“Object” form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +“Work” shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +“Derivative Works” shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +“Contribution” shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +“submitted” means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as “Not a Contribution.” + +“Contributor” shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +#### 2. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +#### 3. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +#### 4. Redistribution + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* **(a)** You must give any other recipients of the Work or Derivative Works a copy of +this License; and +* **(b)** You must cause any modified files to carry prominent notices stating that You +changed the files; and +* **(c)** You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. + +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +#### 5. Submission of Contributions + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +#### 6. Trademarks + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +#### 7. Disclaimer of Warranty + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +#### 8. Limitation of Liability + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +#### 9. Accepting Warranty or Additional Liability + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +_END OF TERMS AND CONDITIONS_ diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/README.md b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/README.md new file mode 100644 index 0000000..929d5b7 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/README.md @@ -0,0 +1,192 @@ +# SkyFloatingLabelTextField + +[![Build Status](https://travis-ci.org/Skyscanner/SkyFloatingLabelTextField.svg?branch=master)](https://travis-ci.org/Skyscanner/SkyFloatingLabelTextField) +[![Coverage Status](https://coveralls.io/repos/github/Skyscanner/SkyFloatingLabelTextField/badge.svg?branch=master)](https://coveralls.io/github/Skyscanner/SkyFloatingLabelTextField?branch=master) +[![Pod Platform](https://img.shields.io/cocoapods/p/SkyFloatingLabelTextField.svg?style=flat)](https://cocoapods.org/pods/SkyFloatingLabelTextField) +[![Pod License](https://img.shields.io/cocoapods/l/SkyFloatingLabelTextField.svg?style=flat)](https://github.com/SkyFloatingLabelTextField/blob/master/LICENSE.md) + +[![Pod Version](https://img.shields.io/cocoapods/v/SkyFloatingLabelTextField.svg?style=flat)](https://cocoapods.org/pods/SkyFloatingLabelTextField) +[![Documentation](https://img.shields.io/cocoapods/metrics/doc-percent/SkyFloatingLabelTextField.svg)](http://cocoadocs.org/docsets/SkyFloatingLabelTextField/) +[![Readme Score](http://readme-score-api.herokuapp.com/score.svg?url=https://github.com/Skyscanner/SkyFloatingLabelTextField)](http://clayallsopp.github.io/readme-score?url=https://github.com/Skyscanner/SkyFloatingLabelTextField) + +`SkyFloatingLabelTextField` is a beautiful, flexible and customizable implementation of the space saving **"Float Label Pattern"**. This design enables adding context to input fields that is visible at time of typing, while minimizing the additional space used to display this additional context. This component is used in the [Skyscanner TravelPro iOS application](https://itunes.apple.com/gb/app/travelpro-business-travel/id1046916687) in several places. + +On top of implementing the space-saving floating title, the component also supports using iconography, various states (error, selected, highlighted states), and is very much customizable and extensible. + +![](/SkyFloatingLabelTextField/images/showcase-example.gif) + +## Usage + +To start using the component add it to your project using CocoaPods, Carthage or manually as per the [Installation](#installation) section. + +The UI component can be used via the `SkyFloatingLabelTextField` class. To use icons on the right hand side, use the `SkyFloatingLabelTextFieldWithIcon` class. This control can be used very similar to `UITextField` - both from Interface Builder, or from code. + +To create an instance of the class, use Interface builder, or do it from code. This example will create the following textbox with the placeholder and title: + +![](/SkyFloatingLabelTextField/images/example-1.gif) + +```swift +let textField = SkyFloatingLabelTextField(frame: CGRectMake(10, 10, 200, 45)) +textField.placeholder = "Name" +textField.title = "Your full name" +self.view.addSubview(textField) +``` + +### Colors + +To customize the colors of the textfield, set a few properties - either from code, or from Interface builder. To use a textfield with an icon, utilize the `SkyFloatingLabelTextFieldWithIcon` class (and bundle the font class with your app). This example will change colors for the textfield on teh right: + +![](/SkyFloatingLabelTextField/images/example-2.gif) + +```swift +let lightGreyColor = UIColor(red: 197/255, green: 205/255, blue: 205/255, alpha: 1.0) +let darkGreyColor = UIColor(red: 52/255, green: 42/255, blue: 61/255, alpha: 1.0) +let overcastBlueColor = UIColor(red: 0, green: 187/255, blue: 204/255, alpha: 1.0) + +let textField1 = SkyFloatingLabelTextField(frame: CGRectMake(10, 10, 120, 45)) +textField1.placeholder = "First name" +textField1.title = "Given name" +self.view.addSubview(textField1) + +let textField2 = SkyFloatingLabelTextField(frame: CGRectMake(150, 10, 120, 45)) +textField2.placeholder = "Last name" +textField2.title = "Family name" + +textField2.tintColor = overcastBlueColor // the color of the blinking cursor +textField2.textColor = darkGreyColor +textField2.lineColor = lightGreyColor +textField2.selectedTitleColor = overcastBlueColor +textField2.selectedLineColor = overcastBlueColor + +textField2.lineHeight = 1.0 // bottom line height in points +textField2.selectedLineHeight = 2.0 +``` + +### Icons and fonts + +Use the `SkyFloatingLabelTextFieldWithIcon` field to display icons next to the textfields. You will have to set the `iconFont` property and bundle your icon with your app (if its not a built in one). Icons can be rotated and more precise positioning is also supported: + +![](/SkyFloatingLabelTextField/images/example-3.gif) + +```swift +let overcastBlueColor = UIColor(red: 0, green: 187/255, blue: 204/255, alpha: 1.0) + +let textField1 = SkyFloatingLabelTextFieldWithIcon(frame: CGRectMake(10, 10, 120, 45)) +textField1.placeholder = "Departure" +textField1.title = "Flying from" +textField1.iconFont = UIFont(name: "FontAwesome", size: 15) +textField1.iconText = "\u{f072}" // plane icon as per https://fortawesome.github.io/Font-Awesome/cheatsheet/ +self.view.addSubview(textField1) + +let textField2 = SkyFloatingLabelTextFieldWithIcon(frame: CGRectMake(150, 10, 120, 45)) +textField2.placeholder = "Arrival" +textField2.title = "Flying to" +textField2.tintColor = overcastBlueColor +textField2.selectedTitleColor = overcastBlueColor +textField2.selectedLineColor = overcastBlueColor + +// Set icon properties +textField2.iconColor = UIColor.lightGrayColor() +textField2.selectedIconColor = overcastBlueColor +textField2.iconFont = UIFont(name: "FontAwesome", size: 15) +textField2.iconText = "\u{f072}" // plane icon as per https://fortawesome.github.io/Font-Awesome/cheatsheet/ +textField2.iconRotationDegrees = 90 // rotate it 90 degrees +textField2.iconMarginBottom = 4.0 // more precise icon positioning +textField2.iconMarginLeft = 2.0 +self.view.addSubview(textField2) +``` + +### Error state and delegates + +The textfield supports displaying an error state - this can be useful for example when validating fields on the fly. When the `errorMessage` property is set on the control, then the control is highlighted with the color set in the `errorColor` property. + +To get notified of different events happening on the textfield - such as the text changing, editing starting or ending - just set the `delegate` property to a class implementing the standard [UITextFieldDelegate](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/) protocol: + +![](/SkyFloatingLabelTextField/images/example-4.gif) + +```swift +class MyViewController: UIViewController, UITextFieldDelegate { + override func viewDidLoad() { + super.viewDidLoad() + let textField1 = SkyFloatingLabelTextField(frame: CGRectMake(10, 10, 120, 45)) + textField1.placeholder = "Email" + textField1.title = "Email address" + textField1.errorColor = UIColor.redColor() + textField1.delegate = self + self.view.addSubview(textField1) + } + + /// Implementing a method on the UITextFieldDelegate protocol. This will notify us when something has changed on the textfield + func textFieldChanged(textField: UITextField) { + if let text = textField.text { + // Note: every time when the text of the textfield changes, the error message is reset (hence we don't need to reset it) + if(text.characters.count < 3 || !text.containsString("@")) { + textField.errorMessage = "Invaid email" + } + } + } +} +``` + +### Further customizing the control by subclassing + +The control was designed to allow further customization in subclasses. The control itself inherits from `UITextField`, so the standard overrides from there can all be used. A few other notable customization hooks via overriding are: +- `updateColors`: override this method to customzie colors whenever the state of the control changes +- Layout overrrides: + - `titleLabelRectForBounds`: override to change the bounds of the title label + - `lineViewRectForBounds`: override to change the bounds of the bottom line view + - `placeholderLabelRectForBounds`: override to change the bounds of the placeholder view + +## Documentation + +See the [SkyFloatingLabelTextField documentation](http://cocoadocs.org/docsets/SkyFloatingLabelTextField) on [CocoaDocs.org](http://cocoadocs.org) for the full documentation. + +## Installation + +#### CocoaPods + +The control is available through [CocoaPods](https://cocoapods.org/). CocoaPods can be installed using [Ruby gems](https://rubygems.org/): +```shell +$ gem install cocoapods +``` + +Then simply add `SkyFloatingLabelTextField` to your Podfile: + +``` +pod 'SkyFloatingLabelTextField', '~> 1.0' +``` + +Lastly let CocoaPods fetch the latest version of the component by running: +```shell +$ cocoapods update +``` + +#### Carthage +The component supports [Carthage](https://github.con/Carthage/Carthage). Start by making sure you have the latest version of Carthage installed. Using [Homebrew](http://brew.sh/) run this: +```shell +$ brew update +$ brew install carthage +``` +Then add `SkyFloatingLabelTextField` to your `Cartfile`: +``` +github 'Skyscanner/SkyFloatingLabelTextField' ~> 1.0 +``` +Afterwards have Carthage update the component by running: +```shell +$ carthage update +``` +Finally, add the framework to the Xcode project of your App. Link the framework to your App and copy it to the App’s Frameworks directory via the “Build Phases” section. + +#### Manual + +You can download the latest files from our [Releases page](https://github.com/Skyscanner/SkyFloatingLabelTextField/releases). After doing so, copy the files in the `Sources` folder to your project. + +## Contributing + +We welcome all contributions. Please read [this guide](/CONTRIBUTING.md) before opening issues or submitting pull requests, as well as how and who to contact with questions. + +## Credits + +The original component was built by [Daniel Langh](https://github.com/intonarumori), [Gergely Orosz](https://github.com/gergelyorosz) and [Raimon Laupente](https://github.com/wolffan). + +Credits for the original design, and improving it with iconography to Matt D. Smith ([@mds](https://twitter.com/mds)). diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextField.swift b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextField.swift new file mode 100644 index 0000000..e357e84 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextField.swift @@ -0,0 +1,602 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS /Users/gergelyorosz/Documents/Projects/Skyscanner/SkyFloatingLabelTextField/SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests/SkyFloatingLabelTextFieldTests.swiftOF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +import UIKit + +/** + A beautiful and flexible textfield implementation with support for title label, error message and placeholder. + */ +@IBDesignable +public class SkyFloatingLabelTextField: UITextField { + + // MARK: Animation timing + + /// The value of the title appearing duration + public var titleFadeInDuration:NSTimeInterval = 0.2 + /// The value of the title disappearing duration + public var titleFadeOutDuration:NSTimeInterval = 0.3 + + // MARK: Colors + + private var cachedTextColor:UIColor? + + /// A UIColor value that determines the text color of the editable text + @IBInspectable + override public var textColor:UIColor? { + set { + self.cachedTextColor = newValue + self.updateControl(false) + } + get { + return cachedTextColor + } + } + + /// A UIColor value that determines text color of the placeholder label + @IBInspectable public var placeholderColor:UIColor = UIColor.lightGrayColor() { + didSet { + self.updatePlaceholder() + } + } + + /// A UIColor value that determines text color of the placeholder label + @IBInspectable public var placeholderFont:UIFont? { + didSet { + self.updatePlaceholder() + } + } + + private func updatePlaceholder() { + if let + placeholder = self.placeholder, + font = self.placeholderFont ?? self.font { + self.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSForegroundColorAttributeName:placeholderColor, + NSFontAttributeName: font]) + } + } + + /// A UIColor value that determines the text color of the title label when in the normal state + @IBInspectable public var titleColor:UIColor = UIColor.grayColor() { + didSet { + self.updateTitleColor() + } + } + + /// A UIColor value that determines the color of the bottom line when in the normal state + @IBInspectable public var lineColor:UIColor = UIColor.lightGrayColor() { + didSet { + self.updateLineView() + } + } + + /// A UIColor value that determines the color used for the title label and the line when the error message is not `nil` + @IBInspectable public var errorColor:UIColor = UIColor.redColor() { + didSet { + self.updateColors() + } + } + + /// A UIColor value that determines the text color of the title label when editing + @IBInspectable public var selectedTitleColor:UIColor = UIColor.blueColor() { + didSet { + self.updateTitleColor() + } + } + + /// A UIColor value that determines the color of the line in a selected state + @IBInspectable public var selectedLineColor:UIColor = UIColor.blackColor() { + didSet { + self.updateLineView() + } + } + + // MARK: Line height + + /// A CGFloat value that determines the height for the bottom line when the control is in the normal state + @IBInspectable public var lineHeight:CGFloat = 0.5 { + didSet { + self.updateLineView() + self.setNeedsDisplay() + } + } + + /// A CGFloat value that determines the height for the bottom line when the control is in a selected state + @IBInspectable public var selectedLineHeight:CGFloat = 1.0 { + didSet { + self.updateLineView() + self.setNeedsDisplay() + } + } + + // MARK: View components + + /// The internal `UIView` to display the line below the text input. + public var lineView:UIView! + + /// The internal `UILabel` that displays the selected, deselected title or the error message based on the current state. + public var titleLabel:UILabel! + + // MARK: Properties + + /** + The formatter to use before displaying content in the title label. This can be the `title`, `selectedTitle` or the `errorMessage`. + The default implementation converts the text to uppercase. + */ + public var titleFormatter:(String -> String) = { (text:String) -> String in + return text.uppercaseString + } + + /** + Identifies whether the text object should hide the text being entered. + */ + override public var secureTextEntry:Bool { + set { + super.secureTextEntry = newValue + self.fixCaretPosition() + } + get { + return super.secureTextEntry + } + } + + /// A String value for the error message to display. + public var errorMessage:String? { + didSet { + self.updateControl(true) + } + } + + /// A Boolean value that determines whether the receiver discards `errorMessage` when the text input is changed. + public var discardsErrorMessageOnTextChange:Bool = true + + /// The backing property for the highlighted property + private var _highlighted = false + + /// A Boolean value that determines whether the receiver is highlighted. When changing this value, highlighting will be done with animation + override public var highlighted:Bool { + get { + return _highlighted + } + set { + self.setHighlighted(_highlighted, animated: true) + } + } + + /** + Sets the highlighted state with specifying whether this state change should be animated + + - parameter highlighted: Whether the field should be highlighted + - parameter animated: Whether the change in highlighting should be animated + */ + public func setHighlighted(highlighted:Bool, animated:Bool) { + _highlighted = highlighted + if(self.highlighted) { + self.updateTitleColor() + _titleVisible = true + self.updateTitleVisibility(animated, animateFromCurrentState: true) + self.updateLineView() + } else { + if(animated) { + // Performing fading out after a short timeout to make sure the title previously faded in all the way + let time = dispatch_time(DISPATCH_TIME_NOW, Int64(self.titleFadeInDuration * Double(NSEC_PER_SEC))) + dispatch_after(time, dispatch_get_main_queue(), { () -> Void in + self.fadeOutHighlightedWithAnimated(true) + }) + } else { + self.fadeOutHighlightedWithAnimated(false) + } + } + } + + /// A Boolean value that determines whether the textfield is being edited or is selected. + public var editingOrSelected:Bool { + get { + return super.editing || self.selected; + } + } + + /// A Boolean value that determines whether the receiver has an error message. + public var hasErrorMessage:Bool { + get { + return self.errorMessage != nil + } + } + + private var _titleVisible:Bool = false + private var _renderingInInterfaceBuilder:Bool = false + + /// A Boolean value determining whether the title field is shown + public var titleVisible:Bool { + get { + return _titleVisible + } + } + private func setTitleVisibile(titleVisible:Bool, animated:Bool = false) { + if titleVisible != _titleVisible { + _titleVisible = titleVisible + self.updateTitleVisibility(animated) + } + } + + /// The text content of the textfield + @IBInspectable + override public var text:String? { + didSet { + self.resetErrorMessageIfPresent() + self.updateControl(false) + } + } + + /** + The String to display when the input field is empty. + The placeholder can also appear in the title label when both `title` `selectedTitle` and are `nil`. + */ + @IBInspectable + override public var placeholder:String? { + didSet { + self.setNeedsDisplay() + self.updateTitleLabel() + } + } + + /// The String to display when the textfield is editing and the input is not empty. + @IBInspectable public var selectedTitle:String? { + didSet { + self.updateControl() + } + } + + /// The String to display when the textfield is not editing and the input is not empty. + @IBInspectable public var title:String? { + didSet { + self.updateControl() + } + } + + // Determines whether the field is selected. When selected, the title floats above the textbox. + public override var selected:Bool { + didSet { + self.updateControl(true) + } + } + + // MARK: - Initializers + + /** + Initializes the control + - parameter frame the frame of the control + */ + override public init(frame: CGRect) { + super.init(frame: frame) + self.init_SkyFloatingLabelTextField() + } + + /** + Intialzies the control by deserializing it + - parameter coder the object to deserialize the control from + */ + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.init_SkyFloatingLabelTextField() + } + + private final func init_SkyFloatingLabelTextField() { + self.borderStyle = .None + self.createTitleLabel() + self.createLineView() + self.updateColors() + self.addEditingChangedObserver() + } + + private func addEditingChangedObserver() { + self.addTarget(self, action: Selector("editingChanged"), forControlEvents: .EditingChanged) + } + + /** + Invoked when the editing state of the textfield changes. Override to respond to this change. + */ + public func editingChanged() { + resetErrorMessageIfPresent() + updateControl(true) + updateTitleLabel(true) + } + + // MARK: create components + + private func createTitleLabel() { + let titleLabel = UILabel() + titleLabel.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] + titleLabel.font = UIFont.systemFontOfSize(13) + titleLabel.alpha = 0.0 + titleLabel.textColor = self.titleColor + self.addSubview(titleLabel) + self.titleLabel = titleLabel + } + + private func createLineView() { + + if self.lineView == nil { + let lineView = UIView() + lineView.userInteractionEnabled = false + self.lineView = lineView + self.configureDefaultLineHeight() + } + lineView.autoresizingMask = [.FlexibleWidth, .FlexibleTopMargin] + self.addSubview(lineView) + } + + private func configureDefaultLineHeight() { + let onePixel:CGFloat = 1.0 / UIScreen.mainScreen().scale + self.lineHeight = 2.0 * onePixel + self.selectedLineHeight = 2.0 * self.lineHeight + } + + // MARK: Responder handling + + /** + Attempt the control to become the first responder + - returns: True when successfull becoming the first responder + */ + override public func becomeFirstResponder() -> Bool { + let result = super.becomeFirstResponder() + self.updateControl(true) + return result + } + + /** + Attempt the control to resign being the first responder + - returns: True when successfull resigning being the first responder + */ + override public func resignFirstResponder() -> Bool { + let result = super.resignFirstResponder() + self.updateControl(true) + return result + } + + // MARK: - View updates + + private func updateControl(animated:Bool = false) { + self.updateColors() + self.updateLineView() + self.updateTitleLabel(animated) + } + + private func updateLineView() { + if let lineView = self.lineView { + lineView.frame = self.lineViewRectForBounds(self.bounds, editing: self.editingOrSelected) + } + self.updateLineColor() + } + + // MARK: - Color updates + + /// Update the colors for the control. Override to customize colors. + public func updateColors() { + self.updateLineColor() + self.updateTitleColor() + self.updateTextColor() + } + + private func updateLineColor() { + if self.hasErrorMessage { + self.lineView.backgroundColor = self.errorColor + } else { + self.lineView.backgroundColor = self.editingOrSelected ? self.selectedLineColor : self.lineColor + } + } + + private func updateTitleColor() { + if self.hasErrorMessage { + self.titleLabel.textColor = self.errorColor + } else { + if self.editingOrSelected || self.highlighted { + self.titleLabel.textColor = self.selectedTitleColor + } else { + self.titleLabel.textColor = self.titleColor + } + } + } + + private func updateTextColor() { + if self.hasErrorMessage { + super.textColor = self.errorColor + } else { + super.textColor = self.cachedTextColor + } + } + + // MARK: - Title handling + + private func updateTitleLabel(animated:Bool = false) { + + var titleText:String? = nil + if self.hasErrorMessage { + titleText = self.titleFormatter(errorMessage!) + } else { + if self.editingOrSelected { + titleText = self.selectedTitleOrTitlePlaceholder() + if titleText == nil { + titleText = self.titleOrPlaceholder() + } + } else { + titleText = self.titleOrPlaceholder() + } + } + self.titleLabel.text = titleText + + let titleVisible = (titleText != nil) && self.hasText() + self.setTitleVisibile(titleVisible, animated: animated) + } + + private func updateTitleVisibility(animated:Bool = false, animateFromCurrentState:Bool = false) { + let alpha:CGFloat = _titleVisible ? 1.0 : 0.0 + let frame:CGRect = self.titleLabelRectForBounds(self.bounds, editing: _titleVisible) + let updateBlock = { () -> Void in + self.titleLabel.alpha = alpha + self.titleLabel.frame = frame + } + if animated { + var animationOptions:UIViewAnimationOptions = .CurveEaseOut; + if(animateFromCurrentState) { + animationOptions = [.BeginFromCurrentState, .CurveEaseOut] + } + let duration = _titleVisible ? titleFadeInDuration : titleFadeOutDuration + + UIView.animateWithDuration(duration, delay: 0, options: animationOptions, animations: { () -> Void in + updateBlock() + }, completion: nil) + } else { + updateBlock() + } + } + + // MARK: - UITextField text/placeholder positioning overrides + + /** + Calculate the rectangle for the textfield when it is not being edited + - parameter bounds: The current bounds of the field + - returns: The rectangle that the textfield should render in + */ + override public func textRectForBounds(bounds: CGRect) -> CGRect { + super.textRectForBounds(bounds) + let titleHeight = self.titleHeight() + let lineHeight = self.selectedLineHeight + let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight) + return rect + } + + /** + Calculate the rectangle for the textfield when it is being edited + - parameter bounds: The current bounds of the field + - returns: The rectangle that the textfield should render in + */ + override public func editingRectForBounds(bounds: CGRect) -> CGRect { + let titleHeight = self.titleHeight() + let lineHeight = self.selectedLineHeight + let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight) + return rect + } + + /** + Calculate the rectangle for the placeholder + - parameter bounds: The current bounds of the placeholder + - returns: The rectangle that the placeholder should render in + */ + override public func placeholderRectForBounds(bounds: CGRect) -> CGRect { + let titleHeight = self.titleHeight() + let lineHeight = self.selectedLineHeight + let rect = CGRectMake(0, titleHeight, bounds.size.width, bounds.size.height - titleHeight - lineHeight) + return rect + } + + // MARK: - Positioning Overrides + + /** + Calculate the bounds for the title label. Override to create a custom size title field. + - parameter bounds: The current bounds of the title + - parameter editing: True if the control is selected or highlighted + - returns: The rectangle that the title label should render in + */ + public func titleLabelRectForBounds(bounds:CGRect, editing:Bool) -> CGRect { + let titleHeight = self.titleHeight() + if editing { + return CGRectMake(0, 0, bounds.size.width, titleHeight) + } + return CGRectMake(0, titleHeight, bounds.size.width, titleHeight) + } + + /** + Calculate the bounds for the bottom line of the control. Override to create a custom size bottom line in the textbox. + - parameter bounds: The current bounds of the line + - parameter editing: True if the control is selected or highlighted + - returns: The rectangle that the line bar should render in + */ + public func lineViewRectForBounds(bounds:CGRect, editing:Bool) -> CGRect { + let lineHeight:CGFloat = editing ? CGFloat(self.selectedLineHeight) : CGFloat(self.lineHeight) + return CGRectMake(0, bounds.size.height - lineHeight, bounds.size.width, lineHeight); + } + + /** + Calculate the height of the title label. + -returns: the calculated height of the title label. Override to size the title with a different height + */ + public func titleHeight() -> CGFloat { + if let titleLabel = self.titleLabel, + font = titleLabel.font { + return font.lineHeight + } + return 15.0 + } + + /** + Calcualte the height of the textfield. + -returns: the calculated height of the textfield. Override to size the textfield with a different height + */ + public func textHeight() -> CGFloat { + return self.font!.lineHeight + 7.0 + } + + // MARK: - Layout + + /// Invoked when the interface builder renders the control + override public func prepareForInterfaceBuilder() { + super.prepareForInterfaceBuilder() + self.selected = true + _renderingInInterfaceBuilder = true + self.updateControl(false) + self.invalidateIntrinsicContentSize() + } + + /// Invoked by layoutIfNeeded automatically + override public func layoutSubviews() { + super.layoutSubviews() + + self.titleLabel.frame = self.titleLabelRectForBounds(self.bounds, editing: self.hasText() || _renderingInInterfaceBuilder) + self.lineView.frame = self.lineViewRectForBounds(self.bounds, editing: self.editingOrSelected || _renderingInInterfaceBuilder) + } + + /** + Calculate the content size for auto layout + + - returns: the content size to be used for auto layout + */ + override public func intrinsicContentSize() -> CGSize { + return CGSizeMake(self.bounds.size.width, self.titleHeight() + self.textHeight()) + } + + // MARK: - Helpers + + private func fadeOutHighlightedWithAnimated(animated: Bool) { + if(!self.hasText()) { + self.updateTitleColor() + _titleVisible = false + self.updateTitleVisibility(animated, animateFromCurrentState: true) + self.updateLineView() + } + } + + private func resetErrorMessageIfPresent() { + if self.hasErrorMessage && discardsErrorMessageOnTextChange { + self.errorMessage = nil + } + } + + private func titleOrPlaceholder() -> String? { + if let title = self.title ?? self.placeholder { + return self.titleFormatter(title) + } + return nil + } + + private func selectedTitleOrTitlePlaceholder() -> String? { + if let title = self.selectedTitle ?? self.title ?? self.placeholder { + return self.titleFormatter(title) + } + return nil + } +} \ No newline at end of file diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextFieldWithIcon.swift b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextFieldWithIcon.swift new file mode 100644 index 0000000..fd5cb41 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/SkyFloatingLabelTextFieldWithIcon.swift @@ -0,0 +1,179 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +import UIKit + +/** + A beautiful and flexible textfield implementation with support for icon, title label, error message and placeholder. + */ +public class SkyFloatingLabelTextFieldWithIcon: SkyFloatingLabelTextField { + + /// A UILabel value that identifies the label used to display the icon + public var iconLabel:UILabel! + + /// A UIFont value that determines the font that the icon is using + @IBInspectable + public var iconFont:UIFont? { + didSet { + self.iconLabel?.font = iconFont + } + } + + /// A String value that determines the text used when displaying the icon + @IBInspectable + public var iconText:String? { + didSet { + self.iconLabel?.text = iconText + } + } + + /// A UIColor value that determines the color of the icon in the normal state + @IBInspectable + public var iconColor:UIColor = UIColor.grayColor() { + didSet { + self.updateIconLabelColor() + } + } + + /// A UIColor value that determines the color of the icon when the control is selected + @IBInspectable + public var selectedIconColor:UIColor = UIColor.grayColor() { + didSet { + self.updateIconLabelColor() + } + } + + /// A float value that determines the width of the icon + @IBInspectable public var iconWidth:CGFloat = 20 { + didSet { + self.updateFrame() + } + } + + /// A float value that determines the left margin of the icon. Use this value to position the icon more precisely horizontally. + @IBInspectable public var iconMarginLeft:CGFloat = 4 { + didSet { + self.updateFrame() + } + } + + /// A float value that determines the bottom margin of the icon. Use this value to position the icon more precisely vertically. + @IBInspectable + public var iconMarginBottom:CGFloat = 4 { + didSet { + self.updateFrame() + } + } + + /// A float value that determines the rotation in degrees of the icon. Use this value to rotate the icon in either direction. + @IBInspectable + public var iconRotationDegrees:Double = 0 { + didSet { + self.iconLabel.transform = CGAffineTransformMakeRotation(CGFloat(iconRotationDegrees * M_PI / 180.0)) + } + } + + // MARK: Initializers + + /** + Initializes the control + - parameter frame the frame of the control + */ + override public init(frame: CGRect) { + super.init(frame: frame) + self.createIconLabel() + } + + /** + Intialzies the control by deserializing it + - parameter coder the object to deserialize the control from + */ + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.createIconLabel() + } + + // MARK: Creating the icon label + + /// Creates the icon label + private func createIconLabel() { + let iconLabel = UILabel() + iconLabel.backgroundColor = UIColor.clearColor() + iconLabel.textAlignment = .Center + iconLabel.autoresizingMask = [.FlexibleTopMargin, .FlexibleRightMargin] + self.iconLabel = iconLabel + self.addSubview(iconLabel) + + self.updateIconLabelColor() + } + + // MARK: Handling the icon color + + /// Update the colors for the control. Override to customize colors. + override public func updateColors() { + super.updateColors() + self.updateIconLabelColor() + } + + private func updateIconLabelColor() { + if self.hasErrorMessage { + self.iconLabel?.textColor = self.errorColor + } else { + self.iconLabel?.textColor = self.editingOrSelected ? self.selectedIconColor : self.iconColor + } + } + + // MARK: Custom layout overrides + + /** + Calculate the bounds for the textfield component of the control. Override to create a custom size textbox in the control. + - parameter bounds: The current bounds of the textfield component + - returns: The rectangle that the textfield component should render in + */ + override public func textRectForBounds(bounds: CGRect) -> CGRect { + var rect = super.textRectForBounds(bounds) + rect.origin.x += CGFloat(iconWidth + iconMarginLeft) + rect.size.width -= CGFloat(iconWidth + iconMarginLeft) + return rect + } + + /** + Calculate the rectangle for the textfield when it is being edited + - parameter bounds: The current bounds of the field + - returns: The rectangle that the textfield should render in + */ + override public func editingRectForBounds(bounds: CGRect) -> CGRect { + var rect = super.editingRectForBounds(bounds) + rect.origin.x += CGFloat(iconWidth + iconMarginLeft) + rect.size.width -= CGFloat(iconWidth + iconMarginLeft) + return rect + } + + /** + Calculates the bounds for the placeholder component of the control. Override to create a custom size textbox in the control. + - parameter bounds: The current bounds of the placeholder component + - returns: The rectangle that the placeholder component should render in + */ + override public func placeholderRectForBounds(bounds: CGRect) -> CGRect { + var rect = super.placeholderRectForBounds(bounds) + rect.origin.x += CGFloat(iconWidth + iconMarginLeft) + rect.size.width -= CGFloat(iconWidth + iconMarginLeft) + return rect + } + + /// Invoked by layoutIfNeeded automatically + override public func layoutSubviews() { + super.layoutSubviews() + self.updateFrame() + } + + private func updateFrame() { + let textHeight = self.textHeight() + self.iconLabel.frame = CGRectMake(0, self.bounds.size.height - textHeight - iconMarginBottom, iconWidth, textHeight) + } +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/UITextField+fixCaretPosition.swift b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/UITextField+fixCaretPosition.swift new file mode 100644 index 0000000..2265413 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/SkyFloatingLabelTextField/Sources/UITextField+fixCaretPosition.swift @@ -0,0 +1,24 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +// MARK: - UITextField extension + +import UIKit + +extension UITextField { + /// Moves the caret to the correct position by removing the trailing whitespace + func fixCaretPosition() { + // Moving the caret to the correct position by removing the trailing whitespace + // http://stackoverflow.com/questions/14220187/uitextfield-has-trailing-whitespace-after-securetextentry-toggle + + let beginning = self.beginningOfDocument + self.selectedTextRange = self.textRangeFromPosition(beginning, toPosition: beginning) + let end = self.endOfDocument + self.selectedTextRange = self.textRangeFromPosition(end, toPosition: end) + } +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist new file mode 100644 index 0000000..6974542 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown new file mode 100644 index 0000000..3eb21e6 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.markdown @@ -0,0 +1,177 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## SkyFloatingLabelTextField + +Apache License +============== + +_Version 2.0, January 2004_ +_<>_ + +### Terms and Conditions for use, reproduction, and distribution + +#### 1. Definitions + +“License” shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +“Licensor” shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +“Legal Entity” shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, “control” means **(i)** the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the +outstanding shares, or **(iii)** beneficial ownership of such entity. + +“You” (or “Your”) shall mean an individual or Legal Entity exercising +permissions granted by this License. + +“Source” form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +“Object” form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +“Work” shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +“Derivative Works” shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +“Contribution” shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +“submitted” means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as “Not a Contribution.” + +“Contributor” shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +#### 2. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +#### 3. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +#### 4. Redistribution + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* **(a)** You must give any other recipients of the Work or Derivative Works a copy of +this License; and +* **(b)** You must cause any modified files to carry prominent notices stating that You +changed the files; and +* **(c)** You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. + +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +#### 5. Submission of Contributions + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +#### 6. Trademarks + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +#### 7. Disclaimer of Warranty + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +#### 8. Limitation of Liability + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +#### 9. Accepting Warranty or Additional Liability + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +_END OF TERMS AND CONDITIONS_ + +Generated by CocoaPods - http://cocoapods.org diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist new file mode 100644 index 0000000..e61bdd3 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-acknowledgements.plist @@ -0,0 +1,207 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Apache License +============== + +_Version 2.0, January 2004_ +_&lt;<http://www.apache.org/licenses/>&gt;_ + +### Terms and Conditions for use, reproduction, and distribution + +#### 1. Definitions + +“License” shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +“Licensor” shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +“Legal Entity” shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, “control” means **(i)** the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the +outstanding shares, or **(iii)** beneficial ownership of such entity. + +“You” (or “Your”) shall mean an individual or Legal Entity exercising +permissions granted by this License. + +“Source” form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +“Object” form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +“Work” shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +“Derivative Works” shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +“Contribution” shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +“submitted” means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as “Not a Contribution.” + +“Contributor” shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +#### 2. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +#### 3. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +#### 4. Redistribution + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* **(a)** You must give any other recipients of the Work or Derivative Works a copy of +this License; and +* **(b)** You must cause any modified files to carry prominent notices stating that You +changed the files; and +* **(c)** You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. + +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +#### 5. Submission of Contributions + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +#### 6. Trademarks + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +#### 7. Disclaimer of Warranty + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +#### 8. Limitation of Liability + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +#### 9. Accepting Warranty or Additional Liability + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +_END OF TERMS AND CONDITIONS_ + + Title + SkyFloatingLabelTextField + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m new file mode 100644 index 0000000..9bb45e4 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SkyFloatingLabelTextFieldObjectiveCExample : NSObject +@end +@implementation PodsDummy_Pods_SkyFloatingLabelTextFieldObjectiveCExample +@end diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh new file mode 100755 index 0000000..c89675d --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh @@ -0,0 +1,91 @@ +#!/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() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${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\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && 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}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # 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" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "Pods-SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextField.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "Pods-SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextField.framework" +fi diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh new file mode 100755 index 0000000..16774fb --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh @@ -0,0 +1,95 @@ +#!/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=() + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +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) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +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 + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h new file mode 100644 index 0000000..421eb92 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_SkyFloatingLabelTextFieldObjectiveCExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_SkyFloatingLabelTextFieldObjectiveCExampleVersionString[]; + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig new file mode 100644 index 0000000..b707d61 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SkyFloatingLabelTextField.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SkyFloatingLabelTextFieldObjectiveCExample +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap new file mode 100644 index 0000000..2695872 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.modulemap @@ -0,0 +1,6 @@ +framework module Pods_SkyFloatingLabelTextFieldObjectiveCExample { + umbrella header "Pods-SkyFloatingLabelTextFieldObjectiveCExample-umbrella.h" + + export * + module * { export * } +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig new file mode 100644 index 0000000..b707d61 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SkyFloatingLabelTextField.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SkyFloatingLabelTextFieldObjectiveCExample +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/Info.plist b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/Info.plist new file mode 100644 index 0000000..6ee15c3 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-dummy.m b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-dummy.m new file mode 100644 index 0000000..b71c8f0 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_SkyFloatingLabelTextField : NSObject +@end +@implementation PodsDummy_SkyFloatingLabelTextField +@end diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch new file mode 100644 index 0000000..aa992a4 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ +#import +#endif + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-umbrella.h b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-umbrella.h new file mode 100644 index 0000000..956a1a1 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double SkyFloatingLabelTextFieldVersionNumber; +FOUNDATION_EXPORT const unsigned char SkyFloatingLabelTextFieldVersionString[]; + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap new file mode 100644 index 0000000..7ac9d97 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap @@ -0,0 +1,6 @@ +framework module SkyFloatingLabelTextField { + umbrella header "SkyFloatingLabelTextField-umbrella.h" + + export * + module * { export * } +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcconfig b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcconfig new file mode 100644 index 0000000..a8c8850 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcconfig @@ -0,0 +1,5 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SkyFloatingLabelTextField" "${PODS_ROOT}/Headers/Public" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.pbxproj b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8bedbe5 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.pbxproj @@ -0,0 +1,385 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9E814D8A7283C31AE59EB77B /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F41F65E6E2C22F39CC7FA1C7 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */; }; + F51E3BA61CB45A8300D4F0AB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F51E3BA51CB45A8300D4F0AB /* main.m */; }; + F51E3BA91CB45A8300D4F0AB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F51E3BA81CB45A8300D4F0AB /* AppDelegate.m */; }; + F51E3BAC1CB45A8300D4F0AB /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F51E3BAB1CB45A8300D4F0AB /* ViewController.m */; }; + F51E3BAF1CB45A8400D4F0AB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F51E3BAD1CB45A8300D4F0AB /* Main.storyboard */; }; + F51E3BB11CB45A8400D4F0AB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F51E3BB01CB45A8400D4F0AB /* Assets.xcassets */; }; + F51E3BB41CB45A8400D4F0AB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F51E3BB21CB45A8400D4F0AB /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 099DB98B438619A4F0A39278 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig"; sourceTree = ""; }; + 4F75A39684812153F43B64CF /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig"; sourceTree = ""; }; + F41F65E6E2C22F39CC7FA1C7 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F51E3BA11CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SkyFloatingLabelTextFieldObjectiveCExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F51E3BA51CB45A8300D4F0AB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + F51E3BA71CB45A8300D4F0AB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + F51E3BA81CB45A8300D4F0AB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + F51E3BAA1CB45A8300D4F0AB /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + F51E3BAB1CB45A8300D4F0AB /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + F51E3BAE1CB45A8400D4F0AB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + F51E3BB01CB45A8400D4F0AB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + F51E3BB31CB45A8400D4F0AB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + F51E3BB51CB45A8400D4F0AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + F51E3B9E1CB45A8300D4F0AB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E814D8A7283C31AE59EB77B /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2404076E5D487C3C515798C3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F41F65E6E2C22F39CC7FA1C7 /* Pods_SkyFloatingLabelTextFieldObjectiveCExample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A874A87BAAAFE16838F8939C /* Pods */ = { + isa = PBXGroup; + children = ( + 4F75A39684812153F43B64CF /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig */, + 099DB98B438619A4F0A39278 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + F51E3B981CB45A8300D4F0AB = { + isa = PBXGroup; + children = ( + F51E3BA31CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample */, + F51E3BA21CB45A8300D4F0AB /* Products */, + A874A87BAAAFE16838F8939C /* Pods */, + 2404076E5D487C3C515798C3 /* Frameworks */, + ); + sourceTree = ""; + }; + F51E3BA21CB45A8300D4F0AB /* Products */ = { + isa = PBXGroup; + children = ( + F51E3BA11CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample.app */, + ); + name = Products; + sourceTree = ""; + }; + F51E3BA31CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample */ = { + isa = PBXGroup; + children = ( + F51E3BA71CB45A8300D4F0AB /* AppDelegate.h */, + F51E3BA81CB45A8300D4F0AB /* AppDelegate.m */, + F51E3BAA1CB45A8300D4F0AB /* ViewController.h */, + F51E3BAB1CB45A8300D4F0AB /* ViewController.m */, + F51E3BAD1CB45A8300D4F0AB /* Main.storyboard */, + F51E3BB01CB45A8400D4F0AB /* Assets.xcassets */, + F51E3BB21CB45A8400D4F0AB /* LaunchScreen.storyboard */, + F51E3BB51CB45A8400D4F0AB /* Info.plist */, + F51E3BA41CB45A8300D4F0AB /* Supporting Files */, + ); + path = SkyFloatingLabelTextFieldObjectiveCExample; + sourceTree = ""; + }; + F51E3BA41CB45A8300D4F0AB /* Supporting Files */ = { + isa = PBXGroup; + children = ( + F51E3BA51CB45A8300D4F0AB /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F51E3BA01CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = F51E3BB81CB45A8400D4F0AB /* Build configuration list for PBXNativeTarget "SkyFloatingLabelTextFieldObjectiveCExample" */; + buildPhases = ( + 86CD9AB1916BF69E0E8F38A8 /* Check Pods Manifest.lock */, + F51E3B9D1CB45A8300D4F0AB /* Sources */, + F51E3B9E1CB45A8300D4F0AB /* Frameworks */, + F51E3B9F1CB45A8300D4F0AB /* Resources */, + EDE2A3472403BE04698EC4E8 /* Embed Pods Frameworks */, + AB0953914D627BB2B48446F5 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SkyFloatingLabelTextFieldObjectiveCExample; + productName = SkyFloatingLabelTextFieldObjectiveCExample; + productReference = F51E3BA11CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F51E3B991CB45A8300D4F0AB /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = Skyscanner; + TargetAttributes = { + F51E3BA01CB45A8300D4F0AB = { + CreatedOnToolsVersion = 7.2.1; + }; + }; + }; + buildConfigurationList = F51E3B9C1CB45A8300D4F0AB /* Build configuration list for PBXProject "SkyFloatingLabelTextFieldObjectiveCExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F51E3B981CB45A8300D4F0AB; + productRefGroup = F51E3BA21CB45A8300D4F0AB /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F51E3BA01CB45A8300D4F0AB /* SkyFloatingLabelTextFieldObjectiveCExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F51E3B9F1CB45A8300D4F0AB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F51E3BB41CB45A8400D4F0AB /* LaunchScreen.storyboard in Resources */, + F51E3BB11CB45A8400D4F0AB /* Assets.xcassets in Resources */, + F51E3BAF1CB45A8400D4F0AB /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 86CD9AB1916BF69E0E8F38A8 /* 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; + }; + AB0953914D627BB2B48446F5 /* 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-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + EDE2A3472403BE04698EC4E8 /* 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-SkyFloatingLabelTextFieldObjectiveCExample/Pods-SkyFloatingLabelTextFieldObjectiveCExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F51E3B9D1CB45A8300D4F0AB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F51E3BAC1CB45A8300D4F0AB /* ViewController.m in Sources */, + F51E3BA91CB45A8300D4F0AB /* AppDelegate.m in Sources */, + F51E3BA61CB45A8300D4F0AB /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + F51E3BAD1CB45A8300D4F0AB /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F51E3BAE1CB45A8400D4F0AB /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + F51E3BB21CB45A8400D4F0AB /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F51E3BB31CB45A8400D4F0AB /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + F51E3BB61CB45A8400D4F0AB /* 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; + 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 = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + F51E3BB71CB45A8400D4F0AB /* 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; + 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 = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + F51E3BB91CB45A8400D4F0AB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4F75A39684812153F43B64CF /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = SkyFloatingLabelTextFieldObjectiveCExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = net.skyscanner.SkyFloatingLabelTextFieldObjectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + F51E3BBA1CB45A8400D4F0AB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 099DB98B438619A4F0A39278 /* Pods-SkyFloatingLabelTextFieldObjectiveCExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = SkyFloatingLabelTextFieldObjectiveCExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = net.skyscanner.SkyFloatingLabelTextFieldObjectiveCExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F51E3B9C1CB45A8300D4F0AB /* Build configuration list for PBXProject "SkyFloatingLabelTextFieldObjectiveCExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F51E3BB61CB45A8400D4F0AB /* Debug */, + F51E3BB71CB45A8400D4F0AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F51E3BB81CB45A8400D4F0AB /* Build configuration list for PBXNativeTarget "SkyFloatingLabelTextFieldObjectiveCExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F51E3BB91CB45A8400D4F0AB /* Debug */, + F51E3BBA1CB45A8400D4F0AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F51E3B991CB45A8300D4F0AB /* Project object */; +} diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b02aa45 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcworkspace/contents.xcworkspacedata b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..6e46289 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.h b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.h new file mode 100644 index 0000000..686139c --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.h @@ -0,0 +1,19 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.m b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.m new file mode 100644 index 0000000..00f2aa2 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/AppDelegate.m @@ -0,0 +1,47 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // 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. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // 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. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // 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. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // 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. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/LaunchScreen.storyboard b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/Main.storyboard b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Base.lproj/Main.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Info.plist b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Info.plist new file mode 100644 index 0000000..6905cc6 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.h b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.h new file mode 100644 index 0000000..9644fd1 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.h @@ -0,0 +1,17 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + +#import + +@interface ViewController : UIViewController + + +@end + diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.m b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.m new file mode 100644 index 0000000..14af681 --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/ViewController.m @@ -0,0 +1,38 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + + + +#import "ViewController.h" +@import SkyFloatingLabelTextField; + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. + + SkyFloatingLabelTextField *textField = [[SkyFloatingLabelTextField alloc] initWithFrame:CGRectMake(20, 40, 200, 40)]; + textField.title = @"Email"; + textField.placeholder = @"Email address"; + + [self.view addSubview:textField]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/main.m b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/main.m new file mode 100644 index 0000000..09f076b --- /dev/null +++ b/SkyFloatingLabelTextFieldObjectiveCExample/SkyFloatingLabelTextFieldObjectiveCExample/main.m @@ -0,0 +1,18 @@ +// Copyright 2016 Skyscanner Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +}