Compare commits

..

4 Commits

Author SHA1 Message Date
David Livadaru 546020bec6 DemoProject
Update .gitignore file.
Update project to Swift 4.
2018-04-03 16:54:33 +03:00
Bogdan Todea 012d48508f origin/DemoProject
Slight modification to podfile so user can install straight away.
2017-11-10 11:29:13 +02:00
Bogdan Todea 451558a9fd DemoProject
Added Cartfile and podfile, minor project folders change.
2017-11-10 11:24:16 +02:00
Bogdan Todea 067f9417d5 DemoProject
Framework project removed.
2017-11-06 13:08:39 +02:00
35 changed files with 1246 additions and 980 deletions

2
.gitignore vendored
View File

@ -50,7 +50,7 @@ playground.xcworkspace
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Checkouts
Carthage/Build

View File

@ -1 +0,0 @@
4.0

View File

@ -0,0 +1,522 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
FFBF6CBA1E681DF6008B7F73 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBF6CB91E681DF6008B7F73 /* AppDelegate.swift */; };
FFBF6CBF1E681DF6008B7F73 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FFBF6CBD1E681DF6008B7F73 /* Main.storyboard */; };
FFBF6CC11E681DF6008B7F73 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FFBF6CC01E681DF6008B7F73 /* Assets.xcassets */; };
FFBF6CC41E681DF6008B7F73 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FFBF6CC21E681DF6008B7F73 /* LaunchScreen.storyboard */; };
FFBF6CCF1E681DF6008B7F73 /* HorizontalMenuDemoUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBF6CCE1E681DF6008B7F73 /* HorizontalMenuDemoUITests.swift */; };
FFF72D481E89401B0012A0C0 /* UIStoryboard+Initialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D431E89401B0012A0C0 /* UIStoryboard+Initialization.swift */; };
FFF72D491E89401B0012A0C0 /* MenuScreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D461E89401B0012A0C0 /* MenuScreenViewController.swift */; };
FFF72D4A1E89401B0012A0C0 /* MenuContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D471E89401B0012A0C0 /* MenuContainerViewController.swift */; };
FFF72D4D1E8946000012A0C0 /* UIColor+ApplicationColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D4C1E8946000012A0C0 /* UIColor+ApplicationColor.swift */; };
FFF72D501E89467F0012A0C0 /* UIFont+ApplicationFonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D4F1E89467F0012A0C0 /* UIFont+ApplicationFonts.swift */; };
FFF72D521E8946BF0012A0C0 /* DemoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF72D511E8946BF0012A0C0 /* DemoItem.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
FFBF6CCB1E681DF6008B7F73 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = FFBF6CAE1E681DF6008B7F73 /* Project object */;
proxyType = 1;
remoteGlobalIDString = FFBF6CB51E681DF6008B7F73;
remoteInfo = HorizontalMenuDemo;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
FFBF6CE91E681EF5008B7F73 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
FFBF6CB61E681DF6008B7F73 /* HorizontalMenuDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HorizontalMenuDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
FFBF6CB91E681DF6008B7F73 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
FFBF6CBE1E681DF6008B7F73 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
FFBF6CC01E681DF6008B7F73 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
FFBF6CC31E681DF6008B7F73 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
FFBF6CC51E681DF6008B7F73 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FFBF6CCA1E681DF6008B7F73 /* HorizontalMenuDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HorizontalMenuDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
FFBF6CCE1E681DF6008B7F73 /* HorizontalMenuDemoUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HorizontalMenuDemoUITests.swift; sourceTree = "<group>"; };
FFBF6CD01E681DF6008B7F73 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FFF72D431E89401B0012A0C0 /* UIStoryboard+Initialization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard+Initialization.swift"; sourceTree = "<group>"; };
FFF72D461E89401B0012A0C0 /* MenuScreenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuScreenViewController.swift; sourceTree = "<group>"; };
FFF72D471E89401B0012A0C0 /* MenuContainerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuContainerViewController.swift; sourceTree = "<group>"; };
FFF72D4C1E8946000012A0C0 /* UIColor+ApplicationColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+ApplicationColor.swift"; sourceTree = "<group>"; };
FFF72D4F1E89467F0012A0C0 /* UIFont+ApplicationFonts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIFont+ApplicationFonts.swift"; sourceTree = "<group>"; };
FFF72D511E8946BF0012A0C0 /* DemoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DemoItem.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
FFBF6CB31E681DF6008B7F73 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6CC71E681DF6008B7F73 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
FFBF6CAD1E681DF6008B7F73 = {
isa = PBXGroup;
children = (
FFBF6CB81E681DF6008B7F73 /* HorizontalMenuDemo */,
FFBF6CCD1E681DF6008B7F73 /* HorizontalMenuDemoUITests */,
FFBF6CB71E681DF6008B7F73 /* Products */,
);
sourceTree = "<group>";
};
FFBF6CB71E681DF6008B7F73 /* Products */ = {
isa = PBXGroup;
children = (
FFBF6CB61E681DF6008B7F73 /* HorizontalMenuDemo.app */,
FFBF6CCA1E681DF6008B7F73 /* HorizontalMenuDemoUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
FFBF6CB81E681DF6008B7F73 /* HorizontalMenuDemo */ = {
isa = PBXGroup;
children = (
FFF72D421E89401B0012A0C0 /* Extensions */,
FFF72D441E89401B0012A0C0 /* Model */,
FFF72D451E89401B0012A0C0 /* View Controllers */,
FFBF6CB91E681DF6008B7F73 /* AppDelegate.swift */,
FFBF6CBD1E681DF6008B7F73 /* Main.storyboard */,
FFBF6CC01E681DF6008B7F73 /* Assets.xcassets */,
FFBF6CC21E681DF6008B7F73 /* LaunchScreen.storyboard */,
FFBF6CC51E681DF6008B7F73 /* Info.plist */,
);
path = HorizontalMenuDemo;
sourceTree = "<group>";
};
FFBF6CCD1E681DF6008B7F73 /* HorizontalMenuDemoUITests */ = {
isa = PBXGroup;
children = (
FFBF6CCE1E681DF6008B7F73 /* HorizontalMenuDemoUITests.swift */,
FFBF6CD01E681DF6008B7F73 /* Info.plist */,
);
path = HorizontalMenuDemoUITests;
sourceTree = "<group>";
};
FFF72D421E89401B0012A0C0 /* Extensions */ = {
isa = PBXGroup;
children = (
FFF72D431E89401B0012A0C0 /* UIStoryboard+Initialization.swift */,
FFF72D4C1E8946000012A0C0 /* UIColor+ApplicationColor.swift */,
FFF72D4F1E89467F0012A0C0 /* UIFont+ApplicationFonts.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
FFF72D441E89401B0012A0C0 /* Model */ = {
isa = PBXGroup;
children = (
FFF72D511E8946BF0012A0C0 /* DemoItem.swift */,
);
path = Model;
sourceTree = "<group>";
};
FFF72D451E89401B0012A0C0 /* View Controllers */ = {
isa = PBXGroup;
children = (
FFF72D461E89401B0012A0C0 /* MenuScreenViewController.swift */,
FFF72D471E89401B0012A0C0 /* MenuContainerViewController.swift */,
);
path = "View Controllers";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
FFBF6CB51E681DF6008B7F73 /* HorizontalMenuDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = FFBF6CD31E681DF6008B7F73 /* Build configuration list for PBXNativeTarget "HorizontalMenuDemo" */;
buildPhases = (
FFBF6CB21E681DF6008B7F73 /* Sources */,
FFBF6CB31E681DF6008B7F73 /* Frameworks */,
FFBF6CB41E681DF6008B7F73 /* Resources */,
FFBF6CE91E681EF5008B7F73 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = HorizontalMenuDemo;
productName = HorizontalMenuDemo;
productReference = FFBF6CB61E681DF6008B7F73 /* HorizontalMenuDemo.app */;
productType = "com.apple.product-type.application";
};
FFBF6CC91E681DF6008B7F73 /* HorizontalMenuDemoUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = FFBF6CD61E681DF6008B7F73 /* Build configuration list for PBXNativeTarget "HorizontalMenuDemoUITests" */;
buildPhases = (
FFBF6CC61E681DF6008B7F73 /* Sources */,
FFBF6CC71E681DF6008B7F73 /* Frameworks */,
FFBF6CC81E681DF6008B7F73 /* Resources */,
);
buildRules = (
);
dependencies = (
FFBF6CCC1E681DF6008B7F73 /* PBXTargetDependency */,
);
name = HorizontalMenuDemoUITests;
productName = HorizontalMenuDemoUITests;
productReference = FFBF6CCA1E681DF6008B7F73 /* HorizontalMenuDemoUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
FFBF6CAE1E681DF6008B7F73 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0820;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "3Pillar Global";
TargetAttributes = {
FFBF6CB51E681DF6008B7F73 = {
CreatedOnToolsVersion = 8.2.1;
DevelopmentTeam = TMQ7PR2UWW;
LastSwiftMigration = 0910;
ProvisioningStyle = Automatic;
};
FFBF6CC91E681DF6008B7F73 = {
CreatedOnToolsVersion = 8.2.1;
LastSwiftMigration = 0910;
ProvisioningStyle = Automatic;
TestTargetID = FFBF6CB51E681DF6008B7F73;
};
};
};
buildConfigurationList = FFBF6CB11E681DF6008B7F73 /* Build configuration list for PBXProject "HorizontalMenuDemo" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = FFBF6CAD1E681DF6008B7F73;
productRefGroup = FFBF6CB71E681DF6008B7F73 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
FFBF6CB51E681DF6008B7F73 /* HorizontalMenuDemo */,
FFBF6CC91E681DF6008B7F73 /* HorizontalMenuDemoUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
FFBF6CB41E681DF6008B7F73 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FFBF6CC41E681DF6008B7F73 /* LaunchScreen.storyboard in Resources */,
FFBF6CC11E681DF6008B7F73 /* Assets.xcassets in Resources */,
FFBF6CBF1E681DF6008B7F73 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6CC81E681DF6008B7F73 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
FFBF6CB21E681DF6008B7F73 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FFF72D4D1E8946000012A0C0 /* UIColor+ApplicationColor.swift in Sources */,
FFF72D481E89401B0012A0C0 /* UIStoryboard+Initialization.swift in Sources */,
FFBF6CBA1E681DF6008B7F73 /* AppDelegate.swift in Sources */,
FFF72D4A1E89401B0012A0C0 /* MenuContainerViewController.swift in Sources */,
FFF72D521E8946BF0012A0C0 /* DemoItem.swift in Sources */,
FFF72D501E89467F0012A0C0 /* UIFont+ApplicationFonts.swift in Sources */,
FFF72D491E89401B0012A0C0 /* MenuScreenViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6CC61E681DF6008B7F73 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FFBF6CCF1E681DF6008B7F73 /* HorizontalMenuDemoUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
FFBF6CCC1E681DF6008B7F73 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = FFBF6CB51E681DF6008B7F73 /* HorizontalMenuDemo */;
targetProxy = FFBF6CCB1E681DF6008B7F73 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
FFBF6CBD1E681DF6008B7F73 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
FFBF6CBE1E681DF6008B7F73 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
FFBF6CC21E681DF6008B7F73 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
FFBF6CC31E681DF6008B7F73 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
FFBF6CD11E681DF6008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
FFBF6CD21E681DF6008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
FFBF6CD41E681DF6008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TMQ7PR2UWW;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/HorizontalMenuDemo",
);
INFOPLIST_FILE = HorizontalMenuDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.HorizontalMenuDemo";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
FFBF6CD51E681DF6008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = TMQ7PR2UWW;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/HorizontalMenuDemo",
);
INFOPLIST_FILE = HorizontalMenuDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.HorizontalMenuDemo";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
FFBF6CD71E681DF6008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
INFOPLIST_FILE = HorizontalMenuDemoUITests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.HorizontalMenuDemoUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TEST_TARGET_NAME = HorizontalMenuDemo;
};
name = Debug;
};
FFBF6CD81E681DF6008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
INFOPLIST_FILE = HorizontalMenuDemoUITests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.HorizontalMenuDemoUITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TEST_TARGET_NAME = HorizontalMenuDemo;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
FFBF6CB11E681DF6008B7F73 /* Build configuration list for PBXProject "HorizontalMenuDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CD11E681DF6008B7F73 /* Debug */,
FFBF6CD21E681DF6008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
FFBF6CD31E681DF6008B7F73 /* Build configuration list for PBXNativeTarget "HorizontalMenuDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CD41E681DF6008B7F73 /* Debug */,
FFBF6CD51E681DF6008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
FFBF6CD61E681DF6008B7F73 /* Build configuration list for PBXNativeTarget "HorizontalMenuDemoUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CD71E681DF6008B7F73 /* Debug */,
FFBF6CD81E681DF6008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = FFBF6CAE1E681DF6008B7F73 /* Project object */;
}

View File

@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "self:TPGHorizontalMenu.xcodeproj">
location = "self:HorizontalMenuDemo.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1,44 @@
//
// AppDelegate.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 02/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}

View File

@ -0,0 +1,93 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"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"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "swift.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VPX-Yu-l7b">
<rect key="frame" x="24" y="301" width="326" height="65"/>
<string key="text">Horizontal Menu
Demo project</string>
<fontDescription key="fontDescription" name="AmericanTypewriter" family="American Typewriter" pointSize="28"/>
<color key="textColor" red="0.7843137255" green="0.7843137255" blue="0.7843137255" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.090196078431372548" green="0.090196078431372548" blue="0.090196078431372548" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="VPX-Yu-l7b" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="Oss-UY-E5w"/>
<constraint firstItem="VPX-Yu-l7b" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" constant="24" id="YFa-DE-4Hh"/>
<constraint firstItem="VPX-Yu-l7b" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="h04-QX-PRo"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="220" y="229"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="VVy-lN-G0E">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Menu Container View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController storyboardIdentifier="MenuContainerViewController" automaticallyAdjustsScrollViewInsets="NO" id="BYZ-38-t0r" customClass="MenuContainerViewController" customModule="HorizontalMenuDemo" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="64" width="375" height="603"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
<navigationItem key="navigationItem" id="npd-4x-eRm"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="145" y="90"/>
</scene>
<!--Menu Screen View Controller-->
<scene sceneID="oia-rO-e7m">
<objects>
<viewController storyboardIdentifier="MenuScreenViewController" id="hmE-RT-R0Z" customClass="MenuScreenViewController" customModule="HorizontalMenuDemo" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="gd7-4y-6TO"/>
<viewControllerLayoutGuide type="bottom" id="A24-9X-z5m"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="9IF-LK-hgw">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nDP-rF-fHV">
<rect key="frame" x="166.5" y="323" width="42" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="nDP-rF-fHV" firstAttribute="centerX" secondItem="9IF-LK-hgw" secondAttribute="centerX" id="WqQ-SB-qkO"/>
<constraint firstItem="nDP-rF-fHV" firstAttribute="centerY" secondItem="9IF-LK-hgw" secondAttribute="centerY" id="kFb-AC-dqy"/>
</constraints>
</view>
<connections>
<outlet property="textLabel" destination="nDP-rF-fHV" id="nAp-6E-hA2"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="lG4-yV-KGM" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="950" y="90"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="ejN-Pk-0xB">
<objects>
<navigationController id="VVy-lN-G0E" sceneMemberID="viewController">
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" barStyle="black" translucent="NO" prompted="NO"/>
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" translucent="NO" id="orz-TN-h1b">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="leF-kB-hoL">
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</toolbar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="IW0-5Q-VfP"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="gek-xD-HQG" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-694" y="90"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,31 @@
//
// UIColor+ApplicationColor.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 27/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
extension UIColor {
static func menuBackgroundColor() -> UIColor {
return UIColor(red: 23.0 / 255.0, green: 23.0 / 255.0, blue: 23.0 / 255.0, alpha: 1.0)
}
static func menuItemBackgroundColor() -> UIColor {
return UIColor(red: 39.0 / 255.0, green: 39.0 / 255.0, blue: 39.0 / 255.0, alpha: 1.0)
}
static func menuItemTextColor() -> UIColor {
return UIColor(red: 200.0 / 255.0, green: 200.0 / 255.0, blue: 200.0 / 255.0, alpha: 1.0)
}
static func menuItemBorderColor() -> UIColor {
return UIColor(red: 80.0 / 255.0, green: 80.0 / 255.0, blue: 80.0 / 255.0, alpha: 1.0)
}
static func menuIndicatorColor() -> UIColor {
return UIColor.magenta
}
}

View File

@ -0,0 +1,27 @@
//
// UIFont+ApplicationFonts.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 27/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
extension UIFont {
static func titleItemFont() -> UIFont? {
return UIFont(name: "American Typewriter", size: 22.0)
}
static func menuItemFont() -> UIFont? {
return UIFont(name: "AmericanTypewriter", size: 18.0)
}
static func menuItemFontHighlighted() -> UIFont? {
return UIFont(name: "AmericanTypewriter-Light", size: 18.0)
}
static func menuItemFontSelected() -> UIFont? {
return UIFont(name: "AmericanTypewriter-Bold", size: 18.0)
}
}

View File

@ -0,0 +1,16 @@
//
// UIStoryboard+Initialization.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 14/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
extension UIStoryboard {
static func loadMainStoryboardVC<T: UIViewController>() -> T {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
return storyboard.instantiateViewController(withIdentifier: String(describing: T.self)) as! T
}
}

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>Fabric</key>
<dict>
<key>APIKey</key>
<string>b4ac1b762a095cfee63f1a4082a20084248675bf</string>
<key>Kits</key>
<array>
<dict>
<key>KitInfo</key>
<dict/>
<key>KitName</key>
<string>Crashlytics</string>
</dict>
</array>
</dict>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,15 @@
//
// DemoItem.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 27/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import Foundation
import TPGHorizontalMenu
struct DemoItem {
let text: String
let color: FinalColor
}

View File

@ -0,0 +1,133 @@
//
// MenuContainerViewController.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 02/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
import TPGHorizontalMenu
class MenuContainerViewController: UIViewController, LayoutControllerDelegate {
private var menuViewController: HorizontalMenuViewController!
fileprivate let items: [DemoItem] = [DemoItem(text: " Privacy ", color: FinalColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
DemoItem(text: " Background refresh ", color: FinalColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)),
DemoItem(text: " Mail ", color: FinalColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)),
DemoItem(text: " Display brightness ", color: FinalColor(red: 1.0, green: 1.0, blue: 0.0, alpha: 1.0)),
DemoItem(text: " Localization ", color: FinalColor(red: 0.0, green: 1.0, blue: 1.0, alpha: 1.0)),
DemoItem(text: " Settings ", color: FinalColor(red: 1.0, green: 0.0, blue: 1.0, alpha: 1.0)),
DemoItem(text: " Apple and iTunes Store ", color: FinalColor(red: 0.723, green: 0.45, blue: 0.15, alpha: 1.0))]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Horizontal menu demo"
let shadowImage = UIImage()
navigationController?.navigationBar.shadowImage = shadowImage
navigationController?.navigationBar.setBackgroundImage(shadowImage, for: .default)
navigationController?.navigationBar.barTintColor = UIColor.menuItemBackgroundColor()
if let titleFont = UIFont.titleItemFont() {
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font : titleFont,
NSAttributedStringKey.foregroundColor : UIColor.menuItemTextColor()]
}
menuViewController = HorizontalMenuViewController()
menuViewController.willMove(toParentViewController: self)
menuViewController.view.frame = view.bounds
menuViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
menuViewController.view.backgroundColor = UIColor.menuBackgroundColor()
view.addSubview(menuViewController.view)
addChildViewController(menuViewController)
menuViewController.dataSource = self
menuViewController.layoutDelegate = self
}
// MARK: LayoutControllerDelegate
func layoutControllerMenuGeometry(layoutController: LayoutController) -> MenuGeometry {
let scrollIndicatorGeometry = ScrollIndicatorGeometry(height: 2, verticalAlignment: .bottom)
return MenuGeometry(itemsInset: UIEdgeInsets(top: 4.0, left: 4.0, bottom: 4.0, right: 4.0),
itemSpacing: 4, prefferedHeight: 0,
scrollIndicatorGeometry: scrollIndicatorGeometry)
}
func layoutController(layoutController: LayoutController, geometryForItemAt index: Int) -> ItemGeometry {
let view = menuViewController.items[index].view
let button = view as? UIButton
let selectState = button?.isSelected
button?.isSelected = true
let geometry = ViewGeometry(view: view)
button?.isSelected = selectState ?? false
return geometry
}
}
// MARK: - HorizontalMenuViewControllerDataSource
extension MenuContainerViewController: HorizontalMenuViewControllerDataSource {
func horizontalMenuViewControllerNumberOfElements(horizontalMenuViewController: HorizontalMenuViewController) -> Int {
return items.count
}
func horizontalMenuViewController(horizontalMenuViewController: HorizontalMenuViewController,
menuItemFor index: Int) -> MenuItem {
let menuView = UIButton()
menuView.backgroundColor = UIColor.menuItemBackgroundColor()
menuView.layer.cornerRadius = 1
menuView.clipsToBounds = true
menuView.layer.borderColor = UIColor.menuItemBorderColor().cgColor
menuView.layer.borderWidth = 1
let item = items[index]
let text = item.text
if let font = UIFont.menuItemFont() {
let attributes = [NSAttributedStringKey.font : font,
NSAttributedStringKey.foregroundColor : UIColor.menuItemTextColor()]
let attributedText = NSAttributedString(string: text, attributes: attributes)
menuView.setAttributedTitle(attributedText, for: .normal)
}
if let font = UIFont.menuItemFontHighlighted() {
let attributes = [NSAttributedStringKey.font : font,
NSAttributedStringKey.foregroundColor : UIColor.menuItemTextColor().withAlphaComponent(0.5)]
let attributedText = NSAttributedString(string: text, attributes: attributes)
menuView.setAttributedTitle(attributedText, for: .highlighted)
}
if let font = UIFont.menuItemFontSelected() {
let attributes = [NSAttributedStringKey.font : font,
NSAttributedStringKey.foregroundColor : UIColor.menuItemTextColor()]
let attributedText = NSAttributedString(string: text, attributes: attributes)
menuView.setAttributedTitle(attributedText, for: .selected)
}
let menuItem = MenuItem(view: menuView, indicatorColor: item.color)
return menuItem
}
func horizontalMenuViewController(horizontalMenuViewController: HorizontalMenuViewController,
viewControllerFor index: Int) -> UIViewController {
let screen: MenuScreenViewController = UIStoryboard.loadMainStoryboardVC()
let white = CGFloat(index + 1) / CGFloat(horizontalMenuViewController.numberOfElements)
screen.view.backgroundColor = UIColor(white: white, alpha: 1.0)
let item = items[index]
let text = item.text
screen.textLabel.text = "Screen for\(text)"
screen.textLabel.textColor = item.color
return screen
}
func horizontalMenuViewControllerScrollIndicatorView(horizontalMenuViewController: HorizontalMenuViewController) -> UIView {
let view = UIView()
view.backgroundColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
return view
}
}

View File

@ -0,0 +1,54 @@
//
// MenuScreenViewController.swift
// HorizontalMenuDemo
//
// Created by David Livadaru on 14/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import UIKit
import TPGHorizontalMenu
class MenuScreenViewController: UIViewController, HorizontalMenuChild {
@IBOutlet weak var textLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("\(#function) - text: '\(textLabel.text ?? "unknown")'")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("\(#function) - text: '\(textLabel.text ?? "unknown")'")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("\(#function) - text: '\(textLabel.text ?? "unknown")'")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("\(#function) - text: '\(textLabel.text ?? "unknown")'")
}
// MARK: HorizontalMenuChild
func appearanceProgress(progress: CGFloat) {
print("\(#function) (\(progress))- text: '\(textLabel.text ?? "unknown")'")
}
func disappearanceProgress(progress: CGFloat) {
print("\(#function) (\(progress))- text: '\(textLabel.text ?? "unknown")'")
}
}

View File

@ -0,0 +1,36 @@
//
// HorizontalMenuDemoUITests.swift
// HorizontalMenuDemoUITests
//
// Created by David Livadaru on 02/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import XCTest
class HorizontalMenuDemoUITests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
XCUIApplication().launch()
// In UI tests its important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
}

3
Package.swift Normal file
View File

@ -0,0 +1,3 @@
import PackageDescription
let package = Package(name: "TPGHorizontalMenu")

6
Podfile Normal file
View File

@ -0,0 +1,6 @@
platform :ios, '10.0'
target 'HorizontalMenuDemo' do
use_frameworks!
pod 'TPGHorizontalMenu'
end

114
README.md
View File

@ -6,7 +6,7 @@
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![CocoaPods compatible](https://img.shields.io/badge/CocoaPods-compatible-4BC51D.svg?style=flat)](https://github.com/CocoaPods/CocoaPods)
[![Swift 4.0](https://img.shields.io/badge/Swift_4.0-compatible-orange.svg?style=flat)](https://swift.org)
[![Swift 3.0](https://img.shields.io/badge/Swift_3.0-compatible-orange.svg?style=flat)](https://swift.org)
@ -30,80 +30,17 @@ It's a UI component similar to UIPageViewController that helps you to create a m
## Table of contents
- [Installation](https://github.com/3pillarlabs/ios-horizontalmenu#installation)
- [CocoaPods](https://github.com/3pillarlabs/ios-horizontalmenu#3-cocoapods)
- [Carthage](https://github.com/3pillarlabs/ios-horizontalmenu#2-carthage)
- [Usage](https://github.com/3pillarlabs/ios-horizontalmenu#usage)
- [Installation](https://github.com/3pillarlabs/ios-horizontalmenu#installation)
- [Git Submodule](https://github.com/3pillarlabs/ios-horizontalmenu#1-git-submodule)
- [Carthage](https://github.com/3pillarlabs/ios-horizontalmenu#2-carthage)
- [CocoaPods](https://github.com/3pillarlabs/ios-horizontalmenu#3-cocoapods)
- [Tips](https://github.com/3pillarlabs/ios-horizontalmenu#tips)
- [Contribution](https://github.com/3pillarlabs/ios-horizontalmenu#contribution)
- [License](https://github.com/3pillarlabs/ios-horizontalmenu#license)
## Installation
Available in iOS 10.0 and later.
CocoaPods Installation
- Run Terminal
- Navigate to project folder
- Use command:
```
pod init
```
- Add code to podfile
```
platform :ios, '10.0'
target 'YourProjectName' do
use_frameworks!
pod 'TPGHorizontalMenu'
end
```
- Run command:
```
pod install
```
Remember to open project using workspace
Carthage Installation
- Run Terminal
- Navigate to project folder
- Use command in terminal:
```
touch cartfile
```
- Add code to Cartfile:
```
github "3pillarlabs/ios-horizontalmenu"
```
- Run carthage by using command:
```
carthage update
```
- In order to link your app with the framework, you have to add the TPGHorizontalMenu in 'Embedded Binaries' list from 'General' section on application's target from Carthage/Build/iOS in project folder.
![Add subproject example](assets/embed-binary-example.gif)
## Usage
A sample project is available on [demo brach](https://github.com/3pillarlabs/ios-horizontalmenu/tree/DemoProject).
How to use the framework:
- Import the framework
@ -172,6 +109,43 @@ func horizontalMenuViewController(horizontalMenuViewController: HorizontalMenuVi
and now you have the menu visible in your application.
## Installation
Available in iOS 9.0 and later.
Choose your preffered dependency manager:
### 1. [Git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
```
git submodule add https://github.com/3pillarlabs/ios-horizontalmenu.git
```
After fetch, choose the commit which is tagged with the version you want to point to. Then you have to [add](https://github.com/3pillarlabs/ios-horizontalmenu#subproject-dependency) and [link](https://github.com/3pillarlabs/ios-horizontalmenu#linkage) the framework.
### 2. [Carthage](https://github.com/Carthage/Carthage)
```
github "3pillarlabs/ios-horizontalmenu" ~> 1.0
```
### 3. [CocoaPods](https://github.com/CocoaPods/CocoaPods)
```
Comming soon.
```
### Subproject dependency
If you're using submodules or Swift Package Manager, we encourage you the add the framework as a subproject in your workspace/project
![Embed binary example](assets/add-subproject-example.gif)
### Linkage
In order to link your app with the framework, you have to add the TPGHorizontalMenu in 'Embedded Binaries' list from 'General' section on application's target.
![Add subproject example](assets/embed-binary-example.gif)
## Tips
@ -400,8 +374,6 @@ If really you need callbacks, you may use CADisplayLink to provide callbacks for
An important thing to know is that default animations have a duration of 0.3 seconds.
Also if you feel the need for a small demo please check the demo project branch, add the framework and you are good to go.
## Contribution
Did you find a bug in the framework? Create an [issue](https://github.com/3pillarlabs/ios-horizontalmenu/issues).
@ -416,4 +388,4 @@ Want to help us implement new features or fix bugs? Create a [pull request](http
[![3Pillar Global](https://www.3pillarglobal.com/wp-content/themes/base/library/images/logo_3pg.png)](http://www.3pillarglobal.com/)
**Horizontal Menu** is developed and maintained by [3Pillar Global](http://www.3pillarglobal.com/).
**Horizontal Menu** is developed and maintained by [3Pillar Global](http://www.3pillarglobal.com/).

View File

@ -1,13 +0,0 @@
Pod::Spec.new do |s|
s.name = "TPGHorizontalMenu"
s.version = "1.1.4"
s.summary = "Horizontal menu navigation."
s.description = "Framework done to improve user experience when navigation through screens."
s.homepage = "https://github.com/3pillarlabs/ios-horizontalmenu"
s.license = "MIT (example)"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = "3Pillar Global"
s.platform = :ios, "10.0"
s.source = { :git => "https://github.com/3pillarlabs/ios-horizontalmenu.git", :tag => "#{s.version}" }
s.source_files = "Sources", "Sources/**/*.{h,m, swift}"
end

View File

@ -1 +0,0 @@
4.0.2.swift.version

View File

@ -1,686 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
54D3E43A1E7156D70073227E /* GeometryHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54D3E4391E7156D70073227E /* GeometryHolder.swift */; };
54F29C8C1E71827B00BDCBA8 /* AppearanceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F29C8B1E71827B00BDCBA8 /* AppearanceController.swift */; };
54F29C931E719F9600BDCBA8 /* UIScrollView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54F29C921E719F9600BDCBA8 /* UIScrollView+Extension.swift */; };
FF03CCA01E7035A500E056DD /* HorizontalMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF03CC9F1E7035A500E056DD /* HorizontalMenuViewController.swift */; };
FF03CCA21E7040A000E056DD /* ViewGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF03CCA11E7040A000E056DD /* ViewGeometry.swift */; };
FF08F7751E72F0C10060C80A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF08F7741E72F0C10060C80A /* Animation.swift */; };
FF85CD431E77E5B900845D4C /* Array+IndexValidation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF85CD421E77E5B900845D4C /* Array+IndexValidation.swift */; };
FF85CD461E78148C00845D4C /* Highlightable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF85CD451E78148C00845D4C /* Highlightable.swift */; };
FF85CD481E78154800845D4C /* Selectable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF85CD471E78154800845D4C /* Selectable.swift */; };
FF85CD4C1E7819B000845D4C /* SelectGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF85CD4B1E7819B000845D4C /* SelectGestureRecognizer.swift */; };
FFB6EFC51E6EB8BE005087BA /* BasicArithmetic.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFC21E6EB8BE005087BA /* BasicArithmetic.swift */; };
FFB6EFC61E6EB8BE005087BA /* CGRect+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFC31E6EB8BE005087BA /* CGRect+Geometry.swift */; };
FFB6EFC71E6EB8BE005087BA /* Segment.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFC41E6EB8BE005087BA /* Segment.swift */; };
FFB6EFCF1E6EB8ED005087BA /* MenuDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFCA1E6EB8ED005087BA /* MenuDataSource.swift */; };
FFB6EFD01E6EB8ED005087BA /* PaginationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFCB1E6EB8ED005087BA /* PaginationController.swift */; };
FFB6EFD11E6EB8ED005087BA /* ScrollTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFCC1E6EB8ED005087BA /* ScrollTransition.swift */; };
FFB6EFD21E6EB8ED005087BA /* SelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFCD1E6EB8ED005087BA /* SelectionController.swift */; };
FFB6EFD31E6EB8ED005087BA /* HorizontalMenuChild.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFCE1E6EB8ED005087BA /* HorizontalMenuChild.swift */; };
FFB6EFD51E6EB907005087BA /* CGPoint+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFD41E6EB907005087BA /* CGPoint+Geometry.swift */; };
FFB6EFDB1E6ED469005087BA /* LayoutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFDA1E6ED469005087BA /* LayoutController.swift */; };
FFB6EFE11E6EDFF9005087BA /* CGSize+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFE01E6EDFF9005087BA /* CGSize+Geometry.swift */; };
FFB6EFE31E6EEC67005087BA /* UIEdgeInsets+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFE21E6EEC67005087BA /* UIEdgeInsets+Geometry.swift */; };
FFB6EFE51E6EF1C0005087BA /* ItemGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFE41E6EF1C0005087BA /* ItemGeometry.swift */; };
FFB6EFE71E6EF1D7005087BA /* MenuGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFE61E6EF1D7005087BA /* MenuGeometry.swift */; };
FFB6EFE91E6EFA2E005087BA /* ScrollIndicatorGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFE81E6EFA2E005087BA /* ScrollIndicatorGeometry.swift */; };
FFB6EFEB1E6EFDD4005087BA /* ProgressPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFEA1E6EFDD4005087BA /* ProgressPoint.swift */; };
FFB6EFED1E6F01CE005087BA /* CGFloat+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFB6EFEC1E6F01CE005087BA /* CGFloat+Geometry.swift */; };
FFBA3F9A1E79417500B130D1 /* ContainerLifeCycleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3F991E79417500B130D1 /* ContainerLifeCycleController.swift */; };
FFBA3F9E1E7943B200B130D1 /* ViewControllerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3F9D1E7943B200B130D1 /* ViewControllerState.swift */; };
FFBA3FA01E79447100B130D1 /* ViewDidLoadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3F9F1E79447100B130D1 /* ViewDidLoadState.swift */; };
FFBA3FA21E7944B600B130D1 /* ViewWillAppearState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FA11E7944B600B130D1 /* ViewWillAppearState.swift */; };
FFBA3FA41E7944FD00B130D1 /* AppearanceProgressState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FA31E7944FD00B130D1 /* AppearanceProgressState.swift */; };
FFBA3FA61E79450E00B130D1 /* ViewDidAppearState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FA51E79450E00B130D1 /* ViewDidAppearState.swift */; };
FFBA3FA81E79452500B130D1 /* ViewWillDisappearState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FA71E79452500B130D1 /* ViewWillDisappearState.swift */; };
FFBA3FAA1E79453600B130D1 /* DisappearanceProgressState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FA91E79453600B130D1 /* DisappearanceProgressState.swift */; };
FFBA3FAC1E79454700B130D1 /* ViewDidDisappearState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBA3FAB1E79454700B130D1 /* ViewDidDisappearState.swift */; };
FFBF6C9D1E681D7D008B7F73 /* TPGHorizontalMenu.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFBF6C931E681D7D008B7F73 /* TPGHorizontalMenu.framework */; };
FFBF6CA21E681D7D008B7F73 /* TPGHorizontalMenuTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFBF6CA11E681D7D008B7F73 /* TPGHorizontalMenuTests.swift */; };
FFBF6CA41E681D7D008B7F73 /* TPGHorizontalMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = FFBF6C961E681D7D008B7F73 /* TPGHorizontalMenu.h */; settings = {ATTRIBUTES = (Public, ); }; };
FFD195B21E826A40007163A3 /* AnimationDynamics.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD195B11E826A40007163A3 /* AnimationDynamics.swift */; };
FFD39E251E7BEDF6003C52D6 /* ContainerLoaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD39E241E7BEDF6003C52D6 /* ContainerLoaderController.swift */; };
FFD39E2A1E7BF2D4003C52D6 /* MenuItemSelectionOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD39E291E7BF2D4003C52D6 /* MenuItemSelectionOperation.swift */; };
FFD39E2C1E7C2BE9003C52D6 /* UIControlState+Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD39E2B1E7C2BE9003C52D6 /* UIControlState+Hashable.swift */; };
FFD69F011E715AC60099C17E /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD69F001E715AC60099C17E /* MenuItem.swift */; };
FFD69F041E719FC40099C17E /* UIColor+Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD69F031E719FC40099C17E /* UIColor+Geometry.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
FFBF6C9E1E681D7D008B7F73 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = FFBF6C8A1E681D7D008B7F73 /* Project object */;
proxyType = 1;
remoteGlobalIDString = FFBF6C921E681D7D008B7F73;
remoteInfo = TPGHorizontalMenu;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
54D3E4391E7156D70073227E /* GeometryHolder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeometryHolder.swift; sourceTree = "<group>"; };
54F29C8B1E71827B00BDCBA8 /* AppearanceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearanceController.swift; sourceTree = "<group>"; };
54F29C921E719F9600BDCBA8 /* UIScrollView+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIScrollView+Extension.swift"; sourceTree = "<group>"; };
FF03CC9F1E7035A500E056DD /* HorizontalMenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalMenuViewController.swift; sourceTree = "<group>"; };
FF03CCA11E7040A000E056DD /* ViewGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewGeometry.swift; sourceTree = "<group>"; };
FF08F7741E72F0C10060C80A /* Animation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Animation.swift; sourceTree = "<group>"; };
FF85CD421E77E5B900845D4C /* Array+IndexValidation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+IndexValidation.swift"; sourceTree = "<group>"; };
FF85CD451E78148C00845D4C /* Highlightable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Highlightable.swift; sourceTree = "<group>"; };
FF85CD471E78154800845D4C /* Selectable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Selectable.swift; sourceTree = "<group>"; };
FF85CD4B1E7819B000845D4C /* SelectGestureRecognizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectGestureRecognizer.swift; sourceTree = "<group>"; };
FFB6EFC21E6EB8BE005087BA /* BasicArithmetic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicArithmetic.swift; sourceTree = "<group>"; };
FFB6EFC31E6EB8BE005087BA /* CGRect+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGRect+Geometry.swift"; sourceTree = "<group>"; };
FFB6EFC41E6EB8BE005087BA /* Segment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Segment.swift; sourceTree = "<group>"; };
FFB6EFCA1E6EB8ED005087BA /* MenuDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuDataSource.swift; sourceTree = "<group>"; };
FFB6EFCB1E6EB8ED005087BA /* PaginationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaginationController.swift; sourceTree = "<group>"; };
FFB6EFCC1E6EB8ED005087BA /* ScrollTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScrollTransition.swift; sourceTree = "<group>"; };
FFB6EFCD1E6EB8ED005087BA /* SelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectionController.swift; sourceTree = "<group>"; };
FFB6EFCE1E6EB8ED005087BA /* HorizontalMenuChild.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalMenuChild.swift; sourceTree = "<group>"; };
FFB6EFD41E6EB907005087BA /* CGPoint+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGPoint+Geometry.swift"; sourceTree = "<group>"; };
FFB6EFDA1E6ED469005087BA /* LayoutController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutController.swift; sourceTree = "<group>"; };
FFB6EFE01E6EDFF9005087BA /* CGSize+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGSize+Geometry.swift"; sourceTree = "<group>"; };
FFB6EFE21E6EEC67005087BA /* UIEdgeInsets+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIEdgeInsets+Geometry.swift"; sourceTree = "<group>"; };
FFB6EFE41E6EF1C0005087BA /* ItemGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemGeometry.swift; sourceTree = "<group>"; };
FFB6EFE61E6EF1D7005087BA /* MenuGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuGeometry.swift; sourceTree = "<group>"; };
FFB6EFE81E6EFA2E005087BA /* ScrollIndicatorGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScrollIndicatorGeometry.swift; sourceTree = "<group>"; };
FFB6EFEA1E6EFDD4005087BA /* ProgressPoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgressPoint.swift; sourceTree = "<group>"; };
FFB6EFEC1E6F01CE005087BA /* CGFloat+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGFloat+Geometry.swift"; sourceTree = "<group>"; };
FFBA3F991E79417500B130D1 /* ContainerLifeCycleController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContainerLifeCycleController.swift; sourceTree = "<group>"; };
FFBA3F9D1E7943B200B130D1 /* ViewControllerState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewControllerState.swift; sourceTree = "<group>"; };
FFBA3F9F1E79447100B130D1 /* ViewDidLoadState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDidLoadState.swift; sourceTree = "<group>"; };
FFBA3FA11E7944B600B130D1 /* ViewWillAppearState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewWillAppearState.swift; sourceTree = "<group>"; };
FFBA3FA31E7944FD00B130D1 /* AppearanceProgressState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearanceProgressState.swift; sourceTree = "<group>"; };
FFBA3FA51E79450E00B130D1 /* ViewDidAppearState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDidAppearState.swift; sourceTree = "<group>"; };
FFBA3FA71E79452500B130D1 /* ViewWillDisappearState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewWillDisappearState.swift; sourceTree = "<group>"; };
FFBA3FA91E79453600B130D1 /* DisappearanceProgressState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisappearanceProgressState.swift; sourceTree = "<group>"; };
FFBA3FAB1E79454700B130D1 /* ViewDidDisappearState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDidDisappearState.swift; sourceTree = "<group>"; };
FFBF6C931E681D7D008B7F73 /* TPGHorizontalMenu.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TPGHorizontalMenu.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FFBF6C961E681D7D008B7F73 /* TPGHorizontalMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TPGHorizontalMenu.h; sourceTree = "<group>"; };
FFBF6C971E681D7D008B7F73 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FFBF6C9C1E681D7D008B7F73 /* TPGHorizontalMenuTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TPGHorizontalMenuTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
FFBF6CA11E681D7D008B7F73 /* TPGHorizontalMenuTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TPGHorizontalMenuTests.swift; sourceTree = "<group>"; };
FFBF6CA31E681D7D008B7F73 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
FFD195B11E826A40007163A3 /* AnimationDynamics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimationDynamics.swift; sourceTree = "<group>"; };
FFD39E241E7BEDF6003C52D6 /* ContainerLoaderController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContainerLoaderController.swift; sourceTree = "<group>"; };
FFD39E291E7BF2D4003C52D6 /* MenuItemSelectionOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuItemSelectionOperation.swift; sourceTree = "<group>"; };
FFD39E2B1E7C2BE9003C52D6 /* UIControlState+Hashable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIControlState+Hashable.swift"; sourceTree = "<group>"; };
FFD69F001E715AC60099C17E /* MenuItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuItem.swift; sourceTree = "<group>"; };
FFD69F031E719FC40099C17E /* UIColor+Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Geometry.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
FFBF6C8F1E681D7D008B7F73 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6C991E681D7D008B7F73 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
FFBF6C9D1E681D7D008B7F73 /* TPGHorizontalMenu.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
FF85CD441E78147000845D4C /* Protocols */ = {
isa = PBXGroup;
children = (
FF85CD451E78148C00845D4C /* Highlightable.swift */,
FFB6EFCE1E6EB8ED005087BA /* HorizontalMenuChild.swift */,
54D3E4391E7156D70073227E /* GeometryHolder.swift */,
FFB6EFCA1E6EB8ED005087BA /* MenuDataSource.swift */,
FF85CD471E78154800845D4C /* Selectable.swift */,
);
name = Protocols;
path = ../../Sources;
sourceTree = "<group>";
};
FFB6EFBE1E6EB7AE005087BA /* Menu */ = {
isa = PBXGroup;
children = (
FFBA3F9C1E7942B400B130D1 /* Life Cycle States */,
FFBFFC411E84068C00305693 /* Controllers */,
FF03CC9F1E7035A500E056DD /* HorizontalMenuViewController.swift */,
);
name = Menu;
path = ../../Sources;
sourceTree = "<group>";
};
FFB6EFBF1E6EB82D005087BA /* Geometry */ = {
isa = PBXGroup;
children = (
FFB6EFC21E6EB8BE005087BA /* BasicArithmetic.swift */,
FFB6EFE41E6EF1C0005087BA /* ItemGeometry.swift */,
FFB6EFE61E6EF1D7005087BA /* MenuGeometry.swift */,
FFB6EFEA1E6EFDD4005087BA /* ProgressPoint.swift */,
FFB6EFE81E6EFA2E005087BA /* ScrollIndicatorGeometry.swift */,
FFB6EFC41E6EB8BE005087BA /* Segment.swift */,
FF03CCA11E7040A000E056DD /* ViewGeometry.swift */,
);
name = Geometry;
path = ../../Sources;
sourceTree = "<group>";
};
FFBA3F9C1E7942B400B130D1 /* Life Cycle States */ = {
isa = PBXGroup;
children = (
FFBA3F9D1E7943B200B130D1 /* ViewControllerState.swift */,
FFBA3F9F1E79447100B130D1 /* ViewDidLoadState.swift */,
FFBA3FA11E7944B600B130D1 /* ViewWillAppearState.swift */,
FFBA3FA31E7944FD00B130D1 /* AppearanceProgressState.swift */,
FFBA3FA51E79450E00B130D1 /* ViewDidAppearState.swift */,
FFBA3FA71E79452500B130D1 /* ViewWillDisappearState.swift */,
FFBA3FA91E79453600B130D1 /* DisappearanceProgressState.swift */,
FFBA3FAB1E79454700B130D1 /* ViewDidDisappearState.swift */,
);
name = "Life Cycle States";
sourceTree = "<group>";
};
FFBF6C891E681D7D008B7F73 = {
isa = PBXGroup;
children = (
FFBF6C951E681D7D008B7F73 /* TPGHorizontalMenu */,
FFBF6CA01E681D7D008B7F73 /* TPGHorizontalMenuTests */,
FFBF6C941E681D7D008B7F73 /* Products */,
);
sourceTree = "<group>";
};
FFBF6C941E681D7D008B7F73 /* Products */ = {
isa = PBXGroup;
children = (
FFBF6C931E681D7D008B7F73 /* TPGHorizontalMenu.framework */,
FFBF6C9C1E681D7D008B7F73 /* TPGHorizontalMenuTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
FFBF6C951E681D7D008B7F73 /* TPGHorizontalMenu */ = {
isa = PBXGroup;
children = (
FFD69EFF1E715AA30099C17E /* Data */,
FFD69F021E719F650099C17E /* Extensions */,
FFB6EFBF1E6EB82D005087BA /* Geometry */,
FFD39E261E7BF271003C52D6 /* Operations */,
FF85CD441E78147000845D4C /* Protocols */,
FFB6EFBE1E6EB7AE005087BA /* Menu */,
FFBF6C971E681D7D008B7F73 /* Info.plist */,
FFBF6C961E681D7D008B7F73 /* TPGHorizontalMenu.h */,
);
path = TPGHorizontalMenu;
sourceTree = "<group>";
};
FFBF6CA01E681D7D008B7F73 /* TPGHorizontalMenuTests */ = {
isa = PBXGroup;
children = (
FFBF6CA11E681D7D008B7F73 /* TPGHorizontalMenuTests.swift */,
FFBF6CA31E681D7D008B7F73 /* Info.plist */,
);
path = TPGHorizontalMenuTests;
sourceTree = "<group>";
};
FFBFFC411E84068C00305693 /* Controllers */ = {
isa = PBXGroup;
children = (
54F29C8B1E71827B00BDCBA8 /* AppearanceController.swift */,
FFBA3F991E79417500B130D1 /* ContainerLifeCycleController.swift */,
FFD39E241E7BEDF6003C52D6 /* ContainerLoaderController.swift */,
FFB6EFDA1E6ED469005087BA /* LayoutController.swift */,
FFB6EFCB1E6EB8ED005087BA /* PaginationController.swift */,
FFB6EFCD1E6EB8ED005087BA /* SelectionController.swift */,
);
name = Controllers;
sourceTree = "<group>";
};
FFD39E261E7BF271003C52D6 /* Operations */ = {
isa = PBXGroup;
children = (
FFD39E291E7BF2D4003C52D6 /* MenuItemSelectionOperation.swift */,
);
name = Operations;
path = ../../Sources;
sourceTree = "<group>";
};
FFD69EFF1E715AA30099C17E /* Data */ = {
isa = PBXGroup;
children = (
FFD69F001E715AC60099C17E /* MenuItem.swift */,
FF08F7741E72F0C10060C80A /* Animation.swift */,
FFD195B11E826A40007163A3 /* AnimationDynamics.swift */,
FF85CD4B1E7819B000845D4C /* SelectGestureRecognizer.swift */,
FFB6EFCC1E6EB8ED005087BA /* ScrollTransition.swift */,
);
name = Data;
path = ../../Sources;
sourceTree = "<group>";
};
FFD69F021E719F650099C17E /* Extensions */ = {
isa = PBXGroup;
children = (
FF85CD421E77E5B900845D4C /* Array+IndexValidation.swift */,
FFB6EFD41E6EB907005087BA /* CGPoint+Geometry.swift */,
FFB6EFE01E6EDFF9005087BA /* CGSize+Geometry.swift */,
FFB6EFC31E6EB8BE005087BA /* CGRect+Geometry.swift */,
FFB6EFEC1E6F01CE005087BA /* CGFloat+Geometry.swift */,
FFD69F031E719FC40099C17E /* UIColor+Geometry.swift */,
FFB6EFE21E6EEC67005087BA /* UIEdgeInsets+Geometry.swift */,
54F29C921E719F9600BDCBA8 /* UIScrollView+Extension.swift */,
FFD39E2B1E7C2BE9003C52D6 /* UIControlState+Hashable.swift */,
);
name = Extensions;
path = ../../Sources;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
FFBF6C901E681D7D008B7F73 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
FFBF6CA41E681D7D008B7F73 /* TPGHorizontalMenu.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
FFBF6C921E681D7D008B7F73 /* TPGHorizontalMenu */ = {
isa = PBXNativeTarget;
buildConfigurationList = FFBF6CA71E681D7D008B7F73 /* Build configuration list for PBXNativeTarget "TPGHorizontalMenu" */;
buildPhases = (
FFBF6C8E1E681D7D008B7F73 /* Sources */,
FFBF6C8F1E681D7D008B7F73 /* Frameworks */,
FFBF6C901E681D7D008B7F73 /* Headers */,
FFBF6C911E681D7D008B7F73 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = TPGHorizontalMenu;
productName = TPGHorizontalMenu;
productReference = FFBF6C931E681D7D008B7F73 /* TPGHorizontalMenu.framework */;
productType = "com.apple.product-type.framework";
};
FFBF6C9B1E681D7D008B7F73 /* TPGHorizontalMenuTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = FFBF6CAA1E681D7D008B7F73 /* Build configuration list for PBXNativeTarget "TPGHorizontalMenuTests" */;
buildPhases = (
FFBF6C981E681D7D008B7F73 /* Sources */,
FFBF6C991E681D7D008B7F73 /* Frameworks */,
FFBF6C9A1E681D7D008B7F73 /* Resources */,
);
buildRules = (
);
dependencies = (
FFBF6C9F1E681D7D008B7F73 /* PBXTargetDependency */,
);
name = TPGHorizontalMenuTests;
productName = TPGHorizontalMenuTests;
productReference = FFBF6C9C1E681D7D008B7F73 /* TPGHorizontalMenuTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
FFBF6C8A1E681D7D008B7F73 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0820;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "3Pillar Global";
TargetAttributes = {
FFBF6C921E681D7D008B7F73 = {
CreatedOnToolsVersion = 8.2.1;
LastSwiftMigration = 0910;
ProvisioningStyle = Automatic;
};
FFBF6C9B1E681D7D008B7F73 = {
CreatedOnToolsVersion = 8.2.1;
LastSwiftMigration = 0910;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = FFBF6C8D1E681D7D008B7F73 /* Build configuration list for PBXProject "TPGHorizontalMenu" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = FFBF6C891E681D7D008B7F73;
productRefGroup = FFBF6C941E681D7D008B7F73 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
FFBF6C921E681D7D008B7F73 /* TPGHorizontalMenu */,
FFBF6C9B1E681D7D008B7F73 /* TPGHorizontalMenuTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
FFBF6C911E681D7D008B7F73 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6C9A1E681D7D008B7F73 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
FFBF6C8E1E681D7D008B7F73 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FFB6EFE71E6EF1D7005087BA /* MenuGeometry.swift in Sources */,
FFD69F041E719FC40099C17E /* UIColor+Geometry.swift in Sources */,
FFD195B21E826A40007163A3 /* AnimationDynamics.swift in Sources */,
FFB6EFC61E6EB8BE005087BA /* CGRect+Geometry.swift in Sources */,
FFB6EFCF1E6EB8ED005087BA /* MenuDataSource.swift in Sources */,
FFB6EFC71E6EB8BE005087BA /* Segment.swift in Sources */,
FFB6EFC51E6EB8BE005087BA /* BasicArithmetic.swift in Sources */,
FFD39E2C1E7C2BE9003C52D6 /* UIControlState+Hashable.swift in Sources */,
54D3E43A1E7156D70073227E /* GeometryHolder.swift in Sources */,
FFBA3FAA1E79453600B130D1 /* DisappearanceProgressState.swift in Sources */,
FFBA3FAC1E79454700B130D1 /* ViewDidDisappearState.swift in Sources */,
FF03CCA21E7040A000E056DD /* ViewGeometry.swift in Sources */,
FF85CD461E78148C00845D4C /* Highlightable.swift in Sources */,
FFB6EFD11E6EB8ED005087BA /* ScrollTransition.swift in Sources */,
FFD39E2A1E7BF2D4003C52D6 /* MenuItemSelectionOperation.swift in Sources */,
FFB6EFE31E6EEC67005087BA /* UIEdgeInsets+Geometry.swift in Sources */,
FFBA3F9A1E79417500B130D1 /* ContainerLifeCycleController.swift in Sources */,
FFB6EFE51E6EF1C0005087BA /* ItemGeometry.swift in Sources */,
FFD69F011E715AC60099C17E /* MenuItem.swift in Sources */,
FFB6EFDB1E6ED469005087BA /* LayoutController.swift in Sources */,
FFB6EFE11E6EDFF9005087BA /* CGSize+Geometry.swift in Sources */,
FFB6EFED1E6F01CE005087BA /* CGFloat+Geometry.swift in Sources */,
FFB6EFE91E6EFA2E005087BA /* ScrollIndicatorGeometry.swift in Sources */,
FF85CD4C1E7819B000845D4C /* SelectGestureRecognizer.swift in Sources */,
FFB6EFEB1E6EFDD4005087BA /* ProgressPoint.swift in Sources */,
FFBA3F9E1E7943B200B130D1 /* ViewControllerState.swift in Sources */,
54F29C8C1E71827B00BDCBA8 /* AppearanceController.swift in Sources */,
FF03CCA01E7035A500E056DD /* HorizontalMenuViewController.swift in Sources */,
FFB6EFD21E6EB8ED005087BA /* SelectionController.swift in Sources */,
FFBA3FA01E79447100B130D1 /* ViewDidLoadState.swift in Sources */,
FFB6EFD31E6EB8ED005087BA /* HorizontalMenuChild.swift in Sources */,
FF85CD431E77E5B900845D4C /* Array+IndexValidation.swift in Sources */,
FFBA3FA21E7944B600B130D1 /* ViewWillAppearState.swift in Sources */,
54F29C931E719F9600BDCBA8 /* UIScrollView+Extension.swift in Sources */,
FFBA3FA61E79450E00B130D1 /* ViewDidAppearState.swift in Sources */,
FFD39E251E7BEDF6003C52D6 /* ContainerLoaderController.swift in Sources */,
FFB6EFD51E6EB907005087BA /* CGPoint+Geometry.swift in Sources */,
FFBA3FA41E7944FD00B130D1 /* AppearanceProgressState.swift in Sources */,
FFBA3FA81E79452500B130D1 /* ViewWillDisappearState.swift in Sources */,
FF08F7751E72F0C10060C80A /* Animation.swift in Sources */,
FFB6EFD01E6EB8ED005087BA /* PaginationController.swift in Sources */,
FF85CD481E78154800845D4C /* Selectable.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
FFBF6C981E681D7D008B7F73 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FFBF6CA21E681D7D008B7F73 /* TPGHorizontalMenuTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
FFBF6C9F1E681D7D008B7F73 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = FFBF6C921E681D7D008B7F73 /* TPGHorizontalMenu */;
targetProxy = FFBF6C9E1E681D7D008B7F73 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
FFBF6CA51E681D7D008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
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 = 10.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
FFBF6CA61E681D7D008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
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 = 10.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
FFBF6CA81E681D7D008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = TPGHorizontalMenu/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.TPGHorizontalMenu";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
FFBF6CA91E681D7D008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = TPGHorizontalMenu/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.TPGHorizontalMenu";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
FFBF6CAB1E681D7D008B7F73 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
INFOPLIST_FILE = TPGHorizontalMenuTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.TPGHorizontalMenuTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
FFBF6CAC1E681D7D008B7F73 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
INFOPLIST_FILE = TPGHorizontalMenuTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "-PG.TPGHorizontalMenuTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
FFBF6C8D1E681D7D008B7F73 /* Build configuration list for PBXProject "TPGHorizontalMenu" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CA51E681D7D008B7F73 /* Debug */,
FFBF6CA61E681D7D008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
FFBF6CA71E681D7D008B7F73 /* Build configuration list for PBXNativeTarget "TPGHorizontalMenu" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CA81E681D7D008B7F73 /* Debug */,
FFBF6CA91E681D7D008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
FFBF6CAA1E681D7D008B7F73 /* Build configuration list for PBXNativeTarget "TPGHorizontalMenuTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
FFBF6CAB1E681D7D008B7F73 /* Debug */,
FFBF6CAC1E681D7D008B7F73 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = FFBF6C8A1E681D7D008B7F73 /* Project object */;
}

View File

@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FFBF6C921E681D7D008B7F73"
BuildableName = "TPGHorizontalMenu.framework"
BlueprintName = "TPGHorizontalMenu"
ReferencedContainer = "container:TPGHorizontalMenu.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
codeCoverageEnabled = "YES"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FFBF6C9B1E681D7D008B7F73"
BuildableName = "TPGHorizontalMenuTests.xctest"
BlueprintName = "TPGHorizontalMenuTests"
ReferencedContainer = "container:TPGHorizontalMenu.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FFBF6C921E681D7D008B7F73"
BuildableName = "TPGHorizontalMenu.framework"
BlueprintName = "TPGHorizontalMenu"
ReferencedContainer = "container:TPGHorizontalMenu.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FFBF6C921E681D7D008B7F73"
BuildableName = "TPGHorizontalMenu.framework"
BlueprintName = "TPGHorizontalMenu"
ReferencedContainer = "container:TPGHorizontalMenu.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FFBF6C921E681D7D008B7F73"
BuildableName = "TPGHorizontalMenu.framework"
BlueprintName = "TPGHorizontalMenu"
ReferencedContainer = "container:TPGHorizontalMenu.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>TPGHorizontalMenu.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>FFBF6C921E681D7D008B7F73</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>FFBF6C9B1E681D7D008B7F73</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.1.4</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View File

@ -1,19 +0,0 @@
//
// TPGHorizontalMenu.h
// TPGHorizontalMenu
//
// Created by David Livadaru on 02/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for TPGHorizontalMenu.
FOUNDATION_EXPORT double TPGHorizontalMenuVersionNumber;
//! Project version string for TPGHorizontalMenu.
FOUNDATION_EXPORT const unsigned char TPGHorizontalMenuVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <TPGHorizontalMenu/PublicHeader.h>

View File

@ -1,36 +0,0 @@
//
// TPGHorizontalMenuTests.swift
// TPGHorizontalMenuTests
//
// Created by David Livadaru on 02/03/2017.
// Copyright © 2017 3Pillar Global. All rights reserved.
//
import XCTest
@testable import TPGHorizontalMenu
class TPGHorizontalMenuTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

1
cartfile Normal file
View File

@ -0,0 +1 @@
github "3pillarlabs/ios-horizontalmenu"