36 Commits

Author SHA1 Message Date
Alex.k 29919a48c1 updated readme and podspec 2016-09-30 18:02:07 +03:00
Alex.k 85e9ad71e0 Merge branch 'swift3'
# Conflicts:
#	NavigationStackDemo.xcodeproj/project.pbxproj
#	NavigationStackDemo/AppDelegate.swift
#	NavigationStackDemo/ViewControllers/FifthViewController/FifthViewController.swift
#	NavigationStackDemo/ViewControllers/SecondViewController/SecondViewController.swift
#	NavigationStackDemo/ViewControllers/ThirdViewController/ThirdViewController.swift
#	Source/CollectionView/Cell/CollectionViewStackCell.swift
#	Source/CollectionView/CollectionStackViewController.swift
#	Source/CollectionView/FlowLayout/CollectionViewStackFlowLayout.swift
#	Source/NavigationStack.swift
2016-09-30 17:58:48 +03:00
Alex.k fc5f8b6ae7 converted to swift 3 2016-09-30 17:56:08 +03:00
Alex.k 56e0454877 Revert "Update README.md"
This reverts commit 8d0fc29055.
2016-09-30 17:50:21 +03:00
Alex.k 7075eeeee8 Revert "Update README.md"
This reverts commit 3ef077ee03.
2016-09-30 17:40:48 +03:00
Alex feb6f40ed4 Merge pull request #9 from hyb175/migrate-swift-3.0
migrate to swift 3.0
2016-09-30 17:22:09 +03:00
Juri Vasylenko 3ef077ee03 Update README.md 2016-08-05 12:24:50 +04:00
Juri Vasylenko 8d0fc29055 Update README.md 2016-07-29 16:07:41 +04:00
Yingbai He ded79c57f8 migrate to swift 3.0 2016-07-28 16:28:19 -07:00
Juri Vasylenko 0427d14a66 Merge pull request #7 from aleksei1000000/patch-1
Update README.md
2016-07-21 15:41:07 +04:00
aleksei1000000 87acb45b51 Update README.md 2016-07-21 14:32:20 +03:00
aleksei1000000 da5fde65dc Update README.md 2016-07-21 12:15:16 +03:00
Alex ca4a3eec59 Merge pull request #6 from TheDarkCode/patch-1
Update README.md
2016-06-13 13:56:38 +00:00
Mark Hamilton 073b440b2e Update README.md
Typo
2016-06-13 06:53:14 -07:00
Alex.k be5dcf0e71 no message 2016-06-10 12:47:56 +03:00
Alex.k abf47af3a0 update docs 2016-06-10 12:45:56 +03:00
Alex.k e886b7ee9d Merge branch 'master' of https://github.com/Ramotion/navigation-stack 2016-06-10 12:41:18 +03:00
Alex.k 9e5f4c3a9b update readme 2016-06-10 12:41:13 +03:00
Alex 912861c3c2 Update README.md 2016-06-03 17:55:43 +03:00
Alex.k 2ce3c530d0 update readme 2016-06-03 16:47:16 +03:00
Alex.k 7764635275 update podspec 2016-06-03 16:42:14 +03:00
Alex.k c6bd3d85a8 added docs 2016-06-03 16:41:01 +03:00
Alex.k 4733501e56 Merge branch 'master' of https://github.com/Ramotion/navigation-stack 2016-06-03 16:25:44 +03:00
Alex.k df6b401580 added docs 2016-06-03 16:25:37 +03:00
Alex 1c43dc8316 Update README.md 2016-06-02 16:37:54 +03:00
Alex.k 50eb4f6118 update travis and readme 2016-06-01 14:38:02 +03:00
Alex.k 8852b680a3 shared scheme 2016-06-01 12:15:31 +03:00
Alex.k 37bed8284e update readme and podspec 2016-06-01 09:21:13 +03:00
Alex e161807bef Merge pull request #5 from durul/master
added blurEffect
2016-06-01 06:15:14 +00:00
durul 9b0371b579 added blurEffect
added blurEffect
2016-05-31 13:07:32 -04:00
Alex 220dcd062d Update README.md 2016-04-14 09:40:14 +03:00
Alex.k 7c6d3c9652 update podspec 2016-04-14 09:38:09 +03:00
Alex f10317cef2 Merge pull request #4 from AFcgi/master
[FIX] unbalanced calls to begin/end appearance transitions issue
2016-04-14 09:36:02 +03:00
cgi 74d58700d0 [FIX] unbalanced calls to begin/end appearance transitions issue 2016-04-13 21:35:31 +02:00
Alex.k a8621a582f update podspec 2016-04-12 09:52:44 +03:00
Alex.k c615143b62 fixed log warning 2016-04-12 09:49:57 +03:00
43 changed files with 2567 additions and 200 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
osx_image: xcode7.2
osx_image: xcode7.3
language: objective-c
xcode_project: NavigationStackDemo.xcodeproj
+2 -3
View File
@@ -1,12 +1,11 @@
Pod::Spec.new do |s|
s.name = 'Navigation-stack'
s.version = '0.0.2'
s.version = '1.0.0'
s.summary = 'Show list of navigationControllers'
s.license = 'MIT'
s.homepage = 'https://github.com/Ramotion/navigation-stack'
s.author = { 'Juri Vasylenko' => 'juri.v@ramotion.com' }
s.ios.deployment_target = '9.0'
s.ios.deployment_target = '10.0'
s.source = { :git => 'https://github.com/Ramotion/navigation-stack.git', :tag => s.version.to_s }
s.source_files = 'Source/**/*.swift'
s.requires_arc = true
end
+26
View File
@@ -0,0 +1,26 @@
<?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.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
+19
View File
@@ -0,0 +1,19 @@
//
// NavigationStack.h
// NavigationStack
//
// Created by Alex K. on 01/06/16.
// Copyright © 2016 Alex K. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for NavigationStack.
FOUNDATION_EXPORT double NavigationStackVersionNumber;
//! Project version string for NavigationStack.
FOUNDATION_EXPORT const unsigned char NavigationStackVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <NavigationStack/PublicHeader.h>
+187 -5
View File
@@ -3,13 +3,20 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 47;
objects = {
/* Begin PBXBuildFile section */
840D54101C8705FA00555605 /* FirstTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D540F1C8705FA00555605 /* FirstTableViewController.swift */; };
842FF8E11C8707BD0030E758 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B0EF1C80238500B53B4E /* AppDelegate.swift */; };
842FF8E51C8707DA0030E758 /* FirstTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D540F1C8705FA00555605 /* FirstTableViewController.swift */; };
84368B3F1CFEDDB1007C4278 /* NavigationStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 84368B3E1CFEDDB1007C4278 /* NavigationStack.h */; settings = {ATTRIBUTES = (Public, ); }; };
84368B431CFEDDB1007C4278 /* NavigationStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */; };
84368B441CFEDDB1007C4278 /* NavigationStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
84368B491CFEDDBE007C4278 /* NavigationStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1261C80250A00B53B4E /* NavigationStack.swift */; };
84368B4A1CFEDDC5007C4278 /* CollectionStackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1231C80250A00B53B4E /* CollectionStackViewController.swift */; };
84368B4B1CFEDDC9007C4278 /* CollectionViewStackFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1221C80250A00B53B4E /* CollectionViewStackFlowLayout.swift */; };
84368B4C1CFEDDCE007C4278 /* CollectionViewStackCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1201C80250A00B53B4E /* CollectionViewStackCell.swift */; };
8444B0F01C80238500B53B4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B0EF1C80238500B53B4E /* AppDelegate.swift */; };
8444B0F51C80238500B53B4E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8444B0F31C80238500B53B4E /* Main.storyboard */; };
8444B0F71C80238500B53B4E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8444B0F61C80238500B53B4E /* Assets.xcassets */; };
@@ -36,6 +43,13 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
84368B411CFEDDB1007C4278 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8444B0E41C80238500B53B4E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 84368B3B1CFEDDB1007C4278;
remoteInfo = NavigationStack;
};
8444B1011C80238500B53B4E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 8444B0E41C80238500B53B4E /* Project object */;
@@ -45,8 +59,25 @@
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
84368B481CFEDDB1007C4278 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
84368B441CFEDDB1007C4278 /* NavigationStack.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
840D540F1C8705FA00555605 /* FirstTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirstTableViewController.swift; sourceTree = "<group>"; };
84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NavigationStack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
84368B3E1CFEDDB1007C4278 /* NavigationStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NavigationStack.h; sourceTree = "<group>"; };
84368B401CFEDDB1007C4278 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8444B0EC1C80238500B53B4E /* NavigationStackDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NavigationStackDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
8444B0EF1C80238500B53B4E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
8444B0F41C80238500B53B4E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
@@ -69,10 +100,18 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
84368B381CFEDDB1007C4278 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8444B0E91C80238500B53B4E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
84368B431CFEDDB1007C4278 /* NavigationStack.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -86,11 +125,21 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
84368B3D1CFEDDB1007C4278 /* NavigationStack */ = {
isa = PBXGroup;
children = (
84368B3E1CFEDDB1007C4278 /* NavigationStack.h */,
84368B401CFEDDB1007C4278 /* Info.plist */,
);
path = NavigationStack;
sourceTree = "<group>";
};
8444B0E31C80238500B53B4E = {
isa = PBXGroup;
children = (
8444B0EE1C80238500B53B4E /* NavigationStackDemo */,
8444B1031C80238500B53B4E /* NavigationStackDemoTests */,
84368B3D1CFEDDB1007C4278 /* NavigationStack */,
8444B0ED1C80238500B53B4E /* Products */,
);
sourceTree = "<group>";
@@ -100,6 +149,7 @@
children = (
8444B0EC1C80238500B53B4E /* NavigationStackDemo.app */,
8444B1001C80238500B53B4E /* NavigationStackDemoTests.xctest */,
84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */,
);
name = Products;
sourceTree = "<group>";
@@ -219,7 +269,36 @@
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
84368B391CFEDDB1007C4278 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
84368B3F1CFEDDB1007C4278 /* NavigationStack.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
84368B3B1CFEDDB1007C4278 /* NavigationStack */ = {
isa = PBXNativeTarget;
buildConfigurationList = 84368B471CFEDDB1007C4278 /* Build configuration list for PBXNativeTarget "NavigationStack" */;
buildPhases = (
84368B371CFEDDB1007C4278 /* Sources */,
84368B381CFEDDB1007C4278 /* Frameworks */,
84368B391CFEDDB1007C4278 /* Headers */,
84368B3A1CFEDDB1007C4278 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = NavigationStack;
productName = NavigationStack;
productReference = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */;
productType = "com.apple.product-type.framework";
};
8444B0EB1C80238500B53B4E /* NavigationStackDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8444B1141C80238500B53B4E /* Build configuration list for PBXNativeTarget "NavigationStackDemo" */;
@@ -227,10 +306,12 @@
8444B0E81C80238500B53B4E /* Sources */,
8444B0E91C80238500B53B4E /* Frameworks */,
8444B0EA1C80238500B53B4E /* Resources */,
84368B481CFEDDB1007C4278 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
84368B421CFEDDB1007C4278 /* PBXTargetDependency */,
);
name = NavigationStackDemo;
productName = NavigationStackDemo;
@@ -262,21 +343,28 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0720;
LastUpgradeCheck = 0800;
ORGANIZATIONNAME = "Alex K.";
TargetAttributes = {
84368B3B1CFEDDB1007C4278 = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = 34MUF9YXTA;
LastSwiftMigration = 0800;
};
8444B0EB1C80238500B53B4E = {
CreatedOnToolsVersion = 7.2.1;
DevelopmentTeam = 34MUF9YXTA;
LastSwiftMigration = 0800;
};
8444B0FF1C80238500B53B4E = {
CreatedOnToolsVersion = 7.2.1;
LastSwiftMigration = 0800;
TestTargetID = 8444B0EB1C80238500B53B4E;
};
};
};
buildConfigurationList = 8444B0E71C80238500B53B4E /* Build configuration list for PBXProject "NavigationStackDemo" */;
compatibilityVersion = "Xcode 3.2";
compatibilityVersion = "Xcode 6.3";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
@@ -290,11 +378,19 @@
targets = (
8444B0EB1C80238500B53B4E /* NavigationStackDemo */,
8444B0FF1C80238500B53B4E /* NavigationStackDemoTests */,
84368B3B1CFEDDB1007C4278 /* NavigationStack */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
84368B3A1CFEDDB1007C4278 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
8444B0EA1C80238500B53B4E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -319,6 +415,17 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
84368B371CFEDDB1007C4278 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
84368B491CFEDDBE007C4278 /* NavigationStack.swift in Sources */,
84368B4C1CFEDDCE007C4278 /* CollectionViewStackCell.swift in Sources */,
84368B4B1CFEDDC9007C4278 /* CollectionViewStackFlowLayout.swift in Sources */,
84368B4A1CFEDDC5007C4278 /* CollectionStackViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8444B0E81C80238500B53B4E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -355,6 +462,11 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
84368B421CFEDDB1007C4278 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 84368B3B1CFEDDB1007C4278 /* NavigationStack */;
targetProxy = 84368B411CFEDDB1007C4278 /* PBXContainerItemProxy */;
};
8444B1021C80238500B53B4E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 8444B0EB1C80238500B53B4E /* NavigationStackDemo */;
@@ -382,6 +494,56 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
84368B451CFEDDB1007C4278 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = NavigationStack/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStack;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
84368B461CFEDDB1007C4278 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = NavigationStack/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStack;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
8444B1121C80238500B53B4E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -395,8 +557,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -418,7 +582,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -439,8 +603,10 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -456,9 +622,10 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
VALIDATE_PRODUCT = YES;
};
name = Release;
@@ -466,6 +633,7 @@
8444B1151C80238500B53B4E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = NavigationStackDemo/Info.plist;
@@ -473,12 +641,14 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
};
name = Debug;
};
8444B1161C80238500B53B4E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
INFOPLIST_FILE = NavigationStackDemo/Info.plist;
@@ -486,6 +656,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
};
name = Release;
};
@@ -497,6 +668,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NavigationStackDemo.app/NavigationStackDemo";
};
name = Debug;
@@ -509,6 +681,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NavigationStackDemo.app/NavigationStackDemo";
};
name = Release;
@@ -516,6 +689,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
84368B471CFEDDB1007C4278 /* Build configuration list for PBXNativeTarget "NavigationStack" */ = {
isa = XCConfigurationList;
buildConfigurations = (
84368B451CFEDDB1007C4278 /* Debug */,
84368B461CFEDDB1007C4278 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8444B0E71C80238500B53B4E /* Build configuration list for PBXProject "NavigationStackDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
LastUpgradeVersion = "0800"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -14,9 +14,9 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8444B0EB1C80238500B53B4E"
BuildableName = "NavigationStackDemo.app"
BlueprintName = "NavigationStackDemo"
BlueprintIdentifier = "84368B3B1CFEDDB1007C4278"
BuildableName = "NavigationStack.framework"
BlueprintName = "NavigationStack"
ReferencedContainer = "container:NavigationStackDemo.xcodeproj">
</BuildableReference>
</BuildActionEntry>
@@ -28,26 +28,7 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8444B0FF1C80238500B53B4E"
BuildableName = "NavigationStackDemoTests.xctest"
BlueprintName = "NavigationStackDemoTests"
ReferencedContainer = "container:NavigationStackDemo.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8444B0EB1C80238500B53B4E"
BuildableName = "NavigationStackDemo.app"
BlueprintName = "NavigationStackDemo"
ReferencedContainer = "container:NavigationStackDemo.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
@@ -61,16 +42,15 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8444B0EB1C80238500B53B4E"
BuildableName = "NavigationStackDemo.app"
BlueprintName = "NavigationStackDemo"
BlueprintIdentifier = "84368B3B1CFEDDB1007C4278"
BuildableName = "NavigationStack.framework"
BlueprintName = "NavigationStack"
ReferencedContainer = "container:NavigationStackDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
@@ -80,16 +60,15 @@
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8444B0EB1C80238500B53B4E"
BuildableName = "NavigationStackDemo.app"
BlueprintName = "NavigationStackDemo"
BlueprintIdentifier = "84368B3B1CFEDDB1007C4278"
BuildableName = "NavigationStack.framework"
BlueprintName = "NavigationStack"
ReferencedContainer = "container:NavigationStackDemo.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
+8 -8
View File
@@ -30,37 +30,37 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.sharedApplication().statusBarStyle = .LightContent
UIApplication.shared.statusBarStyle = .lightContent
UINavigationBar.appearance().titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.whiteColor(),
NSForegroundColorAttributeName : UIColor.white,
NSFontAttributeName : UIFont(name: "OpenSans-Semibold", size: 16)!
]
return true
}
func applicationWillResignActive(application: UIApplication) {
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
func applicationDidEnterBackground(application: UIApplication) {
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(application: UIApplication) {
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(application: UIApplication) {
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(application: UIApplication) {
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="wMY-lE-9QR">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="wMY-lE-9QR">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<customFonts key="customFonts">
@@ -269,11 +269,7 @@
</connections>
</tableView>
<toolbarItems/>
<navigationItem key="navigationItem" id="Avt-G1-zNd">
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="displaysSearchBarInNavigationBar" value="YES"/>
</userDefinedRuntimeAttributes>
</navigationItem>
<navigationItem key="navigationItem" id="Avt-G1-zNd"/>
<connections>
<outlet property="search" destination="w8B-dB-9wA" id="nwS-76-4cb"/>
<segue destination="iaH-ZQ-ay5" kind="show" identifier="push" id="HYI-Ga-o9f"/>
@@ -10,7 +10,7 @@ import UIKit
class FifthViewController: UITableViewController {
@IBAction func backHandler(sender: AnyObject) {
navigationController?.popViewControllerAnimated(true)
@IBAction func backHandler(_ sender: AnyObject) {
let _ = navigationController?.popViewController(animated: true)
}
}
@@ -21,7 +21,7 @@ class FirstTableViewController: UITableViewController {
navigationItem.titleView = search
}
override func viewWillAppear(animated: Bool) {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let navigationController = navigationController {
@@ -29,8 +29,8 @@ class FirstTableViewController: UITableViewController {
}
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("push", sender: nil)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "push", sender: nil)
}
}
@@ -38,7 +38,7 @@ class FirstTableViewController: UITableViewController {
// MARK: UIGestureRecognizerDelegate
extension FirstTableViewController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if navigationController?.viewControllers.count == 2 {
return true
@@ -10,7 +10,7 @@ import UIKit
class SecondViewController: UITableViewController {
override func viewWillAppear(animated: Bool) {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// if let navigationController = navigationController {
@@ -21,12 +21,12 @@ class SecondViewController: UITableViewController {
}
@IBAction func backHandler(sender: AnyObject) {
navigationController?.popViewControllerAnimated(true)
@IBAction func backHandler(_ sender: AnyObject) {
let _ = navigationController?.popViewController(animated: true)
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("push", sender: nil)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "push", sender: nil)
}
}
@@ -10,19 +10,19 @@ import UIKit
class ThirdViewController: UITableViewController {
@IBInspectable var navbarColor: UIColor = .blackColor()
@IBInspectable var navbarColor: UIColor = .black
override func viewWillAppear(animated: Bool) {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
@IBAction func backHandler(sender: AnyObject) {
navigationController?.popViewControllerAnimated(true)
@IBAction func backHandler(_ sender: AnyObject) {
let _ = navigationController?.popViewController(animated: true)
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("push", sender: nil)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "push", sender: nil)
}
}
@@ -28,7 +28,7 @@ class NavigationStackDemoTests: XCTestCase {
func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock {
self.measure {
// Put the code you want to measure the time of here.
}
}
+21 -12
View File
@@ -1,21 +1,25 @@
![header](./header.png)
[![header](https://raw.githubusercontent.com/Ramotion/navigation-stack/master/header.png)](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack-logo)
# navigation-stack
[![Twitter](https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat)](http://twitter.com/Ramotion)
[![CocoaPods](https://img.shields.io/cocoapods/p/Navigation-stack.svg)](https://cocoapods.org/pods/Navigation-stack)
[![CocoaPods](https://img.shields.io/cocoapods/v/Navigation-stack.svg)](http://cocoapods.org/pods/Navigation-stack)
[![CocoaPods](https://img.shields.io/cocoapods/metrics/doc-percent/Navigation-stack.svg)](https://cdn.rawgit.com/Ramotion/navigation-stack/master/docs/index.html)
[![Travis](https://img.shields.io/travis/Ramotion/navigation-stack.svg)](https://travis-ci.org/Ramotion/navigation-stack)
[![codebeat badge](https://codebeat.co/badges/c322a039-b06b-46d9-bf40-e48cf0365b97)](https://codebeat.co/projects/github-com-ramotion-navigation-stack)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Ramotion/navigation-stack)
[shot on dribbble](https://dribbble.com/shots/2583175-Navigation-Stack-Swift-Open-Source):
![Animation](Navigation-Stack.gif)
## About
This project is maintained by Ramotion, an agency specialized in building dedicated engineering teams and developing custom software.<br><br> [Contact our team](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack-contact-us) and well help you work with the best engineers from Eastern Europe.
![Animation](https://raw.githubusercontent.com/Ramotion/navigation-stack/master/Navigation-Stack.gif)
The [iPhone mockup](https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack) available [here](https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack).
## Requirements
- iOS 9.0+
- Xcode 7.2
- Xcode 7.3
## Installation
@@ -23,7 +27,14 @@ Just add the Source folder to your project.
or use [CocoaPods](https://cocoapods.org) with Podfile:
``` ruby
pod 'Navigation-stack', '~> 0.0.2'
pod 'Navigation-stack'
```
or [Carthage](https://github.com/Carthage/Carthage) users can simply add to their `Cartfile`:
```
github "Ramotion/navigation-stack", "~> 0.0.8" swift 2
github "Ramotion/navigation-stack", "~> 1.0.0" swift 3
```
## Usage
@@ -42,29 +53,27 @@ override func viewDidLoad() {
``` swift
extension YourViewController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if navigationController?.viewControllers.count == 2 {
return true
}
if let navigationController = self.navigationController as? NavigationStack {
navigationController.showControllers()
}
return false
}
}
```
## Licence
## License
Navigation-stack is released under the MIT license.
See [LICENSE](./LICENSE) for details.
## About
The project maintained by [app development agency](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack) [Ramotion Inc.](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack)
See our other [open-source projects](https://github.com/ramotion) or [hire](https://ramotion.com?utm_source=gthb&utm_medium=special&utm_campaign=navigation-stack) us to design, develop, and grow your product.
## Follow Us
[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=https://github.com/ramotion/navigation-stack)
[![Twitter Follow](https://img.shields.io/twitter/follow/ramotion.svg?style=social)](https://twitter.com/ramotion)
@@ -50,7 +50,7 @@ class CollectionViewStackCell: UICollectionViewCell {
extension CollectionViewStackCell {
private func createImageView() -> UIImageView {
fileprivate func createImageView() -> UIImageView {
let imageView = UIImageView(frame: CGRect.zero)
imageView.translatesAutoresizingMaskIntoConstraints = false
@@ -58,47 +58,46 @@ extension CollectionViewStackCell {
contentView.addSubview(imageView)
contentView.addConstraints([
createConstraint(imageView, toItem: contentView, attribute: .Top),
createConstraint(imageView, toItem: contentView, attribute: .Bottom),
createConstraint(imageView, toItem: contentView, attribute: .Left),
createConstraint(imageView, toItem: contentView, attribute: .Right),
createConstraint(imageView, toItem: contentView, attribute: .top),
createConstraint(imageView, toItem: contentView, attribute: .bottom),
createConstraint(imageView, toItem: contentView, attribute: .left),
createConstraint(imageView, toItem: contentView, attribute: .right),
])
return imageView
}
private func createConstraint(item: UIImageView, toItem: UIView, attribute: NSLayoutAttribute) -> NSLayoutConstraint {
fileprivate func createConstraint(_ item: UIImageView, toItem: UIView, attribute: NSLayoutAttribute) -> NSLayoutConstraint {
return NSLayoutConstraint(item: item,
attribute: attribute,
relatedBy: .Equal,
relatedBy: .equal,
toItem: toItem,
attribute: attribute,
multiplier: 1,
constant: 0)
}
private func createShadow() {
fileprivate func createShadow() {
layer.masksToBounds = false;
layer.shadowOpacity = 0.30;
layer.shadowRadius = 10.0;
layer.shadowOffset = CGSize.zero;
layer.shadowPath = UIBezierPath(rect: bounds).CGPath
layer.shadowPath = UIBezierPath(rect: bounds).cgPath
layer.shouldRasterize = true;
}
private func addBlurOnImage(image: UIImageView) {
// create effect
// UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
//
// // add effect to an effect view
// UIVisualEffectView *effectView = [[UIVisualEffectView alloc]initWithEffect:blur];
// effectView.frame = self.view.frame;
//
// // add the effect view to the image view
// [self.imageView addSubview:effectView];
fileprivate func addBlurOnImage(_ image: UIImageView) {
let blurEffect = UIBlurEffect(style: .dark)
let blurView = UIVisualEffectView(effect: blurEffect)
blurView.translatesAutoresizingMaskIntoConstraints = false
imageView!.insertSubview(blurView, at: 3)
let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)
let vibrancyView = UIVisualEffectView(effect: vibrancyEffect)
vibrancyView.translatesAutoresizingMaskIntoConstraints = false
blurView.contentView.addSubview(vibrancyView)
}
}
@@ -24,17 +24,28 @@
import UIKit
fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
switch (lhs, rhs) {
case let (l?, r?):
return l < r
case (nil, _?):
return true
default:
return false
}
}
// MARK: CollectionStackViewController
protocol CollectionStackViewControllerDelegate: class {
func controllerDidSelected(index index: Int)
func controllerDidSelected(index: Int)
}
class CollectionStackViewController: UICollectionViewController {
private var screens: [UIImage]
private let overlay: Float
fileprivate var screens: [UIImage]
fileprivate let overlay: Float
weak var delegate: CollectionStackViewControllerDelegate?
@@ -43,7 +54,7 @@ class CollectionStackViewController: UICollectionViewController {
overlay: Float,
scaleRatio: Float,
scaleValue: Float,
bgColor: UIColor = UIColor.clearColor(),
bgColor: UIColor = UIColor.clear,
bgView: UIView? = nil,
decelerationRate:CGFloat) {
@@ -67,17 +78,17 @@ class CollectionStackViewController: UICollectionViewController {
override func viewDidLoad() {
configureCollectionView()
scrolltoIndex(screens.count - 1, animated: false, position: .Left) // move to end
scrolltoIndex(screens.count - 1, animated: false, position: .left) // move to end
}
override func viewDidAppear(animated: Bool) {
override func viewDidAppear(_ animated: Bool) {
guard let collectionViewLayout = self.collectionViewLayout as? CollectionViewStackFlowLayout else {
fatalError("wrong collection layout")
}
collectionViewLayout.openAnimating = true
scrolltoIndex(0, animated: true, position: .Left) // open animation
scrolltoIndex(0, animated: true, position: .left) // open animation
}
}
@@ -85,14 +96,14 @@ class CollectionStackViewController: UICollectionViewController {
extension CollectionStackViewController {
private func configureCollectionView() {
fileprivate func configureCollectionView() {
guard let collectionViewLayout = self.collectionViewLayout as? UICollectionViewFlowLayout else {
fatalError("wrong collection layout")
}
collectionViewLayout.scrollDirection = .Horizontal
collectionViewLayout.scrollDirection = .horizontal
collectionView?.showsHorizontalScrollIndicator = false
collectionView?.registerClass(CollectionViewStackCell.self, forCellWithReuseIdentifier: String(CollectionViewStackCell))
collectionView?.register(CollectionViewStackCell.self, forCellWithReuseIdentifier: String(describing: CollectionViewStackCell.self))
}
}
@@ -101,36 +112,36 @@ extension CollectionStackViewController {
extension CollectionStackViewController {
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return screens.count
}
override func collectionView(collectionView: UICollectionView,
willDisplayCell cell: UICollectionViewCell,
forItemAtIndexPath indexPath: NSIndexPath) {
override func collectionView(_ collectionView: UICollectionView,
willDisplay cell: UICollectionViewCell,
forItemAt indexPath: IndexPath) {
if let cell = cell as? CollectionViewStackCell {
cell.imageView?.image = screens[indexPath.row]
cell.imageView?.image = screens[(indexPath as NSIndexPath).row]
}
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(String(CollectionViewStackCell),
forIndexPath: indexPath)
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: CollectionViewStackCell.self),
for: indexPath)
return cell
}
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
guard let currentCell = collectionView.cellForItemAtIndexPath(indexPath) else {
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let currentCell = collectionView.cellForItem(at: indexPath) else {
return
}
// move cells
UIView.animateWithDuration(0.3, delay: 0, options:.CurveEaseIn,
UIView.animate(withDuration: 0.3, delay: 0, options:.curveEaseIn,
animations: { () -> Void in
for cell in self.collectionView!.visibleCells() where cell != currentCell {
let row = self.collectionView?.indexPathForCell(cell)?.row
let xPosition = row < indexPath.row ? cell.center.x - self.view.bounds.size.width * 2
for cell in self.collectionView!.visibleCells where cell != currentCell {
let row = (self.collectionView?.indexPath(for: cell) as NSIndexPath?)?.row
let xPosition = row < (indexPath as NSIndexPath).row ? cell.center.x - self.view.bounds.size.width * 2
: cell.center.x + self.view.bounds.size.width * 2
cell.center = CGPoint(x: xPosition, y: cell.center.y)
@@ -138,22 +149,22 @@ extension CollectionStackViewController {
}, completion: nil)
// move to center current cell
UIView.animateWithDuration(0.2, delay: 0.2, options:.CurveEaseOut,
UIView.animate(withDuration: 0.2, delay: 0.2, options:.curveEaseOut,
animations: { () -> Void in
let offset = collectionView.contentOffset.x - (self.view.bounds.size.width - collectionView.bounds.size.width * CGFloat(self.overlay)) * CGFloat(indexPath.row)
let offset = collectionView.contentOffset.x - (self.view.bounds.size.width - collectionView.bounds.size.width * CGFloat(self.overlay)) * CGFloat((indexPath as NSIndexPath).row)
currentCell.center = CGPoint(x: (currentCell.center.x + offset), y: currentCell.center.y)
}, completion: nil)
// scale current cell
UIView.animateWithDuration(0.2, delay: 0.6, options:.CurveEaseOut, animations: { () -> Void in
let scale = CGAffineTransformMakeScale(1, 1)
UIView.animate(withDuration: 0.2, delay: 0.6, options:.curveEaseOut, animations: { () -> Void in
let scale = CGAffineTransform(scaleX: 1, y: 1)
currentCell.transform = scale
currentCell.alpha = 1
}) { (success) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.delegate?.controllerDidSelected(index: indexPath.row)
self.dismissViewControllerAnimated(false, completion: nil)
DispatchQueue.main.async(execute: { () -> Void in
self.delegate?.controllerDidSelected(index: (indexPath as NSIndexPath).row)
self.dismiss(animated: false, completion: nil)
})
}
}
@@ -163,11 +174,11 @@ extension CollectionStackViewController {
extension CollectionStackViewController: UICollectionViewDelegateFlowLayout {
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return view.bounds.size
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: NSInteger) -> CGFloat {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: NSInteger) -> CGFloat {
return -collectionView.bounds.size.width * CGFloat(overlay)
}
}
@@ -177,8 +188,8 @@ extension CollectionStackViewController: UICollectionViewDelegateFlowLayout {
extension CollectionStackViewController {
private func scrolltoIndex(index: Int, animated: Bool , position: UICollectionViewScrollPosition) {
let indexPath = NSIndexPath(forItem: index, inSection: 0)
collectionView?.scrollToItemAtIndexPath(indexPath, atScrollPosition: position, animated: animated)
fileprivate func scrolltoIndex(_ index: Int, animated: Bool , position: UICollectionViewScrollPosition) {
let indexPath = IndexPath(item: index, section: 0)
collectionView?.scrollToItem(at: indexPath, at: position, animated: animated)
}
}
@@ -56,11 +56,11 @@ class CollectionViewStackFlowLayout: UICollectionViewFlowLayout {
extension CollectionViewStackFlowLayout {
override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let items = NSArray (array: super.layoutAttributesForElementsInRect(rect)!, copyItems: true)
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let items = NSArray (array: super.layoutAttributesForElements(in: rect)!, copyItems: true)
var headerAttributes: UICollectionViewLayoutAttributes?
items.enumerateObjectsUsingBlock { (object, idex, stop) -> Void in
items.enumerateObjects({ (object, idex, stop) -> Void in
let attributes = object as! UICollectionViewLayoutAttributes
if attributes.representedElementKind == UICollectionElementKindSectionHeader {
@@ -69,11 +69,11 @@ extension CollectionViewStackFlowLayout {
else {
self.updateCellAttributes(attributes, headerAttributes: headerAttributes)
}
}
})
return items as? [UICollectionViewLayoutAttributes]
}
func updateCellAttributes(attributes: UICollectionViewLayoutAttributes, headerAttributes: UICollectionViewLayoutAttributes?) {
func updateCellAttributes(_ attributes: UICollectionViewLayoutAttributes, headerAttributes: UICollectionViewLayoutAttributes?) {
guard let collectionView = self.collectionView else {
return;
@@ -86,17 +86,17 @@ extension CollectionViewStackFlowLayout {
let scale = transformScale(attributes, allWidth: allWidth, offset: contentOffsetX)
let move = transformMove(attributes, itemWidth: itemWidth, offset: contentOffsetX)
attributes.transform = CGAffineTransformConcat(scale, move)
attributes.transform = scale.concatenating(move)
attributes.alpha = calculateAlpha(attributes, itemWidth: itemWidth, offset: contentOffsetX)
if additionScale > 0 && openAnimating {
additionScale -= 0.02
additionScale = additionScale < 0 ? 0 : additionScale
}
attributes.zIndex = attributes.indexPath.row
attributes.zIndex = (attributes.indexPath as NSIndexPath).row
}
override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool {
override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool {
return true
}
}
@@ -105,24 +105,24 @@ extension CollectionViewStackFlowLayout {
extension CollectionViewStackFlowLayout {
private func transformScale(attributes: UICollectionViewLayoutAttributes,
fileprivate func transformScale(_ attributes: UICollectionViewLayoutAttributes,
allWidth: CGFloat,
offset: CGFloat) -> CGAffineTransform {
var maximum = CGFloat(maxScale) - CGFloat(itemsCount - attributes.indexPath.row) / CGFloat(scaleRatio)
var maximum = CGFloat(maxScale) - CGFloat(itemsCount - (attributes.indexPath as NSIndexPath).row) / CGFloat(scaleRatio)
maximum += CGFloat(1.0 - maximum) * CGFloat(additionScale)
var minimum = CGFloat(maxScale - 0.1) - CGFloat(itemsCount - attributes.indexPath.row) / CGFloat(scaleRatio)
var minimum = CGFloat(maxScale - 0.1) - CGFloat(itemsCount - (attributes.indexPath as NSIndexPath).row) / CGFloat(scaleRatio)
minimum += CGFloat(1.0 - minimum) * CGFloat(additionScale)
var currentScale = (maximum + minimum) - (minimum + offset / (allWidth / (maximum - minimum)))
currentScale = max(min(maximum, currentScale), minimum)
return CGAffineTransformMakeScale(currentScale, currentScale)
return CGAffineTransform(scaleX: currentScale, y: currentScale)
}
private func transformMove(attributes: UICollectionViewLayoutAttributes,
fileprivate func transformMove(_ attributes: UICollectionViewLayoutAttributes,
itemWidth: CGFloat,
offset: CGFloat) -> CGAffineTransform {
var currentContentOffsetX = offset - itemWidth * CGFloat(attributes.indexPath.row)
var currentContentOffsetX = offset - itemWidth * CGFloat((attributes.indexPath as NSIndexPath).row)
currentContentOffsetX = min(max(currentContentOffsetX, 0),itemWidth)
var dx = (currentContentOffsetX / itemWidth)
@@ -131,11 +131,11 @@ extension CollectionViewStackFlowLayout {
}
dx = currentContentOffsetX - dx
return CGAffineTransformMakeTranslation(dx, 0)
return CGAffineTransform(translationX: dx, y: 0)
}
private func calculateAlpha(attributes: UICollectionViewLayoutAttributes, itemWidth: CGFloat, offset: CGFloat) -> CGFloat {
var currentContentOffsetX = offset - itemWidth * CGFloat(attributes.indexPath.row)
fileprivate func calculateAlpha(_ attributes: UICollectionViewLayoutAttributes, itemWidth: CGFloat, offset: CGFloat) -> CGFloat {
var currentContentOffsetX = offset - itemWidth * CGFloat((attributes.indexPath as NSIndexPath).row)
currentContentOffsetX = min(max(currentContentOffsetX, 0),itemWidth)
let dx = (currentContentOffsetX / itemWidth)
+57 -38
View File
@@ -25,32 +25,60 @@
import UIKit
// MARK: NavigationStack
public class NavigationStack: UINavigationController {
/// UINavigationcontroller with animation show lists of UIViewControllers
open class NavigationStack: UINavigationController {
@IBInspectable public var overlay: Float = 0.8
@IBInspectable public var scaleRatio: Float = 14.0
@IBInspectable public var scaleValue: Float = 0.99
@IBInspectable public var decelerationRate: CGFloat = UIScrollViewDecelerationRateNormal
var overlay: Float = 0.8
var scaleRatio: Float = 14.0
var scaleValue: Float = 0.99
@IBInspectable public var bgColor: UIColor = .blackColor()
/// A floating-point value that determines the rate of deceleration after the user lifts their finger.
@IBInspectable open var decelerationRate: CGFloat = UIScrollViewDecelerationRateNormal
public var bgView: UIView? = nil
private var screens = [UIImage]()
/// The color to use for the background of the lists of UIViewcontrollers.
@IBInspectable open var bgColor: UIColor = .black
weak public var stackDelegate: UINavigationControllerDelegate? // use this instead delegate
/// The background UIView of the lists of UIViewcontrollers.
open var bgView: UIView? = nil
fileprivate var screens = [UIImage]()
/// The delegate of the navigation controller object. Use this instead delegate.
weak open var stackDelegate: UINavigationControllerDelegate?
/**
The initialized navigation controller object or nil if there was a problem initializing the object.
- parameter aDecoder: aDecoder
- returns: The initialized navigation controller object or nil if there was a problem initializing the object.
*/
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
delegate = self
}
/**
Initializes and returns a newly created navigation controller.
- parameter rootViewController: The view controller that resides at the bottom of the navigation stack.
- returns: The initialized navigation controller object or nil if there was a problem initializing the object.
*/
override init(rootViewController: UIViewController) {
super.init(rootViewController: rootViewController)
delegate = self
}
}
// MARK: pulbic methods
extension NavigationStack {
/**
Show list of ViewControllers.
*/
public func showControllers() {
if screens.count == 0 {
return
@@ -67,18 +95,7 @@ extension NavigationStack {
bgView: bgView,
decelerationRate: decelerationRate)
presentViewController(collectioView, animated: false, completion: nil)
}
}
// MARK: Additional helpers
extension NavigationStack {
private func popToIndex(index: Int, animated: Bool) {
let viewController = viewControllers[index]
popToViewController(viewController, animated: animated)
present(collectioView, animated: false, completion: nil)
}
}
@@ -87,11 +104,11 @@ extension NavigationStack {
extension NavigationStack: UINavigationControllerDelegate {
public func navigationController(navigationController: UINavigationController,
willShowViewController viewController: UIViewController,
public func navigationController(_ navigationController: UINavigationController,
willShow viewController: UIViewController,
animated: Bool) {
stackDelegate?.navigationController?(navigationController, willShowViewController: viewController, animated: animated)
stackDelegate?.navigationController?(navigationController, willShow: viewController, animated: animated)
if navigationController.viewControllers.count > screens.count + 1 {
screens.append(view.takeScreenshot())
@@ -101,8 +118,8 @@ extension NavigationStack: UINavigationControllerDelegate {
}
}
public func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
stackDelegate?.navigationController?(navigationController, didShowViewController: viewController, animated: animated)
public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
stackDelegate?.navigationController?(navigationController, didShow: viewController, animated: animated)
}
// ???
@@ -114,20 +131,22 @@ extension NavigationStack: UINavigationControllerDelegate {
// optional public func navigationControllerPreferredInterfaceOrientationForPresentation(navigationController: UINavigationController) -> UIInterfaceOrientation
//
public func navigationController(navigationController: UINavigationController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
return stackDelegate?.navigationController?(navigationController, interactionControllerForAnimationController: animationController)
public func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
return stackDelegate?.navigationController?(navigationController, interactionControllerFor: animationController)
}
public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return stackDelegate?.navigationController?(navigationController, animationControllerForOperation: operation, fromViewController: fromVC, toViewController: toVC)
public func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return stackDelegate?.navigationController?(navigationController, animationControllerFor: operation, from: fromVC, to: toVC)
}
}
extension NavigationStack: CollectionStackViewControllerDelegate {
func controllerDidSelected(index index: Int) {
popToIndex(index, animated: false)
screens.removeRange(index..<screens.count)
func controllerDidSelected(index: Int) {
let newViewControllers = Array(viewControllers[0...index])
setViewControllers(newViewControllers, animated: false)
screens.removeSubrange(index..<screens.count)
}
}
@@ -137,12 +156,12 @@ extension UIView {
func takeScreenshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.mainScreen().scale)
drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
return image!
}
}
+89
View File
@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">NavigationStackDemo Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:C19NavigationStackDemo15NavigationStack"></a>
<a name="//apple_ref/swift/Class/NavigationStack" class="dashAnchor"></a>
<a class="token" href="#/s:C19NavigationStackDemo15NavigationStack">NavigationStack</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>UINavigationcontroller with animation show lists of UIViewControllers</p>
<a href="Classes/NavigationStack.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">NavigationStack</span><span class="p">:</span> <span class="kt">UINavigationController</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+259
View File
@@ -0,0 +1,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>NavigationStack Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/NavigationStack" class="dashAnchor"></a>
<a title="NavigationStack Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">NavigationStackDemo Reference</a>
<img id="carat" src="../img/carat.png" />
NavigationStack Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>NavigationStack</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">NavigationStack</span><span class="p">:</span> <span class="kt">UINavigationController</span></code></pre>
</div>
</div>
<p>UINavigationcontroller with animation show lists of UIViewControllers</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack16decelerationRateV12CoreGraphics7CGFloat"></a>
<a name="//apple_ref/swift/Property/decelerationRate" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack16decelerationRateV12CoreGraphics7CGFloat">decelerationRate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A floating-point value that determines the rate of deceleration after the user lifts their finger.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">@IBInspectable</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">decelerationRate</span><span class="p">:</span> <span class="kt">CGFloat</span> <span class="o">=</span> <span class="kt">UIScrollViewDecelerationRateNormal</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack7bgColorCSo7UIColor"></a>
<a name="//apple_ref/swift/Property/bgColor" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack7bgColorCSo7UIColor">bgColor</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The color to use for the background of the lists of UIViewcontrollers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">@IBInspectable</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">bgColor</span><span class="p">:</span> <span class="kt">UIColor</span> <span class="o">=</span> <span class="o">.</span><span class="nf">blackColor</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack6bgViewGSqCSo6UIView_"></a>
<a name="//apple_ref/swift/Property/bgView" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack6bgViewGSqCSo6UIView_">bgView</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The background UIView of the lists of UIViewcontrollers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">bgView</span><span class="p">:</span> <span class="kt">UIView</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack13stackDelegateXwGSqPSo30UINavigationControllerDelegate__"></a>
<a name="//apple_ref/swift/Property/stackDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack13stackDelegateXwGSqPSo30UINavigationControllerDelegate__">stackDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate of the navigation controller object. Use this instead delegate.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">weak</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">stackDelegate</span><span class="p">:</span> <span class="kt">UINavigationControllerDelegate</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC19NavigationStackDemo15NavigationStackcFT5coderCSo7NSCoder_GSqS0__"></a>
<a name="//apple_ref/swift/Method/init(coder:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC19NavigationStackDemo15NavigationStackcFT5coderCSo7NSCoder_GSqS0__">init(coder:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The initialized navigation controller object or nil if there was a problem initializing the object.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">required</span> <span class="nf">init</span><span class="p">?(</span><span class="n">coder</span> <span class="nv">aDecoder</span><span class="p">:</span> <span class="kt">NSCoder</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>aDecoder</em>
</code>
</td>
<td>
<div>
<p>aDecoder</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The initialized navigation controller object or nil if there was a problem initializing the object.</p>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:FC19NavigationStackDemo15NavigationStack15showControllersFT_T_"></a>
<a name="//apple_ref/swift/Method/showControllers()" class="dashAnchor"></a>
<a class="token" href="#/s:FC19NavigationStackDemo15NavigationStack15showControllersFT_T_">showControllers()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Show list of ViewControllers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">showControllers</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+200
View File
@@ -0,0 +1,200 @@
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
+331
View File
@@ -0,0 +1,331 @@
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 60px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: absolute;
bottom: 10px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
@@ -0,0 +1,20 @@
<?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>CFBundleIdentifier</key>
<string>com.jazzy.navigationstackdemo</string>
<key>CFBundleName</key>
<string>NavigationStackDemo</string>
<key>DocSetPlatformFamily</key>
<string>jazzy</string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>isJavaScriptEnabled</key>
<true/>
<key>DashDocSetFamily</key>
<string>dashtoc</string>
</dict>
</plist>
@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Classes Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="Classes Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">NavigationStackDemo Reference</a>
<img id="carat" src="img/carat.png" />
Classes Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>Classes</h1>
<p>The following classes are available globally.</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:C19NavigationStackDemo15NavigationStack"></a>
<a name="//apple_ref/swift/Class/NavigationStack" class="dashAnchor"></a>
<a class="token" href="#/s:C19NavigationStackDemo15NavigationStack">NavigationStack</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>UINavigationcontroller with animation show lists of UIViewControllers</p>
<a href="Classes/NavigationStack.html" class="slightly-smaller">See more</a>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">NavigationStack</span><span class="p">:</span> <span class="kt">UINavigationController</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>NavigationStack Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/NavigationStack" class="dashAnchor"></a>
<a title="NavigationStack Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">NavigationStackDemo Reference</a>
<img id="carat" src="../img/carat.png" />
NavigationStack Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>NavigationStack</h1>
<div class="declaration">
<div class="language">
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">NavigationStack</span><span class="p">:</span> <span class="kt">UINavigationController</span></code></pre>
</div>
</div>
<p>UINavigationcontroller with animation show lists of UIViewControllers</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack16decelerationRateV12CoreGraphics7CGFloat"></a>
<a name="//apple_ref/swift/Property/decelerationRate" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack16decelerationRateV12CoreGraphics7CGFloat">decelerationRate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A floating-point value that determines the rate of deceleration after the user lifts their finger.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">@IBInspectable</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">decelerationRate</span><span class="p">:</span> <span class="kt">CGFloat</span> <span class="o">=</span> <span class="kt">UIScrollViewDecelerationRateNormal</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack7bgColorCSo7UIColor"></a>
<a name="//apple_ref/swift/Property/bgColor" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack7bgColorCSo7UIColor">bgColor</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The color to use for the background of the lists of UIViewcontrollers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">@IBInspectable</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">bgColor</span><span class="p">:</span> <span class="kt">UIColor</span> <span class="o">=</span> <span class="o">.</span><span class="nf">blackColor</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack6bgViewGSqCSo6UIView_"></a>
<a name="//apple_ref/swift/Property/bgView" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack6bgViewGSqCSo6UIView_">bgView</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The background UIView of the lists of UIViewcontrollers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">bgView</span><span class="p">:</span> <span class="kt">UIView</span><span class="p">?</span> <span class="o">=</span> <span class="kc">nil</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:vC19NavigationStackDemo15NavigationStack13stackDelegateXwGSqPSo30UINavigationControllerDelegate__"></a>
<a name="//apple_ref/swift/Property/stackDelegate" class="dashAnchor"></a>
<a class="token" href="#/s:vC19NavigationStackDemo15NavigationStack13stackDelegateXwGSqPSo30UINavigationControllerDelegate__">stackDelegate</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The delegate of the navigation controller object. Use this instead delegate.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="k">weak</span> <span class="kd">public</span> <span class="k">var</span> <span class="nv">stackDelegate</span><span class="p">:</span> <span class="kt">UINavigationControllerDelegate</span><span class="p">?</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:FC19NavigationStackDemo15NavigationStackcFT5coderCSo7NSCoder_GSqS0__"></a>
<a name="//apple_ref/swift/Method/init(coder:)" class="dashAnchor"></a>
<a class="token" href="#/s:FC19NavigationStackDemo15NavigationStackcFT5coderCSo7NSCoder_GSqS0__">init(coder:)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The initialized navigation controller object or nil if there was a problem initializing the object.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">required</span> <span class="nf">init</span><span class="p">?(</span><span class="n">coder</span> <span class="nv">aDecoder</span><span class="p">:</span> <span class="kt">NSCoder</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>aDecoder</em>
</code>
</td>
<td>
<div>
<p>aDecoder</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The initialized navigation controller object or nil if there was a problem initializing the object.</p>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<ul>
<li class="item">
<div>
<code>
<a name="/s:FC19NavigationStackDemo15NavigationStack15showControllersFT_T_"></a>
<a name="//apple_ref/swift/Method/showControllers()" class="dashAnchor"></a>
<a class="token" href="#/s:FC19NavigationStackDemo15NavigationStack15showControllersFT_T_">showControllers()</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Show list of ViewControllers.</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">showControllers</span><span class="p">()</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,200 @@
/* Credit to https://gist.github.com/wataru420/2048287 */
.highlight {
/* Comment */
/* Error */
/* Keyword */
/* Operator */
/* Comment.Multiline */
/* Comment.Preproc */
/* Comment.Single */
/* Comment.Special */
/* Generic.Deleted */
/* Generic.Deleted.Specific */
/* Generic.Emph */
/* Generic.Error */
/* Generic.Heading */
/* Generic.Inserted */
/* Generic.Inserted.Specific */
/* Generic.Output */
/* Generic.Prompt */
/* Generic.Strong */
/* Generic.Subheading */
/* Generic.Traceback */
/* Keyword.Constant */
/* Keyword.Declaration */
/* Keyword.Pseudo */
/* Keyword.Reserved */
/* Keyword.Type */
/* Literal.Number */
/* Literal.String */
/* Name.Attribute */
/* Name.Builtin */
/* Name.Class */
/* Name.Constant */
/* Name.Entity */
/* Name.Exception */
/* Name.Function */
/* Name.Namespace */
/* Name.Tag */
/* Name.Variable */
/* Operator.Word */
/* Text.Whitespace */
/* Literal.Number.Float */
/* Literal.Number.Hex */
/* Literal.Number.Integer */
/* Literal.Number.Oct */
/* Literal.String.Backtick */
/* Literal.String.Char */
/* Literal.String.Doc */
/* Literal.String.Double */
/* Literal.String.Escape */
/* Literal.String.Heredoc */
/* Literal.String.Interpol */
/* Literal.String.Other */
/* Literal.String.Regex */
/* Literal.String.Single */
/* Literal.String.Symbol */
/* Name.Builtin.Pseudo */
/* Name.Variable.Class */
/* Name.Variable.Global */
/* Name.Variable.Instance */
/* Literal.Number.Integer.Long */ }
.highlight .c {
color: #999988;
font-style: italic; }
.highlight .err {
color: #a61717;
background-color: #e3d2d2; }
.highlight .k {
color: #000000;
font-weight: bold; }
.highlight .o {
color: #000000;
font-weight: bold; }
.highlight .cm {
color: #999988;
font-style: italic; }
.highlight .cp {
color: #999999;
font-weight: bold; }
.highlight .c1 {
color: #999988;
font-style: italic; }
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic; }
.highlight .gd {
color: #000000;
background-color: #ffdddd; }
.highlight .gd .x {
color: #000000;
background-color: #ffaaaa; }
.highlight .ge {
color: #000000;
font-style: italic; }
.highlight .gr {
color: #aa0000; }
.highlight .gh {
color: #999999; }
.highlight .gi {
color: #000000;
background-color: #ddffdd; }
.highlight .gi .x {
color: #000000;
background-color: #aaffaa; }
.highlight .go {
color: #888888; }
.highlight .gp {
color: #555555; }
.highlight .gs {
font-weight: bold; }
.highlight .gu {
color: #aaaaaa; }
.highlight .gt {
color: #aa0000; }
.highlight .kc {
color: #000000;
font-weight: bold; }
.highlight .kd {
color: #000000;
font-weight: bold; }
.highlight .kp {
color: #000000;
font-weight: bold; }
.highlight .kr {
color: #000000;
font-weight: bold; }
.highlight .kt {
color: #445588; }
.highlight .m {
color: #009999; }
.highlight .s {
color: #d14; }
.highlight .na {
color: #008080; }
.highlight .nb {
color: #0086B3; }
.highlight .nc {
color: #445588;
font-weight: bold; }
.highlight .no {
color: #008080; }
.highlight .ni {
color: #800080; }
.highlight .ne {
color: #990000;
font-weight: bold; }
.highlight .nf {
color: #990000; }
.highlight .nn {
color: #555555; }
.highlight .nt {
color: #000080; }
.highlight .nv {
color: #008080; }
.highlight .ow {
color: #000000;
font-weight: bold; }
.highlight .w {
color: #bbbbbb; }
.highlight .mf {
color: #009999; }
.highlight .mh {
color: #009999; }
.highlight .mi {
color: #009999; }
.highlight .mo {
color: #009999; }
.highlight .sb {
color: #d14; }
.highlight .sc {
color: #d14; }
.highlight .sd {
color: #d14; }
.highlight .s2 {
color: #d14; }
.highlight .se {
color: #d14; }
.highlight .sh {
color: #d14; }
.highlight .si {
color: #d14; }
.highlight .sx {
color: #d14; }
.highlight .sr {
color: #009926; }
.highlight .s1 {
color: #d14; }
.highlight .ss {
color: #990073; }
.highlight .bp {
color: #999999; }
.highlight .vc {
color: #008080; }
.highlight .vg {
color: #008080; }
.highlight .vi {
color: #008080; }
.highlight .il {
color: #009999; }
@@ -0,0 +1,331 @@
html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
background: transparent;
border: 0;
margin: 0;
outline: 0;
padding: 0;
vertical-align: baseline; }
body {
background-color: #f2f2f2;
font-family: Helvetica, freesans, Arial, sans-serif;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
word-wrap: break-word; }
h1, h2, h3 {
margin-top: 0.8em;
margin-bottom: 0.3em;
font-weight: 100;
color: black; }
h1 {
font-size: 2.5em; }
h2 {
font-size: 2em;
border-bottom: 1px solid #e2e2e2; }
h4 {
font-size: 13px;
line-height: 1.5;
margin-top: 21px; }
h5 {
font-size: 1.1em; }
h6 {
font-size: 1.1em;
color: #777; }
.section-name {
color: gray;
display: block;
font-family: Helvetica;
font-size: 22px;
font-weight: 100;
margin-bottom: 15px; }
pre, code {
font: 0.95em Menlo, monospace;
color: #777;
word-wrap: normal; }
p code, li code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px; }
a {
color: #0088cc;
text-decoration: none; }
ul {
padding-left: 15px; }
li {
line-height: 1.8em; }
img {
max-width: 100%; }
blockquote {
margin-left: 0;
padding: 0 10px;
border-left: 4px solid #ccc; }
.content-wrapper {
margin: 0 auto;
width: 980px; }
header {
font-size: 0.85em;
line-height: 26px;
background-color: #414141;
position: fixed;
width: 100%;
z-index: 1; }
header img {
padding-right: 6px;
vertical-align: -4px;
height: 16px; }
header a {
color: #fff; }
header p {
float: left;
color: #999; }
header .header-right {
float: right;
margin-left: 16px; }
#breadcrumbs {
background-color: #f2f2f2;
height: 27px;
padding-top: 17px;
position: fixed;
width: 100%;
z-index: 1;
margin-top: 26px; }
#breadcrumbs #carat {
height: 10px;
margin: 0 5px; }
.sidebar {
background-color: #f9f9f9;
border: 1px solid #e2e2e2;
overflow-y: auto;
overflow-x: hidden;
position: fixed;
top: 70px;
bottom: 0;
width: 230px;
word-wrap: normal; }
.nav-groups {
list-style-type: none;
background: #fff;
padding-left: 0; }
.nav-group-name {
border-bottom: 1px solid #e2e2e2;
font-size: 1.1em;
font-weight: 100;
padding: 15px 0 15px 20px; }
.nav-group-name > a {
color: #333; }
.nav-group-tasks {
margin-top: 5px; }
.nav-group-task {
font-size: 0.9em;
list-style-type: none; }
.nav-group-task a {
color: #888; }
.main-content {
background-color: #fff;
border: 1px solid #e2e2e2;
margin-left: 246px;
position: absolute;
overflow: hidden;
padding-bottom: 60px;
top: 70px;
width: 734px; }
.main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
margin-bottom: 1em; }
.main-content p {
line-height: 1.8em; }
.main-content section .section:first-child {
margin-top: 0;
padding-top: 0; }
.main-content section .task-group-section .task-group:first-of-type {
padding-top: 10px; }
.main-content section .task-group-section .task-group:first-of-type .section-name {
padding-top: 15px; }
.section {
padding: 0 25px; }
.highlight {
background-color: #eee;
padding: 10px 12px;
border: 1px solid #e2e2e2;
border-radius: 4px;
overflow-x: auto; }
.declaration .highlight {
overflow-x: initial;
padding: 0 40px 40px 0;
margin-bottom: -25px;
background-color: transparent;
border: none; }
.section-name {
margin: 0;
margin-left: 18px; }
.task-group-section {
padding-left: 6px;
border-top: 1px solid #e2e2e2; }
.task-group {
padding-top: 0px; }
.task-name-container a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item {
padding-top: 8px;
width: 100%;
list-style-type: none; }
.item a[name]:before {
content: "";
display: block;
padding-top: 70px;
margin: -70px 0 0; }
.item code {
background-color: transparent;
padding: 0; }
.item .token {
padding-left: 3px;
margin-left: 15px;
font-size: 11.9px; }
.item .declaration-note {
font-size: .85em;
color: gray;
font-style: italic; }
.pointer-container {
border-bottom: 1px solid #e2e2e2;
left: -23px;
padding-bottom: 13px;
position: relative;
width: 110%; }
.pointer {
background: #f9f9f9;
border-left: 1px solid #e2e2e2;
border-top: 1px solid #e2e2e2;
height: 12px;
left: 21px;
top: -7px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
width: 12px; }
.height-container {
display: none;
left: -25px;
padding: 0 25px;
position: relative;
width: 100%;
overflow: hidden; }
.height-container .section {
background: #f9f9f9;
border-bottom: 1px solid #e2e2e2;
left: -25px;
position: relative;
width: 100%;
padding-top: 10px;
padding-bottom: 5px; }
.aside, .language {
padding: 6px 12px;
margin: 12px 0;
border-left: 5px solid #dddddd;
overflow-y: hidden; }
.aside .aside-title, .language .aside-title {
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
padding-bottom: 0;
margin: 0;
color: #aaa;
-webkit-user-select: none; }
.aside p:last-child, .language p:last-child {
margin-bottom: 0; }
.language {
border-left: 5px solid #cde9f4; }
.language .aside-title {
color: #4b8afb; }
.aside-warning {
border-left: 5px solid #ff6666; }
.aside-warning .aside-title {
color: #ff0000; }
.graybox {
border-collapse: collapse;
width: 100%; }
.graybox p {
margin: 0;
word-break: break-word;
min-width: 50px; }
.graybox td {
border: 1px solid #e2e2e2;
padding: 5px 25px 5px 10px;
vertical-align: middle; }
.graybox tr td:first-of-type {
text-align: right;
padding: 7px;
vertical-align: top;
word-break: normal;
width: 40px; }
.slightly-smaller {
font-size: 0.9em; }
#footer {
position: absolute;
bottom: 10px;
margin-left: 25px; }
#footer p {
margin: 0;
color: #aaa;
font-size: 0.8em; }
html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
display: none; }
html.dash .main-content {
width: 980px;
margin-left: 0;
border: none;
width: 100%;
top: 0;
padding-bottom: 0; }
html.dash .height-container {
display: block; }
html.dash .item .token {
margin-left: 0; }
html.dash .content-wrapper {
width: auto; }
html.dash #footer {
position: static; }
Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,124 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>NavigationStackDemo Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="NavigationStackDemo Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">NavigationStackDemo Reference</a>
<img id="carat" src="img/carat.png" />
NavigationStackDemo Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<p><img src="https://raw.githubusercontent.com/Ramotion/navigation-stack/master/header.png" alt="header"></p>
<a href='#navigation_stack' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h1 id='navigation_stack'>navigation-stack</h1>
<p><a href="http://twitter.com/Ramotion"><img src="https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat" alt="Twitter"></a>
<a href="https://cocoapods.org/pods/Navigation-stack"><img src="https://img.shields.io/cocoapods/p/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="http://cocoapods.org/pods/Navigation-stack"><img src="https://img.shields.io/cocoapods/v/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="https://cdn.rawgit.com/Ramotion/navigation-stack/master/docs/index.html"><img src="https://img.shields.io/cocoapods/metrics/doc-percent/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="https://travis-ci.org/Ramotion/navigation-stack"><img src="https://img.shields.io/travis/Ramotion/navigation-stack.svg" alt="Travis"></a>
<a href="https://codebeat.co/projects/github-com-ramotion-navigation-stack"><img src="https://codebeat.co/badges/c322a039-b06b-46d9-bf40-e48cf0365b97" alt="codebeat badge"></a>
<a href="https://github.com/Ramotion/navigation-stack"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage compatible"></a></p>
<p><a href="https://dribbble.com/shots/2583175-Navigation-Stack-Swift-Open-Source">shot on dribbble</a>:
<img src="https://raw.githubusercontent.com/Ramotion/navigation-stack/master/Navigation-Stack.gif" alt="Animation"></p>
<p>The <a href="https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">iPhone mockup</a> available <a href="https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">here</a>.</p>
<a href='#requirements' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='requirements'>Requirements</h2>
<ul>
<li>iOS 9.0+</li>
<li>Xcode 7.3</li>
</ul>
<a href='#installation' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='installation'>Installation</h2>
<p>Just add the Source folder to your project.</p>
<p>or use <a href="https://cocoapods.org">CocoaPods</a> with Podfile:
<code>ruby
pod &#39;Navigation-stack&#39;
</code></p>
<p>or <a href="https://github.com/Carthage/Carthage">Carthage</a> users can simply add to their <code>Cartfile</code>:
<code>
github &quot;Ramotion/navigation-stack&quot;
</code></p>
<a href='#usage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='usage'>Usage</h2>
<p>1) YourNavigationController inherit from <code>NavigationStack</code></p>
<p>2) add code to root viewViewController</p>
<pre class="highlight swift"><code><span class="k">override</span> <span class="kd">func</span> <span class="nf">viewDidLoad</span><span class="p">()</span> <span class="p">{</span>
<span class="k">super</span><span class="o">.</span><span class="nf">viewDidLoad</span><span class="p">()</span>
<span class="n">navigationController</span><span class="o">!.</span><span class="n">interactivePopGestureRecognizer</span><span class="p">?</span><span class="o">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="k">self</span>
<span class="p">}</span>
</code></pre>
<pre class="highlight swift"><code><span class="kd">extension</span> <span class="kt">YourViewController</span><span class="p">:</span> <span class="kt">UIGestureRecognizerDelegate</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">gestureRecognizerShouldBegin</span><span class="p">(</span><span class="nv">gestureRecognizer</span><span class="p">:</span> <span class="kt">UIGestureRecognizer</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span> <span class="p">{</span>
<span class="k">if</span> <span class="n">navigationController</span><span class="p">?</span><span class="o">.</span><span class="n">viewControllers</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">2</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">navigationController</span> <span class="o">=</span> <span class="k">self</span><span class="o">.</span><span class="n">navigationController</span> <span class="k">as?</span> <span class="kt">NavigationStack</span> <span class="p">{</span>
<span class="n">navigationController</span><span class="o">.</span><span class="nf">showControllers</span><span class="p">()</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#licence' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='licence'>Licence</h2>
<p>Navigation-stack is released under the MIT license.
See <a href="./LICENSE">LICENSE</a> for details.</p>
<a href='#about' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='about'>About</h2>
<p>The project maintained by <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">app development agency</a> <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">Ramotion Inc.</a>
See our other <a href="https://github.com/ramotion">open-source projects</a> or <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">hire</a> us to design, develop, and grow your product.</p>
<p><a href="https://twitter.com/intent/tweet?text=https://github.com/ramotion/navigation-stack"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social" alt="Twitter URL"></a>
<a href="https://twitter.com/ramotion"><img src="https://img.shields.io/twitter/follow/ramotion.svg?style=social" alt="Twitter Follow"></a></p>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
@@ -0,0 +1,40 @@
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
NavigationStack.swift
public func navigationController(navigationController: UINavigationController,
willShowViewController viewController: UIViewController,
animated: Bool)
public func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool)
public func navigationController(navigationController: UINavigationController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
Binary file not shown.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+124
View File
@@ -0,0 +1,124 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>NavigationStackDemo Reference</title>
<link rel="stylesheet" type="text/css" href="css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="css/highlight.css" />
<meta charset='utf-8'>
<script src="js/jquery.min.js" defer></script>
<script src="js/jazzy.js" defer></script>
</head>
<body>
<a title="NavigationStackDemo Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="index.html">NavigationStackDemo Docs</a> (69% documented)</p>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="index.html">NavigationStackDemo Reference</a>
<img id="carat" src="img/carat.png" />
NavigationStackDemo Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="Classes/NavigationStack.html">NavigationStack</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<p><img src="https://raw.githubusercontent.com/Ramotion/navigation-stack/master/header.png" alt="header"></p>
<a href='#navigation_stack' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h1 id='navigation_stack'>navigation-stack</h1>
<p><a href="http://twitter.com/Ramotion"><img src="https://img.shields.io/badge/Twitter-@Ramotion-blue.svg?style=flat" alt="Twitter"></a>
<a href="https://cocoapods.org/pods/Navigation-stack"><img src="https://img.shields.io/cocoapods/p/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="http://cocoapods.org/pods/Navigation-stack"><img src="https://img.shields.io/cocoapods/v/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="https://cdn.rawgit.com/Ramotion/navigation-stack/master/docs/index.html"><img src="https://img.shields.io/cocoapods/metrics/doc-percent/Navigation-stack.svg" alt="CocoaPods"></a>
<a href="https://travis-ci.org/Ramotion/navigation-stack"><img src="https://img.shields.io/travis/Ramotion/navigation-stack.svg" alt="Travis"></a>
<a href="https://codebeat.co/projects/github-com-ramotion-navigation-stack"><img src="https://codebeat.co/badges/c322a039-b06b-46d9-bf40-e48cf0365b97" alt="codebeat badge"></a>
<a href="https://github.com/Ramotion/navigation-stack"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage compatible"></a></p>
<p><a href="https://dribbble.com/shots/2583175-Navigation-Stack-Swift-Open-Source">shot on dribbble</a>:
<img src="https://raw.githubusercontent.com/Ramotion/navigation-stack/master/Navigation-Stack.gif" alt="Animation"></p>
<p>The <a href="https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">iPhone mockup</a> available <a href="https://store.ramotion.com/product/iphone-6-mockups?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">here</a>.</p>
<a href='#requirements' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='requirements'>Requirements</h2>
<ul>
<li>iOS 9.0+</li>
<li>Xcode 7.3</li>
</ul>
<a href='#installation' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='installation'>Installation</h2>
<p>Just add the Source folder to your project.</p>
<p>or use <a href="https://cocoapods.org">CocoaPods</a> with Podfile:
<code>ruby
pod &#39;Navigation-stack&#39;
</code></p>
<p>or <a href="https://github.com/Carthage/Carthage">Carthage</a> users can simply add to their <code>Cartfile</code>:
<code>
github &quot;Ramotion/navigation-stack&quot;
</code></p>
<a href='#usage' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='usage'>Usage</h2>
<p>1) YourNavigationController inherit from <code>NavigationStack</code></p>
<p>2) add code to root viewViewController</p>
<pre class="highlight swift"><code><span class="k">override</span> <span class="kd">func</span> <span class="nf">viewDidLoad</span><span class="p">()</span> <span class="p">{</span>
<span class="k">super</span><span class="o">.</span><span class="nf">viewDidLoad</span><span class="p">()</span>
<span class="n">navigationController</span><span class="o">!.</span><span class="n">interactivePopGestureRecognizer</span><span class="p">?</span><span class="o">.</span><span class="n">delegate</span> <span class="o">=</span> <span class="k">self</span>
<span class="p">}</span>
</code></pre>
<pre class="highlight swift"><code><span class="kd">extension</span> <span class="kt">YourViewController</span><span class="p">:</span> <span class="kt">UIGestureRecognizerDelegate</span> <span class="p">{</span>
<span class="kd">func</span> <span class="nf">gestureRecognizerShouldBegin</span><span class="p">(</span><span class="nv">gestureRecognizer</span><span class="p">:</span> <span class="kt">UIGestureRecognizer</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span> <span class="p">{</span>
<span class="k">if</span> <span class="n">navigationController</span><span class="p">?</span><span class="o">.</span><span class="n">viewControllers</span><span class="o">.</span><span class="n">count</span> <span class="o">==</span> <span class="mi">2</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">if</span> <span class="k">let</span> <span class="nv">navigationController</span> <span class="o">=</span> <span class="k">self</span><span class="o">.</span><span class="n">navigationController</span> <span class="k">as?</span> <span class="kt">NavigationStack</span> <span class="p">{</span>
<span class="n">navigationController</span><span class="o">.</span><span class="nf">showControllers</span><span class="p">()</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<a href='#licence' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='licence'>Licence</h2>
<p>Navigation-stack is released under the MIT license.
See <a href="./LICENSE">LICENSE</a> for details.</p>
<a href='#about' class='anchor' aria-hidden=true><span class="header-anchor"></span></a><h2 id='about'>About</h2>
<p>The project maintained by <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">app development agency</a> <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">Ramotion Inc.</a>
See our other <a href="https://github.com/ramotion">open-source projects</a> or <a href="https://ramotion.com?utm_source=gthb&amp;utm_medium=special&amp;utm_campaign=navigation-stack">hire</a> us to design, develop, and grow your product.</p>
<p><a href="https://twitter.com/intent/tweet?text=https://github.com/ramotion/navigation-stack"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social" alt="Twitter URL"></a>
<a href="https://twitter.com/ramotion"><img src="https://img.shields.io/twitter/follow/ramotion.svg?style=social" alt="Twitter Follow"></a></p>
</section>
</section>
<section id="footer">
<p>&copy; 2016 <a class="link" href="https://github.com/Ramotion/navigation-stack" target="_blank" rel="external">AlexKalinkin</a>. All rights reserved. (Last updated: 2016-06-10)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external">jazzy ♪♫ v0.5.0</a>, a <a class="link" href="http://realm.io" target="_blank" rel="external">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</div>
</html>
+40
View File
@@ -0,0 +1,40 @@
window.jazzy = {'docset': false}
if (typeof window.dash != 'undefined') {
document.documentElement.className += ' dash'
window.jazzy.docset = true
}
if (navigator.userAgent.match(/xcode/i)) {
document.documentElement.className += ' xcode'
window.jazzy.docset = true
}
// On doc load, toggle the URL hash discussion if present
$(document).ready(function() {
if (!window.jazzy.docset) {
var linkToHash = $('a[href="' + window.location.hash +'"]');
linkToHash.trigger("click");
}
});
// On token click, toggle its discussion and animate token.marginLeft
$(".token").click(function(event) {
if (window.jazzy.docset) {
return;
}
var link = $(this);
var animationDuration = 300;
var tokenOffset = "15px";
var original = link.css('marginLeft') == tokenOffset;
link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
$content = link.parent().parent().next();
$content.slideToggle(animationDuration);
// Keeps the document from jumping to the hash.
var href = $(this).attr('href');
if (history.pushState) {
history.pushState({}, '', href);
} else {
location.hash = href;
}
event.preventDefault();
});
Vendored Executable
+4
View File
File diff suppressed because one or more lines are too long
+7
View File
@@ -0,0 +1,7 @@
NavigationStack.swift
public func navigationController(navigationController: UINavigationController,
willShowViewController viewController: UIViewController,
animated: Bool)
public func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool)
public func navigationController(navigationController: UINavigationController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?