├── .gitignore
├── .swift-version
├── .travis.yml
├── Android_Java@2x.png
├── Android_Kotlin@2x.png
├── AppStore@2x.png
├── CONTRIBUTING.md
├── Download_on_the_App_Store_Badge_US-UK_135x40.png
├── LICENSE
├── Navigation-stack.podspec
├── NavigationStack
├── Info.plist
└── NavigationStack.h
├── NavigationStackDemo.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcshareddata
│ └── xcschemes
│ └── NavigationStack.xcscheme
├── NavigationStackDemo
├── AppDelegate.swift
├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Ramotion.png
│ │ ├── icon-120.png
│ │ ├── icon-152.png
│ │ ├── icon-167.png
│ │ ├── icon-180.png
│ │ ├── icon-20.png
│ │ ├── icon-29.png
│ │ ├── icon-40.png
│ │ ├── icon-58.png
│ │ ├── icon-60.png
│ │ ├── icon-76.png
│ │ ├── icon-80.png
│ │ └── icon-87.png
│ ├── Contents.json
│ ├── Fifth
│ │ ├── ButtonBorder.imageset
│ │ │ ├── ButtonBorder.pdf
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── Fifth-Icon-0.imageset
│ │ │ ├── Contents.json
│ │ │ └── Fifth-Icon-0.png
│ │ ├── Fifth-Icon-1.imageset
│ │ │ ├── Contents.json
│ │ │ └── Fifth-Icon-1.png
│ │ ├── Fifth-Icon-2.imageset
│ │ │ ├── Contents.json
│ │ │ └── Fifth-Icon-2.png
│ │ └── Fifth-Icon-3.imageset
│ │ │ ├── Contents.json
│ │ │ └── Fifth-Icon-3.png
│ ├── First
│ │ ├── Contents.json
│ │ └── icons
│ │ │ ├── Arrow.imageset
│ │ │ ├── Arrow.pdf
│ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── icon-0.imageset
│ │ │ ├── Contents.json
│ │ │ └── icon-0.png
│ │ │ ├── icon-1.imageset
│ │ │ ├── Contents.json
│ │ │ └── icon-1.png
│ │ │ ├── icon-2.imageset
│ │ │ ├── Contents.json
│ │ │ └── icon-2.png
│ │ │ ├── icon-3.imageset
│ │ │ ├── Contents.json
│ │ │ └── icon-3.png
│ │ │ └── icon-4.imageset
│ │ │ ├── Contents.json
│ │ │ └── icon-4.png
│ ├── Four
│ │ ├── Contents.json
│ │ ├── GirlsBig.imageset
│ │ │ ├── Contents.json
│ │ │ └── GirlsBig.png
│ │ ├── NYbg.imageset
│ │ │ ├── Contents.json
│ │ │ └── NYbg.png
│ │ ├── faceIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── faceIcon.png
│ │ └── foodIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── foodIcon.png
│ ├── Second
│ │ ├── BridgeImage.imageset
│ │ │ ├── BridgeImage.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── DotsIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── DotsIcon.pdf
│ │ ├── HeadnImage.imageset
│ │ │ ├── Contents.json
│ │ │ └── HeadnImage.png
│ │ ├── PCImage.imageset
│ │ │ ├── Contents.json
│ │ │ └── PCImage.png
│ │ ├── PersonIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── PersonIcon.pdf
│ │ ├── PinIcon.imageset
│ │ │ ├── Contents.json
│ │ │ └── PinIcon.pdf
│ │ ├── RamotionBig.imageset
│ │ │ ├── Contents.json
│ │ │ └── RamotionBig.pdf
│ │ └── backButton.imageset
│ │ │ ├── Contents.json
│ │ │ └── backButton.pdf
│ ├── Third
│ │ ├── BGmessage.imageset
│ │ │ ├── BGmessage.pdf
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── girsl.imageset
│ │ │ ├── Contents.json
│ │ │ └── girsl.png
│ ├── arrow.imageset
│ │ ├── Contents.json
│ │ └── arrow.pdf
│ └── back.imageset
│ │ ├── Contents.json
│ │ └── back.pdf
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Info.plist
└── ViewControllers
│ ├── FifthViewController
│ └── FifthViewController.swift
│ ├── FirstViewController
│ └── FirstTableViewController.swift
│ ├── SecondViewController
│ └── SecondViewController.swift
│ └── ThirdViewController
│ └── ThirdViewController.swift
├── Package.swift
├── README.md
├── React Native@2x.png
├── Source
├── CollectionView
│ ├── Cell
│ │ └── CollectionViewStackCell.swift
│ ├── CollectionStackViewController.swift
│ └── FlowLayout
│ │ └── CollectionViewStackFlowLayout.swift
├── Fonts
│ ├── OpenSans-Light.ttf
│ ├── OpenSans-Regular.ttf
│ └── OpenSans-Semibold.ttf
└── NavigationStack.swift
├── Swift@2x.png
├── contact_our_team@2x.png
├── docs
├── Classes.html
├── Classes
│ └── NavigationStack.html
├── css
│ ├── highlight.css
│ └── jazzy.css
├── docsets
│ ├── NavigationStackDemo.docset
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── Documents
│ │ │ ├── Classes.html
│ │ │ ├── Classes
│ │ │ │ └── NavigationStack.html
│ │ │ ├── css
│ │ │ │ ├── highlight.css
│ │ │ │ └── jazzy.css
│ │ │ ├── img
│ │ │ │ ├── carat.png
│ │ │ │ ├── dash.png
│ │ │ │ └── gh.png
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ │ ├── jazzy.js
│ │ │ │ └── jquery.min.js
│ │ │ └── undocumented.txt
│ │ │ └── docSet.dsidx
│ └── NavigationStackDemo.tgz
├── img
│ ├── carat.png
│ ├── dash.png
│ └── gh.png
├── index.html
├── js
│ ├── jazzy.js
│ └── jquery.min.js
└── undocumented.txt
├── header.png
└── navigation-stack.gif
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata
19 |
20 | ## Other
21 | *.xccheckout
22 | *.moved-aside
23 | *.xcuserstate
24 | *.xcscmblueprint
25 |
26 | ## Obj-C/Swift specific
27 | *.hmap
28 | *.ipa
29 |
30 | ## Playgrounds
31 | timeline.xctimeline
32 | playground.xcworkspace
33 |
34 | # Swift Package Manager
35 | #
36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
37 | # Packages/
38 | .build/
39 |
40 | # CocoaPods
41 | #
42 | # We recommend against adding the Pods directory to your .gitignore. However
43 | # you should judge for yourself, the pros and cons are mentioned at:
44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
45 | #
46 | # Pods/
47 |
48 | # Carthage
49 | #
50 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
51 | # Carthage/Checkouts
52 |
53 | Carthage/Build
54 |
55 | # fastlane
56 | #
57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
58 | # screenshots whenever they are needed.
59 | # For more information about the recommended setup visit:
60 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
61 |
62 | fastlane/report.xml
63 | fastlane/screenshots
64 |
--------------------------------------------------------------------------------
/.swift-version:
--------------------------------------------------------------------------------
1 | 4.2
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | osx_image: xcode9.2
2 | language: objective-c
3 |
4 | xcode_project: NavigationStackDemo.xcodeproj
5 | xcode_scheme: NavigationStack
6 | xcode_sdk: iphonesimulator11.2
7 |
8 | # whitelist
9 | branches:
10 | only:
11 | - master
12 |
--------------------------------------------------------------------------------
/Android_Java@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Android_Java@2x.png
--------------------------------------------------------------------------------
/Android_Kotlin@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Android_Kotlin@2x.png
--------------------------------------------------------------------------------
/AppStore@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/AppStore@2x.png
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to a Project
2 | Now that you’ve found the material for understanding the project, here is how you can take action.
3 |
4 | ### Create an Issue
5 |
6 | If you find a bug in a project you’re using (and you don’t know how to fix it), have trouble following the documentation or have a question about the project – create an issue! There’s nothing to it and whatever issue you’re having, you’re likely not the only one, so others will find your issue helpful, too. For more information on how issues work, check out our Issues guide.
7 |
8 | #### Issues Pro Tips
9 |
10 | Check existing issues for your issue. Duplicating an issue is slower for both parties so search through open and closed issues to see if what you’re running into has been addressed already.
11 | Be clear about what your problem is: what was the expected outcome, what happened instead? Detail how someone else can recreate the problem.
12 | Link to demos recreating the problem on things like JSFiddle or CodePen.
13 | Include system details like what the browser, library or operating system you’re using and its version.
14 | Paste error output or logs in your issue or in a Gist. If pasting them in the issue, wrap it in three backticks: ``` so that it renders nicely.
15 |
16 | ### Pull Request
17 |
18 | If you’re able to patch the bug or add the feature yourself – fantastic, make a pull request with the code! Be sure you’ve read any documents on contributing, understand the license and have signed a CLA if required. Once you’ve submitted a pull request the maintainer(s) can compare your branch to the existing one and decide whether or not to incorporate (pull in) your changes.
19 |
20 | #### Pull Request Pro Tips
21 |
22 | Fork the repository and clone it locally. Connect your local to the original ‘upstream’ repository by adding it as a remote. Pull in changes from ‘upstream’ often so that you stay up to date so that when you submit your pull request, merge conflicts will be less likely. See more detailed instructions here.
23 | Create a branch for your edits.
24 | Be clear about what problem is occurring and how someone can recreate that problem or why your feature will help. Then be equally as clear about the steps you took to make your changes.
25 | It’s best to test. Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes don’t break the existing project.
26 | Include screenshots of the before and after if your changes include differences in HTML/CSS. Drag and drop the images into the body of your pull request.
27 | Contribute in the style of the project to the best of your abilities. This may mean using indents, semi colons or comments differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain in the future.
28 |
29 | #### Open Pull Requests
30 |
31 | Once you’ve opened a pull request a discussion will start around your proposed changes. Other contributors and users may chime in, but ultimately the decision is made by the maintainer(s). You may be asked to make some changes to your pull request, if so, add more commits to your branch and push them – they’ll automatically go into the existing pull request.
32 |
33 | If your pull request is merged – great! If it is not, no sweat, it may not be what the project maintainer had in mind, or they were already working on it. This happens, so our recommendation is to take any feedback you’ve received and go forth and pull request again – or create your own open source project.
--------------------------------------------------------------------------------
/Download_on_the_App_Store_Badge_US-UK_135x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Download_on_the_App_Store_Badge_US-UK_135x40.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Ramotion
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Navigation-stack.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Navigation-stack'
3 | s.version = '3.1.0'
4 | s.summary = 'Show list of navigationControllers'
5 | s.license = 'MIT'
6 | s.homepage = 'https://github.com/Ramotion/navigation-stack'
7 | s.author = { 'Juri Vasylenko' => 'juri.v@ramotion.com' }
8 | s.ios.deployment_target = '10.0'
9 | s.source = { :git => 'https://github.com/Ramotion/navigation-stack.git', :tag => s.version.to_s }
10 | s.source_files = 'Source/**/*.swift'
11 | end
12 |
--------------------------------------------------------------------------------
/NavigationStack/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/NavigationStack/NavigationStack.h:
--------------------------------------------------------------------------------
1 | //
2 | // NavigationStack.h
3 | // NavigationStack
4 | //
5 | // Created by Alex K. on 01/06/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for NavigationStack.
12 | FOUNDATION_EXPORT double NavigationStackVersionNumber;
13 |
14 | //! Project version string for NavigationStack.
15 | FOUNDATION_EXPORT const unsigned char NavigationStackVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/NavigationStackDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 47;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 840D54101C8705FA00555605 /* FirstTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D540F1C8705FA00555605 /* FirstTableViewController.swift */; };
11 | 84368B3F1CFEDDB1007C4278 /* NavigationStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 84368B3E1CFEDDB1007C4278 /* NavigationStack.h */; settings = {ATTRIBUTES = (Public, ); }; };
12 | 84368B431CFEDDB1007C4278 /* NavigationStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */; };
13 | 84368B441CFEDDB1007C4278 /* NavigationStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
14 | 84368B491CFEDDBE007C4278 /* NavigationStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1261C80250A00B53B4E /* NavigationStack.swift */; };
15 | 84368B4A1CFEDDC5007C4278 /* CollectionStackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1231C80250A00B53B4E /* CollectionStackViewController.swift */; };
16 | 84368B4B1CFEDDC9007C4278 /* CollectionViewStackFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1221C80250A00B53B4E /* CollectionViewStackFlowLayout.swift */; };
17 | 84368B4C1CFEDDCE007C4278 /* CollectionViewStackCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1201C80250A00B53B4E /* CollectionViewStackCell.swift */; };
18 | 8444B0F01C80238500B53B4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B0EF1C80238500B53B4E /* AppDelegate.swift */; };
19 | 8444B0F51C80238500B53B4E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8444B0F31C80238500B53B4E /* Main.storyboard */; };
20 | 8444B0F71C80238500B53B4E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8444B0F61C80238500B53B4E /* Assets.xcassets */; };
21 | 8444B0FA1C80238500B53B4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8444B0F81C80238500B53B4E /* LaunchScreen.storyboard */; };
22 | 8444B1271C80250A00B53B4E /* CollectionViewStackCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1201C80250A00B53B4E /* CollectionViewStackCell.swift */; };
23 | 8444B1281C80250A00B53B4E /* CollectionViewStackFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1221C80250A00B53B4E /* CollectionViewStackFlowLayout.swift */; };
24 | 8444B1291C80250A00B53B4E /* CollectionStackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1231C80250A00B53B4E /* CollectionStackViewController.swift */; };
25 | 8444B12B1C80250A00B53B4E /* NavigationStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8444B1261C80250A00B53B4E /* NavigationStack.swift */; };
26 | 846302891C8ABC340015CD81 /* OpenSans-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 846302881C8ABC340015CD81 /* OpenSans-Regular.ttf */; };
27 | 847B0FA91C846B8100E2C54D /* FifthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847B0FA81C846B8100E2C54D /* FifthViewController.swift */; };
28 | 847B0FAD1C846B9200E2C54D /* ThirdViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847B0FAC1C846B9200E2C54D /* ThirdViewController.swift */; };
29 | 847B0FB11C846C6100E2C54D /* SecondViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847B0FB01C846C6100E2C54D /* SecondViewController.swift */; };
30 | 84B820991C8AE00E00939EE7 /* OpenSans-Semibold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 84B820981C8AE00E00939EE7 /* OpenSans-Semibold.ttf */; };
31 | 84E8E5A61C89D2C800A8B640 /* OpenSans-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 84E8E5A51C89D2C800A8B640 /* OpenSans-Light.ttf */; };
32 | /* End PBXBuildFile section */
33 |
34 | /* Begin PBXContainerItemProxy section */
35 | 84368B411CFEDDB1007C4278 /* PBXContainerItemProxy */ = {
36 | isa = PBXContainerItemProxy;
37 | containerPortal = 8444B0E41C80238500B53B4E /* Project object */;
38 | proxyType = 1;
39 | remoteGlobalIDString = 84368B3B1CFEDDB1007C4278;
40 | remoteInfo = NavigationStack;
41 | };
42 | /* End PBXContainerItemProxy section */
43 |
44 | /* Begin PBXCopyFilesBuildPhase section */
45 | 84368B481CFEDDB1007C4278 /* Embed Frameworks */ = {
46 | isa = PBXCopyFilesBuildPhase;
47 | buildActionMask = 2147483647;
48 | dstPath = "";
49 | dstSubfolderSpec = 10;
50 | files = (
51 | 84368B441CFEDDB1007C4278 /* NavigationStack.framework in Embed Frameworks */,
52 | );
53 | name = "Embed Frameworks";
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | /* End PBXCopyFilesBuildPhase section */
57 |
58 | /* Begin PBXFileReference section */
59 | 840D540F1C8705FA00555605 /* FirstTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirstTableViewController.swift; sourceTree = ""; };
60 | 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NavigationStack.framework; sourceTree = BUILT_PRODUCTS_DIR; };
61 | 84368B3E1CFEDDB1007C4278 /* NavigationStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NavigationStack.h; sourceTree = ""; };
62 | 84368B401CFEDDB1007C4278 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
63 | 8444B0EC1C80238500B53B4E /* Navigation Stack.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Navigation Stack.app"; sourceTree = BUILT_PRODUCTS_DIR; };
64 | 8444B0EF1C80238500B53B4E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
65 | 8444B0F41C80238500B53B4E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
66 | 8444B0F61C80238500B53B4E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
67 | 8444B0F91C80238500B53B4E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
68 | 8444B0FB1C80238500B53B4E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
69 | 8444B1201C80250A00B53B4E /* CollectionViewStackCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewStackCell.swift; sourceTree = ""; };
70 | 8444B1221C80250A00B53B4E /* CollectionViewStackFlowLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewStackFlowLayout.swift; sourceTree = ""; };
71 | 8444B1231C80250A00B53B4E /* CollectionStackViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionStackViewController.swift; sourceTree = ""; };
72 | 8444B1261C80250A00B53B4E /* NavigationStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationStack.swift; sourceTree = ""; };
73 | 846302881C8ABC340015CD81 /* OpenSans-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "OpenSans-Regular.ttf"; sourceTree = ""; };
74 | 847B0FA81C846B8100E2C54D /* FifthViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FifthViewController.swift; sourceTree = ""; };
75 | 847B0FAC1C846B9200E2C54D /* ThirdViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThirdViewController.swift; sourceTree = ""; };
76 | 847B0FB01C846C6100E2C54D /* SecondViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecondViewController.swift; sourceTree = ""; };
77 | 84B820981C8AE00E00939EE7 /* OpenSans-Semibold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "OpenSans-Semibold.ttf"; sourceTree = ""; };
78 | 84E8E5A51C89D2C800A8B640 /* OpenSans-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "OpenSans-Light.ttf"; sourceTree = ""; };
79 | /* End PBXFileReference section */
80 |
81 | /* Begin PBXFrameworksBuildPhase section */
82 | 84368B381CFEDDB1007C4278 /* Frameworks */ = {
83 | isa = PBXFrameworksBuildPhase;
84 | buildActionMask = 2147483647;
85 | files = (
86 | );
87 | runOnlyForDeploymentPostprocessing = 0;
88 | };
89 | 8444B0E91C80238500B53B4E /* Frameworks */ = {
90 | isa = PBXFrameworksBuildPhase;
91 | buildActionMask = 2147483647;
92 | files = (
93 | 84368B431CFEDDB1007C4278 /* NavigationStack.framework in Frameworks */,
94 | );
95 | runOnlyForDeploymentPostprocessing = 0;
96 | };
97 | /* End PBXFrameworksBuildPhase section */
98 |
99 | /* Begin PBXGroup section */
100 | 84368B3D1CFEDDB1007C4278 /* NavigationStack */ = {
101 | isa = PBXGroup;
102 | children = (
103 | 84368B3E1CFEDDB1007C4278 /* NavigationStack.h */,
104 | 84368B401CFEDDB1007C4278 /* Info.plist */,
105 | );
106 | path = NavigationStack;
107 | sourceTree = "";
108 | };
109 | 8444B0E31C80238500B53B4E = {
110 | isa = PBXGroup;
111 | children = (
112 | 8444B0EE1C80238500B53B4E /* NavigationStackDemo */,
113 | 84368B3D1CFEDDB1007C4278 /* NavigationStack */,
114 | 8444B0ED1C80238500B53B4E /* Products */,
115 | );
116 | sourceTree = "";
117 | };
118 | 8444B0ED1C80238500B53B4E /* Products */ = {
119 | isa = PBXGroup;
120 | children = (
121 | 8444B0EC1C80238500B53B4E /* Navigation Stack.app */,
122 | 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */,
123 | );
124 | name = Products;
125 | sourceTree = "";
126 | };
127 | 8444B0EE1C80238500B53B4E /* NavigationStackDemo */ = {
128 | isa = PBXGroup;
129 | children = (
130 | 847B0F851C842EAD00E2C54D /* ViewControllers */,
131 | 8444B11D1C80247500B53B4E /* Source */,
132 | 8444B0EF1C80238500B53B4E /* AppDelegate.swift */,
133 | 8444B0F31C80238500B53B4E /* Main.storyboard */,
134 | 8444B0F61C80238500B53B4E /* Assets.xcassets */,
135 | 8444B0F81C80238500B53B4E /* LaunchScreen.storyboard */,
136 | 8444B0FB1C80238500B53B4E /* Info.plist */,
137 | );
138 | path = NavigationStackDemo;
139 | sourceTree = "";
140 | };
141 | 8444B11D1C80247500B53B4E /* Source */ = {
142 | isa = PBXGroup;
143 | children = (
144 | 84E8E5A41C89D28C00A8B640 /* Fonts */,
145 | 8444B11E1C80250A00B53B4E /* CollectionView */,
146 | 8444B1261C80250A00B53B4E /* NavigationStack.swift */,
147 | );
148 | name = Source;
149 | path = ../Source;
150 | sourceTree = "";
151 | };
152 | 8444B11E1C80250A00B53B4E /* CollectionView */ = {
153 | isa = PBXGroup;
154 | children = (
155 | 8444B11F1C80250A00B53B4E /* Cell */,
156 | 8444B1211C80250A00B53B4E /* FlowLayout */,
157 | 8444B1231C80250A00B53B4E /* CollectionStackViewController.swift */,
158 | );
159 | path = CollectionView;
160 | sourceTree = "";
161 | };
162 | 8444B11F1C80250A00B53B4E /* Cell */ = {
163 | isa = PBXGroup;
164 | children = (
165 | 8444B1201C80250A00B53B4E /* CollectionViewStackCell.swift */,
166 | );
167 | path = Cell;
168 | sourceTree = "";
169 | };
170 | 8444B1211C80250A00B53B4E /* FlowLayout */ = {
171 | isa = PBXGroup;
172 | children = (
173 | 8444B1221C80250A00B53B4E /* CollectionViewStackFlowLayout.swift */,
174 | );
175 | path = FlowLayout;
176 | sourceTree = "";
177 | };
178 | 847B0F851C842EAD00E2C54D /* ViewControllers */ = {
179 | isa = PBXGroup;
180 | children = (
181 | 847B0F8F1C844B4F00E2C54D /* FirstViewController */,
182 | 847B0F901C844BBC00E2C54D /* SecondViewController */,
183 | 847B0F951C84618300E2C54D /* ThirdViewController */,
184 | 847B0FA31C84690E00E2C54D /* FifthViewController */,
185 | );
186 | path = ViewControllers;
187 | sourceTree = "";
188 | };
189 | 847B0F8F1C844B4F00E2C54D /* FirstViewController */ = {
190 | isa = PBXGroup;
191 | children = (
192 | 840D540F1C8705FA00555605 /* FirstTableViewController.swift */,
193 | );
194 | path = FirstViewController;
195 | sourceTree = "";
196 | };
197 | 847B0F901C844BBC00E2C54D /* SecondViewController */ = {
198 | isa = PBXGroup;
199 | children = (
200 | 847B0FB01C846C6100E2C54D /* SecondViewController.swift */,
201 | );
202 | path = SecondViewController;
203 | sourceTree = "";
204 | };
205 | 847B0F951C84618300E2C54D /* ThirdViewController */ = {
206 | isa = PBXGroup;
207 | children = (
208 | 847B0FAC1C846B9200E2C54D /* ThirdViewController.swift */,
209 | );
210 | path = ThirdViewController;
211 | sourceTree = "";
212 | };
213 | 847B0FA31C84690E00E2C54D /* FifthViewController */ = {
214 | isa = PBXGroup;
215 | children = (
216 | 847B0FA81C846B8100E2C54D /* FifthViewController.swift */,
217 | );
218 | path = FifthViewController;
219 | sourceTree = "";
220 | };
221 | 84E8E5A41C89D28C00A8B640 /* Fonts */ = {
222 | isa = PBXGroup;
223 | children = (
224 | 84B820981C8AE00E00939EE7 /* OpenSans-Semibold.ttf */,
225 | 846302881C8ABC340015CD81 /* OpenSans-Regular.ttf */,
226 | 84E8E5A51C89D2C800A8B640 /* OpenSans-Light.ttf */,
227 | );
228 | path = Fonts;
229 | sourceTree = "";
230 | };
231 | /* End PBXGroup section */
232 |
233 | /* Begin PBXHeadersBuildPhase section */
234 | 84368B391CFEDDB1007C4278 /* Headers */ = {
235 | isa = PBXHeadersBuildPhase;
236 | buildActionMask = 2147483647;
237 | files = (
238 | 84368B3F1CFEDDB1007C4278 /* NavigationStack.h in Headers */,
239 | );
240 | runOnlyForDeploymentPostprocessing = 0;
241 | };
242 | /* End PBXHeadersBuildPhase section */
243 |
244 | /* Begin PBXNativeTarget section */
245 | 84368B3B1CFEDDB1007C4278 /* NavigationStack */ = {
246 | isa = PBXNativeTarget;
247 | buildConfigurationList = 84368B471CFEDDB1007C4278 /* Build configuration list for PBXNativeTarget "NavigationStack" */;
248 | buildPhases = (
249 | 84368B371CFEDDB1007C4278 /* Sources */,
250 | 84368B381CFEDDB1007C4278 /* Frameworks */,
251 | 84368B391CFEDDB1007C4278 /* Headers */,
252 | 84368B3A1CFEDDB1007C4278 /* Resources */,
253 | );
254 | buildRules = (
255 | );
256 | dependencies = (
257 | );
258 | name = NavigationStack;
259 | productName = NavigationStack;
260 | productReference = 84368B3C1CFEDDB1007C4278 /* NavigationStack.framework */;
261 | productType = "com.apple.product-type.framework";
262 | };
263 | 8444B0EB1C80238500B53B4E /* NavigationStackDemo */ = {
264 | isa = PBXNativeTarget;
265 | buildConfigurationList = 8444B1141C80238500B53B4E /* Build configuration list for PBXNativeTarget "NavigationStackDemo" */;
266 | buildPhases = (
267 | 8444B0E81C80238500B53B4E /* Sources */,
268 | 8444B0E91C80238500B53B4E /* Frameworks */,
269 | 8444B0EA1C80238500B53B4E /* Resources */,
270 | 84368B481CFEDDB1007C4278 /* Embed Frameworks */,
271 | );
272 | buildRules = (
273 | );
274 | dependencies = (
275 | 84368B421CFEDDB1007C4278 /* PBXTargetDependency */,
276 | );
277 | name = NavigationStackDemo;
278 | productName = NavigationStackDemo;
279 | productReference = 8444B0EC1C80238500B53B4E /* Navigation Stack.app */;
280 | productType = "com.apple.product-type.application";
281 | };
282 | /* End PBXNativeTarget section */
283 |
284 | /* Begin PBXProject section */
285 | 8444B0E41C80238500B53B4E /* Project object */ = {
286 | isa = PBXProject;
287 | attributes = {
288 | LastSwiftUpdateCheck = 0720;
289 | LastUpgradeCheck = 1110;
290 | ORGANIZATIONNAME = "Alex K.";
291 | TargetAttributes = {
292 | 84368B3B1CFEDDB1007C4278 = {
293 | CreatedOnToolsVersion = 7.3.1;
294 | DevelopmentTeam = 34MUF9YXTA;
295 | LastSwiftMigration = 1020;
296 | };
297 | 8444B0EB1C80238500B53B4E = {
298 | CreatedOnToolsVersion = 7.2.1;
299 | DevelopmentTeam = 34MUF9YXTA;
300 | LastSwiftMigration = 1020;
301 | };
302 | };
303 | };
304 | buildConfigurationList = 8444B0E71C80238500B53B4E /* Build configuration list for PBXProject "NavigationStackDemo" */;
305 | compatibilityVersion = "Xcode 6.3";
306 | developmentRegion = en;
307 | hasScannedForEncodings = 0;
308 | knownRegions = (
309 | en,
310 | Base,
311 | );
312 | mainGroup = 8444B0E31C80238500B53B4E;
313 | productRefGroup = 8444B0ED1C80238500B53B4E /* Products */;
314 | projectDirPath = "";
315 | projectRoot = "";
316 | targets = (
317 | 8444B0EB1C80238500B53B4E /* NavigationStackDemo */,
318 | 84368B3B1CFEDDB1007C4278 /* NavigationStack */,
319 | );
320 | };
321 | /* End PBXProject section */
322 |
323 | /* Begin PBXResourcesBuildPhase section */
324 | 84368B3A1CFEDDB1007C4278 /* Resources */ = {
325 | isa = PBXResourcesBuildPhase;
326 | buildActionMask = 2147483647;
327 | files = (
328 | );
329 | runOnlyForDeploymentPostprocessing = 0;
330 | };
331 | 8444B0EA1C80238500B53B4E /* Resources */ = {
332 | isa = PBXResourcesBuildPhase;
333 | buildActionMask = 2147483647;
334 | files = (
335 | 84B820991C8AE00E00939EE7 /* OpenSans-Semibold.ttf in Resources */,
336 | 846302891C8ABC340015CD81 /* OpenSans-Regular.ttf in Resources */,
337 | 8444B0FA1C80238500B53B4E /* LaunchScreen.storyboard in Resources */,
338 | 8444B0F71C80238500B53B4E /* Assets.xcassets in Resources */,
339 | 84E8E5A61C89D2C800A8B640 /* OpenSans-Light.ttf in Resources */,
340 | 8444B0F51C80238500B53B4E /* Main.storyboard in Resources */,
341 | );
342 | runOnlyForDeploymentPostprocessing = 0;
343 | };
344 | /* End PBXResourcesBuildPhase section */
345 |
346 | /* Begin PBXSourcesBuildPhase section */
347 | 84368B371CFEDDB1007C4278 /* Sources */ = {
348 | isa = PBXSourcesBuildPhase;
349 | buildActionMask = 2147483647;
350 | files = (
351 | 84368B491CFEDDBE007C4278 /* NavigationStack.swift in Sources */,
352 | 84368B4C1CFEDDCE007C4278 /* CollectionViewStackCell.swift in Sources */,
353 | 84368B4B1CFEDDC9007C4278 /* CollectionViewStackFlowLayout.swift in Sources */,
354 | 84368B4A1CFEDDC5007C4278 /* CollectionStackViewController.swift in Sources */,
355 | );
356 | runOnlyForDeploymentPostprocessing = 0;
357 | };
358 | 8444B0E81C80238500B53B4E /* Sources */ = {
359 | isa = PBXSourcesBuildPhase;
360 | buildActionMask = 2147483647;
361 | files = (
362 | 847B0FB11C846C6100E2C54D /* SecondViewController.swift in Sources */,
363 | 847B0FA91C846B8100E2C54D /* FifthViewController.swift in Sources */,
364 | 8444B1271C80250A00B53B4E /* CollectionViewStackCell.swift in Sources */,
365 | 8444B1291C80250A00B53B4E /* CollectionStackViewController.swift in Sources */,
366 | 840D54101C8705FA00555605 /* FirstTableViewController.swift in Sources */,
367 | 8444B1281C80250A00B53B4E /* CollectionViewStackFlowLayout.swift in Sources */,
368 | 847B0FAD1C846B9200E2C54D /* ThirdViewController.swift in Sources */,
369 | 8444B12B1C80250A00B53B4E /* NavigationStack.swift in Sources */,
370 | 8444B0F01C80238500B53B4E /* AppDelegate.swift in Sources */,
371 | );
372 | runOnlyForDeploymentPostprocessing = 0;
373 | };
374 | /* End PBXSourcesBuildPhase section */
375 |
376 | /* Begin PBXTargetDependency section */
377 | 84368B421CFEDDB1007C4278 /* PBXTargetDependency */ = {
378 | isa = PBXTargetDependency;
379 | target = 84368B3B1CFEDDB1007C4278 /* NavigationStack */;
380 | targetProxy = 84368B411CFEDDB1007C4278 /* PBXContainerItemProxy */;
381 | };
382 | /* End PBXTargetDependency section */
383 |
384 | /* Begin PBXVariantGroup section */
385 | 8444B0F31C80238500B53B4E /* Main.storyboard */ = {
386 | isa = PBXVariantGroup;
387 | children = (
388 | 8444B0F41C80238500B53B4E /* Base */,
389 | );
390 | name = Main.storyboard;
391 | sourceTree = "";
392 | };
393 | 8444B0F81C80238500B53B4E /* LaunchScreen.storyboard */ = {
394 | isa = PBXVariantGroup;
395 | children = (
396 | 8444B0F91C80238500B53B4E /* Base */,
397 | );
398 | name = LaunchScreen.storyboard;
399 | sourceTree = "";
400 | };
401 | /* End PBXVariantGroup section */
402 |
403 | /* Begin XCBuildConfiguration section */
404 | 84368B451CFEDDB1007C4278 /* Debug */ = {
405 | isa = XCBuildConfiguration;
406 | buildSettings = {
407 | CLANG_ANALYZER_NONNULL = YES;
408 | CODE_SIGN_IDENTITY = "";
409 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
410 | CURRENT_PROJECT_VERSION = 1;
411 | DEFINES_MODULE = YES;
412 | DYLIB_COMPATIBILITY_VERSION = 1;
413 | DYLIB_CURRENT_VERSION = 1;
414 | DYLIB_INSTALL_NAME_BASE = "@rpath";
415 | INFOPLIST_FILE = NavigationStack/Info.plist;
416 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
417 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
418 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
419 | PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStack;
420 | PRODUCT_NAME = "$(TARGET_NAME)";
421 | SKIP_INSTALL = YES;
422 | SWIFT_VERSION = 5.0;
423 | TARGETED_DEVICE_FAMILY = "1,2";
424 | VERSIONING_SYSTEM = "apple-generic";
425 | VERSION_INFO_PREFIX = "";
426 | };
427 | name = Debug;
428 | };
429 | 84368B461CFEDDB1007C4278 /* Release */ = {
430 | isa = XCBuildConfiguration;
431 | buildSettings = {
432 | CLANG_ANALYZER_NONNULL = YES;
433 | CODE_SIGN_IDENTITY = "";
434 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
435 | CURRENT_PROJECT_VERSION = 1;
436 | DEFINES_MODULE = YES;
437 | DYLIB_COMPATIBILITY_VERSION = 1;
438 | DYLIB_CURRENT_VERSION = 1;
439 | DYLIB_INSTALL_NAME_BASE = "@rpath";
440 | INFOPLIST_FILE = NavigationStack/Info.plist;
441 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
442 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
443 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
444 | PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStack;
445 | PRODUCT_NAME = "$(TARGET_NAME)";
446 | SKIP_INSTALL = YES;
447 | SWIFT_VERSION = 5.0;
448 | TARGETED_DEVICE_FAMILY = "1,2";
449 | VERSIONING_SYSTEM = "apple-generic";
450 | VERSION_INFO_PREFIX = "";
451 | };
452 | name = Release;
453 | };
454 | 8444B1121C80238500B53B4E /* Debug */ = {
455 | isa = XCBuildConfiguration;
456 | buildSettings = {
457 | ALWAYS_SEARCH_USER_PATHS = NO;
458 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
459 | CLANG_CXX_LIBRARY = "libc++";
460 | CLANG_ENABLE_MODULES = YES;
461 | CLANG_ENABLE_OBJC_ARC = YES;
462 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
463 | CLANG_WARN_BOOL_CONVERSION = YES;
464 | CLANG_WARN_COMMA = YES;
465 | CLANG_WARN_CONSTANT_CONVERSION = YES;
466 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
467 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
468 | CLANG_WARN_EMPTY_BODY = YES;
469 | CLANG_WARN_ENUM_CONVERSION = YES;
470 | CLANG_WARN_INFINITE_RECURSION = YES;
471 | CLANG_WARN_INT_CONVERSION = YES;
472 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
473 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
474 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
475 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
476 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
477 | CLANG_WARN_STRICT_PROTOTYPES = YES;
478 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
479 | CLANG_WARN_UNREACHABLE_CODE = YES;
480 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
481 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
482 | COPY_PHASE_STRIP = NO;
483 | DEBUG_INFORMATION_FORMAT = dwarf;
484 | ENABLE_STRICT_OBJC_MSGSEND = YES;
485 | ENABLE_TESTABILITY = YES;
486 | GCC_C_LANGUAGE_STANDARD = gnu99;
487 | GCC_DYNAMIC_NO_PIC = NO;
488 | GCC_NO_COMMON_BLOCKS = YES;
489 | GCC_OPTIMIZATION_LEVEL = 0;
490 | GCC_PREPROCESSOR_DEFINITIONS = (
491 | "DEBUG=1",
492 | "$(inherited)",
493 | );
494 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
495 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
496 | GCC_WARN_UNDECLARED_SELECTOR = YES;
497 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
498 | GCC_WARN_UNUSED_FUNCTION = YES;
499 | GCC_WARN_UNUSED_VARIABLE = YES;
500 | IPHONEOS_DEPLOYMENT_TARGET = 12.2;
501 | MTL_ENABLE_DEBUG_INFO = YES;
502 | ONLY_ACTIVE_ARCH = YES;
503 | SDKROOT = iphoneos;
504 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
505 | };
506 | name = Debug;
507 | };
508 | 8444B1131C80238500B53B4E /* Release */ = {
509 | isa = XCBuildConfiguration;
510 | buildSettings = {
511 | ALWAYS_SEARCH_USER_PATHS = NO;
512 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
513 | CLANG_CXX_LIBRARY = "libc++";
514 | CLANG_ENABLE_MODULES = YES;
515 | CLANG_ENABLE_OBJC_ARC = YES;
516 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
517 | CLANG_WARN_BOOL_CONVERSION = YES;
518 | CLANG_WARN_COMMA = YES;
519 | CLANG_WARN_CONSTANT_CONVERSION = YES;
520 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
521 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
522 | CLANG_WARN_EMPTY_BODY = YES;
523 | CLANG_WARN_ENUM_CONVERSION = YES;
524 | CLANG_WARN_INFINITE_RECURSION = YES;
525 | CLANG_WARN_INT_CONVERSION = YES;
526 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
527 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
528 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
529 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
530 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
531 | CLANG_WARN_STRICT_PROTOTYPES = YES;
532 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
533 | CLANG_WARN_UNREACHABLE_CODE = YES;
534 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
535 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
536 | COPY_PHASE_STRIP = NO;
537 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
538 | ENABLE_NS_ASSERTIONS = NO;
539 | ENABLE_STRICT_OBJC_MSGSEND = YES;
540 | GCC_C_LANGUAGE_STANDARD = gnu99;
541 | GCC_NO_COMMON_BLOCKS = YES;
542 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
543 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
544 | GCC_WARN_UNDECLARED_SELECTOR = YES;
545 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
546 | GCC_WARN_UNUSED_FUNCTION = YES;
547 | GCC_WARN_UNUSED_VARIABLE = YES;
548 | IPHONEOS_DEPLOYMENT_TARGET = 12.2;
549 | MTL_ENABLE_DEBUG_INFO = NO;
550 | SDKROOT = iphoneos;
551 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
552 | VALIDATE_PRODUCT = YES;
553 | };
554 | name = Release;
555 | };
556 | 8444B1151C80238500B53B4E /* Debug */ = {
557 | isa = XCBuildConfiguration;
558 | buildSettings = {
559 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
560 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
561 | CODE_SIGN_IDENTITY = "iPhone Developer";
562 | INFOPLIST_FILE = NavigationStackDemo/Info.plist;
563 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
564 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
565 | PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemo;
566 | PRODUCT_NAME = "Navigation Stack";
567 | SWIFT_VERSION = 5.0;
568 | };
569 | name = Debug;
570 | };
571 | 8444B1161C80238500B53B4E /* Release */ = {
572 | isa = XCBuildConfiguration;
573 | buildSettings = {
574 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
575 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
576 | CODE_SIGN_IDENTITY = "iPhone Developer";
577 | INFOPLIST_FILE = NavigationStackDemo/Info.plist;
578 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
579 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
580 | PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.NavigationStackDemo;
581 | PRODUCT_NAME = "Navigation Stack";
582 | SWIFT_VERSION = 5.0;
583 | };
584 | name = Release;
585 | };
586 | /* End XCBuildConfiguration section */
587 |
588 | /* Begin XCConfigurationList section */
589 | 84368B471CFEDDB1007C4278 /* Build configuration list for PBXNativeTarget "NavigationStack" */ = {
590 | isa = XCConfigurationList;
591 | buildConfigurations = (
592 | 84368B451CFEDDB1007C4278 /* Debug */,
593 | 84368B461CFEDDB1007C4278 /* Release */,
594 | );
595 | defaultConfigurationIsVisible = 0;
596 | defaultConfigurationName = Release;
597 | };
598 | 8444B0E71C80238500B53B4E /* Build configuration list for PBXProject "NavigationStackDemo" */ = {
599 | isa = XCConfigurationList;
600 | buildConfigurations = (
601 | 8444B1121C80238500B53B4E /* Debug */,
602 | 8444B1131C80238500B53B4E /* Release */,
603 | );
604 | defaultConfigurationIsVisible = 0;
605 | defaultConfigurationName = Release;
606 | };
607 | 8444B1141C80238500B53B4E /* Build configuration list for PBXNativeTarget "NavigationStackDemo" */ = {
608 | isa = XCConfigurationList;
609 | buildConfigurations = (
610 | 8444B1151C80238500B53B4E /* Debug */,
611 | 8444B1161C80238500B53B4E /* Release */,
612 | );
613 | defaultConfigurationIsVisible = 0;
614 | defaultConfigurationName = Release;
615 | };
616 | /* End XCConfigurationList section */
617 | };
618 | rootObject = 8444B0E41C80238500B53B4E /* Project object */;
619 | }
620 |
--------------------------------------------------------------------------------
/NavigationStackDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/NavigationStackDemo.xcodeproj/xcshareddata/xcschemes/NavigationStack.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
52 |
53 |
59 |
60 |
66 |
67 |
68 |
69 |
71 |
72 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/NavigationStackDemo/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // NavigationStackDemo
4 | //
5 | // Copyright (c) 26/02/16 Ramotion Inc. (http://ramotion.com)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 |
25 | import UIKit
26 |
27 | @UIApplicationMain
28 | class AppDelegate: UIResponder, UIApplicationDelegate {
29 |
30 | var window: UIWindow?
31 |
32 | func application(_ : UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
33 |
34 | UIApplication.shared.statusBarStyle = .lightContent
35 |
36 | UINavigationBar.appearance().titleTextAttributes = [
37 | NSAttributedString.Key.foregroundColor: UIColor.white,
38 | NSAttributedString.Key.font: UIFont(name: "OpenSans-Semibold", size: 16)!,
39 | ]
40 |
41 | return true
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "icon-40.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "icon-60.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "icon-58.png",
19 | "scale" : "2x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "icon-87.png",
25 | "scale" : "3x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "icon-80.png",
31 | "scale" : "2x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "icon-120.png",
37 | "scale" : "3x"
38 | },
39 | {
40 | "size" : "60x60",
41 | "idiom" : "iphone",
42 | "filename" : "icon-120.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "icon-180.png",
49 | "scale" : "3x"
50 | },
51 | {
52 | "size" : "20x20",
53 | "idiom" : "ipad",
54 | "filename" : "icon-20.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "icon-40.png",
61 | "scale" : "2x"
62 | },
63 | {
64 | "size" : "29x29",
65 | "idiom" : "ipad",
66 | "filename" : "icon-29.png",
67 | "scale" : "1x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "icon-58.png",
73 | "scale" : "2x"
74 | },
75 | {
76 | "size" : "40x40",
77 | "idiom" : "ipad",
78 | "filename" : "icon-40.png",
79 | "scale" : "1x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "icon-80.png",
85 | "scale" : "2x"
86 | },
87 | {
88 | "size" : "76x76",
89 | "idiom" : "ipad",
90 | "filename" : "icon-76.png",
91 | "scale" : "1x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "icon-152.png",
97 | "scale" : "2x"
98 | },
99 | {
100 | "size" : "83.5x83.5",
101 | "idiom" : "ipad",
102 | "filename" : "icon-167.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "1024x1024",
107 | "idiom" : "ios-marketing",
108 | "filename" : "Ramotion.png",
109 | "scale" : "1x"
110 | }
111 | ],
112 | "info" : {
113 | "version" : 1,
114 | "author" : "xcode"
115 | },
116 | "properties" : {
117 | "pre-rendered" : true
118 | }
119 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/Ramotion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/Ramotion.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-120.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-152.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-167.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-180.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-20.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-29.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-58.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-60.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-80.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/AppIcon.appiconset/icon-87.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/ButtonBorder.imageset/ButtonBorder.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Fifth/ButtonBorder.imageset/ButtonBorder.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/ButtonBorder.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "ButtonBorder.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-0.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "Fifth-Icon-0.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-0.imageset/Fifth-Icon-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-0.imageset/Fifth-Icon-0.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "Fifth-Icon-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-1.imageset/Fifth-Icon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-1.imageset/Fifth-Icon-1.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "Fifth-Icon-2.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-2.imageset/Fifth-Icon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-2.imageset/Fifth-Icon-2.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "Fifth-Icon-3.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-3.imageset/Fifth-Icon-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Fifth/Fifth-Icon-3.imageset/Fifth-Icon-3.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/Arrow.imageset/Arrow.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/Arrow.imageset/Arrow.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/Arrow.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "scale" : "1x"
9 | },
10 | {
11 | "idiom" : "universal",
12 | "filename" : "Arrow.pdf",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-0.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon-0.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-0.imageset/icon-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/icon-0.imageset/icon-0.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-1.imageset/icon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/icon-1.imageset/icon-1.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon-2.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-2.imageset/icon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/icon-2.imageset/icon-2.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon-3.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-3.imageset/icon-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/icon-3.imageset/icon-3.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "icon-4.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/First/icons/icon-4.imageset/icon-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/First/icons/icon-4.imageset/icon-4.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/GirlsBig.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "GirlsBig.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/GirlsBig.imageset/GirlsBig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Four/GirlsBig.imageset/GirlsBig.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/NYbg.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "NYbg.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/NYbg.imageset/NYbg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Four/NYbg.imageset/NYbg.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/faceIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "faceIcon.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/faceIcon.imageset/faceIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Four/faceIcon.imageset/faceIcon.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/foodIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "foodIcon.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Four/foodIcon.imageset/foodIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Four/foodIcon.imageset/foodIcon.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/BridgeImage.imageset/BridgeImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/BridgeImage.imageset/BridgeImage.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/BridgeImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "BridgeImage.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/DotsIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "DotsIcon.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/DotsIcon.imageset/DotsIcon.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/DotsIcon.imageset/DotsIcon.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/HeadnImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "HeadnImage.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/HeadnImage.imageset/HeadnImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/HeadnImage.imageset/HeadnImage.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PCImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "PCImage.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PCImage.imageset/PCImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/PCImage.imageset/PCImage.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PersonIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "PersonIcon.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PersonIcon.imageset/PersonIcon.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/PersonIcon.imageset/PersonIcon.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PinIcon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "PinIcon.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/PinIcon.imageset/PinIcon.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/PinIcon.imageset/PinIcon.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/RamotionBig.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "RamotionBig.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/RamotionBig.imageset/RamotionBig.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/RamotionBig.imageset/RamotionBig.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/backButton.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "backButton.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Second/backButton.imageset/backButton.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Second/backButton.imageset/backButton.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Third/BGmessage.imageset/BGmessage.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Third/BGmessage.imageset/BGmessage.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Third/BGmessage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "BGmessage.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Third/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Third/girsl.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "girsl.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/Third/girsl.imageset/girsl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/Third/girsl.imageset/girsl.png
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/arrow.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal"
5 | },
6 | {
7 | "idiom" : "universal",
8 | "filename" : "arrow.pdf",
9 | "scale" : "1x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "2x"
14 | },
15 | {
16 | "idiom" : "universal",
17 | "scale" : "3x"
18 | }
19 | ],
20 | "info" : {
21 | "version" : 1,
22 | "author" : "xcode"
23 | }
24 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/arrow.imageset/arrow.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/arrow.imageset/arrow.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/back.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "back.pdf",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NavigationStackDemo/Assets.xcassets/back.imageset/back.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/NavigationStackDemo/Assets.xcassets/back.imageset/back.pdf
--------------------------------------------------------------------------------
/NavigationStackDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/NavigationStackDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UIAppFonts
26 |
27 | OpenSans-Semibold.ttf
28 |
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIMainStoryboardFile
32 | Main
33 | UIRequiredDeviceCapabilities
34 |
35 | armv7
36 |
37 | UIStatusBarHidden
38 |
39 | UISupportedInterfaceOrientations
40 |
41 | UIInterfaceOrientationPortrait
42 |
43 | UIViewControllerBasedStatusBarAppearance
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/NavigationStackDemo/ViewControllers/FifthViewController/FifthViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FifthViewController.swift
3 | // NavigationStackDemo
4 | //
5 | // Created by Alex K. on 29/02/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class FifthViewController: UITableViewController {
12 |
13 | @IBAction func backHandler(_: AnyObject) {
14 | _ = navigationController?.popViewController(animated: true)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/NavigationStackDemo/ViewControllers/FirstViewController/FirstTableViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FirstTableViewController.swift
3 | // NavigationStackDemo
4 | //
5 | // Created by Alex K. on 29/02/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: FirstTableViewController
12 |
13 | class FirstTableViewController: UITableViewController {
14 |
15 | @IBOutlet var search: UISearchBar!
16 |
17 | override func viewDidLoad() {
18 | super.viewDidLoad()
19 | navigationController!.interactivePopGestureRecognizer?.delegate = self
20 |
21 | navigationItem.titleView = search
22 | }
23 |
24 | override func viewWillAppear(_ animated: Bool) {
25 | super.viewWillAppear(animated)
26 |
27 | if let navigationController = navigationController {
28 | navigationController.navigationBar.barTintColor = UIColor(red: 0.4, green: 0.47, blue: 0.62, alpha: 1)
29 | }
30 | }
31 |
32 | override func tableView(_: UITableView, didSelectRowAt _: IndexPath) {
33 | performSegue(withIdentifier: "push", sender: nil)
34 | }
35 | }
36 |
37 | // MARK: UIGestureRecognizerDelegate
38 |
39 | extension FirstTableViewController: UIGestureRecognizerDelegate {
40 | func gestureRecognizerShouldBegin(_: UIGestureRecognizer) -> Bool {
41 |
42 | if navigationController?.viewControllers.count == 2 {
43 | return true
44 | }
45 |
46 | if let navigationController = self.navigationController as? NavigationStack {
47 | navigationController.showControllers()
48 | }
49 |
50 | return false
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/NavigationStackDemo/ViewControllers/SecondViewController/SecondViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SecondViewController.swift
3 | // NavigationStackDemo
4 | //
5 | // Created by Alex K. on 29/02/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class SecondViewController: UITableViewController {
12 |
13 | override func viewWillAppear(_ animated: Bool) {
14 | super.viewWillAppear(animated)
15 |
16 | // if let navigationController = navigationController {
17 | //// navigationController.navigationBar.barTintColor = UIColor(red:0.61, green:0.86, blue:0.87, alpha:1)
18 | //// tableView.contentOffset = CGPoint(x: 0, y: -44)
19 | //// navigationController.navigationBar.translucent = true
20 | // }
21 | }
22 |
23 | @IBAction func backHandler(_: AnyObject) {
24 | _ = navigationController?.popViewController(animated: true)
25 | }
26 |
27 | override func tableView(_: UITableView, didSelectRowAt _: IndexPath) {
28 | performSegue(withIdentifier: "push", sender: nil)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/NavigationStackDemo/ViewControllers/ThirdViewController/ThirdViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThirdViewController.swift
3 | // NavigationStackDemo
4 | //
5 | // Created by Alex K. on 29/02/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ThirdViewController: UITableViewController {
12 |
13 | @IBInspectable var navbarColor: UIColor = .black
14 |
15 | override func viewWillAppear(_ animated: Bool) {
16 | super.viewWillAppear(animated)
17 | }
18 |
19 | @IBAction func backHandler(_: AnyObject) {
20 | _ = navigationController?.popViewController(animated: true)
21 | }
22 |
23 | override func tableView(_: UITableView, didSelectRowAt _: IndexPath) {
24 | performSegue(withIdentifier: "push", sender: nil)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.1
2 | //
3 | // Package.swift
4 | //
5 | // Copyright (c) Ramotion (https://www.ramotion.com/)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 | //
25 |
26 | import PackageDescription
27 |
28 |
29 | let package = Package(
30 | name: "NavigationStack",
31 | platforms: [
32 | .iOS(.v8)
33 | ],
34 | products: [
35 | .library(name: "NavigationStack",
36 | targets: ["NavigationStack"]),
37 | ],
38 | targets: [
39 | .target(name: "NavigationStack",
40 | path: "Source")
41 | ],
42 | swiftLanguageVersions: [.v5]
43 | )
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | NAVIGATION STACK
7 |
8 | Navigation Stack is a library with stack-modeled UI navigation controller.
9 |
10 |
11 | ___
12 |
13 |
14 |
15 | We specialize in the designing and coding of custom UI for Mobile Apps and Websites.
16 |
17 |
18 |
19 | Stay tuned for the latest updates:
20 |
21 |
22 |
23 |
24 |
25 | [](http://twitter.com/Ramotion)
26 | [](https://cocoapods.org/pods/Navigation-stack)
27 | [](http://cocoapods.org/pods/Navigation-stack)
28 | [](https://cdn.rawgit.com/Ramotion/navigation-stack/master/docs/index.html)
29 | [](https://travis-ci.org/Ramotion/navigation-stack)
30 | [](https://codebeat.co/projects/github-com-ramotion-navigation-stack)
31 | [](https://github.com/Ramotion/navigation-stack)
32 | [](https://paypal.me/Ramotion)
33 |
34 | ## Requirements
35 |
36 | - iOS 9.0+
37 | - Xcode 9
38 |
39 | ## Installation
40 |
41 | Just add the Source folder to your project.
42 |
43 | or use [CocoaPods](https://cocoapods.org) with Podfile:
44 | ``` ruby
45 | pod 'Navigation-stack'
46 | ```
47 |
48 | or [Carthage](https://github.com/Carthage/Carthage) users can simply add to their `Cartfile`:
49 | ```
50 | github "Ramotion/navigation-stack"
51 | ```
52 |
53 | ## Usage
54 |
55 | 1) YourNavigationController inherit from `NavigationStack`
56 |
57 | 2) add code to root viewViewController
58 |
59 | ``` swift
60 | override func viewDidLoad() {
61 | super.viewDidLoad()
62 | navigationController!.interactivePopGestureRecognizer?.delegate = self
63 | }
64 | ```
65 |
66 | ``` swift
67 | extension YourViewController: UIGestureRecognizerDelegate {
68 | func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
69 |
70 | if navigationController?.viewControllers.count == 2 {
71 | return true
72 | }
73 |
74 | if let navigationController = self.navigationController as? NavigationStack {
75 | navigationController.showControllers()
76 | }
77 |
78 | return false
79 | }
80 | }
81 | ```
82 |
83 | ## 📄 License
84 |
85 | Navigation Stack is released under the MIT license.
86 | See [LICENSE](./LICENSE) for details.
87 |
88 | This library is a part of a selection of our best UI open-source projects.
89 |
90 | If you use the open-source library in your project, please make sure to credit and backlink to www.ramotion.com
91 |
92 | ## 📱 Get the Showroom App for iOS to give it a try
93 | Try this UI component and more like this in our iOS app. Contact us if interested.
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/React Native@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/React Native@2x.png
--------------------------------------------------------------------------------
/Source/CollectionView/Cell/CollectionViewStackCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CollectionViewStackCell.swift
3 | // NavigationStackDemo
4 | //
5 | // Copyright (c) 26/02/16 Ramotion Inc. (http://ramotion.com)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 |
25 | import UIKit
26 |
27 | // MARK: CollectionViewStackCell
28 |
29 | class CollectionViewStackCell: UICollectionViewCell {
30 |
31 | internal var imageView: UIImageView?
32 |
33 | override init(frame: CGRect) {
34 | super.init(frame: frame)
35 | imageView = createImageView()
36 | createShadow()
37 | }
38 |
39 | required init?(coder _: NSCoder) {
40 | fatalError("init(coder:) has not been implemented")
41 | }
42 |
43 | internal override func prepareForReuse() {
44 | imageView?.image = nil
45 | }
46 | }
47 |
48 | // MARK: configure
49 |
50 | extension CollectionViewStackCell {
51 |
52 | fileprivate func createImageView() -> UIImageView {
53 |
54 | let imageView = UIImageView(frame: CGRect.zero)
55 | imageView.translatesAutoresizingMaskIntoConstraints = false
56 | imageView.layer.shouldRasterize = true
57 | contentView.addSubview(imageView)
58 |
59 | contentView.addConstraints([
60 | createConstraint(imageView, toItem: contentView, attribute: .top),
61 | createConstraint(imageView, toItem: contentView, attribute: .bottom),
62 | createConstraint(imageView, toItem: contentView, attribute: .left),
63 | createConstraint(imageView, toItem: contentView, attribute: .right),
64 | ])
65 |
66 | return imageView
67 | }
68 |
69 | fileprivate func createConstraint(_ item: UIImageView, toItem: UIView, attribute: NSLayoutConstraint.Attribute) -> NSLayoutConstraint {
70 | return NSLayoutConstraint(item: item,
71 | attribute: attribute,
72 | relatedBy: .equal,
73 | toItem: toItem,
74 | attribute: attribute,
75 | multiplier: 1,
76 | constant: 0)
77 | }
78 |
79 | fileprivate func createShadow() {
80 | layer.masksToBounds = false
81 | layer.shadowOpacity = 0.30
82 | layer.shadowRadius = 10.0
83 | layer.shadowOffset = CGSize.zero
84 | layer.shadowPath = UIBezierPath(rect: bounds).cgPath
85 | layer.shouldRasterize = true
86 | layer.rasterizationScale = max(UIScreen.main.scale, 2.0)
87 | }
88 |
89 | fileprivate func addBlurOnImage(_: UIImageView) {
90 |
91 | let blurEffect = UIBlurEffect(style: .dark)
92 | let blurView = UIVisualEffectView(effect: blurEffect)
93 | blurView.translatesAutoresizingMaskIntoConstraints = false
94 | imageView!.insertSubview(blurView, at: 3)
95 |
96 | let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect)
97 | let vibrancyView = UIVisualEffectView(effect: vibrancyEffect)
98 | vibrancyView.translatesAutoresizingMaskIntoConstraints = false
99 | blurView.contentView.addSubview(vibrancyView)
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/Source/CollectionView/CollectionStackViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CollectionStackViewController.swift
3 | // NavigationStackDemo
4 | //
5 | // Copyright (c) 26/02/16 Ramotion Inc. (http://ramotion.com)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 |
25 | import UIKit
26 | fileprivate func < (lhs: T?, rhs: T?) -> Bool {
27 | switch (lhs, rhs) {
28 | case let (l?, r?):
29 | return l < r
30 | case (nil, _?):
31 | return true
32 | default:
33 | return false
34 | }
35 | }
36 |
37 | // MARK: CollectionStackViewController
38 |
39 | protocol CollectionStackViewControllerDelegate: class {
40 | func controllerDidSelected(index: Int)
41 | }
42 |
43 | class CollectionStackViewController: UICollectionViewController {
44 | fileprivate var screens: [UIImage]
45 | fileprivate let overlay: Float
46 |
47 | weak var delegate: CollectionStackViewControllerDelegate?
48 |
49 | init(images: [UIImage],
50 | delegate: CollectionStackViewControllerDelegate?,
51 | overlay: Float,
52 | scaleRatio: Float,
53 | scaleValue: Float,
54 | bgColor: UIColor = UIColor.clear,
55 | bgView: UIView? = nil,
56 | decelerationRate: CGFloat) {
57 |
58 | screens = images
59 | self.delegate = delegate
60 | self.overlay = overlay
61 |
62 | let layout = CollectionViewStackFlowLayout(itemsCount: images.count, overlay: overlay, scaleRatio: scaleRatio, scale: scaleValue)
63 | super.init(collectionViewLayout: layout)
64 |
65 | if let collectionView = self.collectionView {
66 | collectionView.backgroundColor = bgColor
67 | collectionView.backgroundView = bgView
68 | collectionView.decelerationRate = UIScrollView.DecelerationRate(rawValue: decelerationRate)
69 | }
70 | }
71 |
72 | required init?(coder _: NSCoder) {
73 | fatalError("init(coder:) has not been implemented")
74 | }
75 |
76 | override func viewDidLoad() {
77 | configureCollectionView()
78 | scrolltoIndex(screens.count - 1, animated: false, position: .left) // move to end
79 | }
80 |
81 | override func viewDidAppear(_: Bool) {
82 |
83 | guard let collectionViewLayout = self.collectionViewLayout as? CollectionViewStackFlowLayout else {
84 | fatalError("wrong collection layout")
85 | }
86 |
87 | collectionViewLayout.openAnimating = true
88 | scrolltoIndex(0, animated: true, position: .left) // open animation
89 | }
90 | }
91 |
92 | // MARK: configure
93 |
94 | extension CollectionStackViewController {
95 |
96 | fileprivate func configureCollectionView() {
97 | guard let collectionViewLayout = self.collectionViewLayout as? UICollectionViewFlowLayout else {
98 | fatalError("wrong collection layout")
99 | }
100 |
101 | collectionViewLayout.scrollDirection = .horizontal
102 | collectionView?.showsHorizontalScrollIndicator = false
103 | collectionView?.register(CollectionViewStackCell.self, forCellWithReuseIdentifier: String(describing: CollectionViewStackCell.self))
104 | }
105 | }
106 |
107 | // MARK: CollectionViewDataSource
108 |
109 | extension CollectionStackViewController {
110 |
111 | override func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {
112 | return screens.count
113 | }
114 |
115 | override func collectionView(_: UICollectionView,
116 | willDisplay cell: UICollectionViewCell,
117 | forItemAt indexPath: IndexPath) {
118 |
119 | if let cell = cell as? CollectionViewStackCell {
120 | cell.imageView?.image = screens[(indexPath as NSIndexPath).row]
121 | }
122 | }
123 |
124 | override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
125 | let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: CollectionViewStackCell.self),
126 | for: indexPath)
127 | return cell
128 | }
129 |
130 | override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
131 | guard let currentCell = collectionView.cellForItem(at: indexPath) else {
132 | return
133 | }
134 |
135 | // move cells
136 | UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn,
137 | animations: { () -> Void in
138 | for cell in self.collectionView!.visibleCells where cell != currentCell {
139 | let row = (self.collectionView?.indexPath(for: cell) as NSIndexPath?)?.row
140 | let xPosition = row < (indexPath as NSIndexPath).row ? cell.center.x - self.view.bounds.size.width * 2
141 | : cell.center.x + self.view.bounds.size.width * 2
142 |
143 | cell.center = CGPoint(x: xPosition, y: cell.center.y)
144 | }
145 | }, completion: nil)
146 |
147 | // move to center current cell
148 | UIView.animate(withDuration: 0.2, delay: 0.2, options: .curveEaseOut,
149 | animations: { () -> Void in
150 | let offset = collectionView.contentOffset.x - (self.view.bounds.size.width - collectionView.bounds.size.width * CGFloat(self.overlay)) * CGFloat((indexPath as NSIndexPath).row)
151 | currentCell.center = CGPoint(x: (currentCell.center.x + offset), y: currentCell.center.y)
152 | }, completion: nil)
153 |
154 | // scale current cell
155 | UIView.animate(withDuration: 0.2, delay: 0.6, options: .curveEaseOut, animations: { () -> Void in
156 | let scale = CGAffineTransform(scaleX: 1, y: 1)
157 | currentCell.transform = scale
158 | currentCell.alpha = 1
159 |
160 | }) { (_) -> Void in
161 | DispatchQueue.main.async(execute: { () -> Void in
162 | self.delegate?.controllerDidSelected(index: (indexPath as NSIndexPath).row)
163 | self.dismiss(animated: false, completion: nil)
164 | })
165 | }
166 | }
167 | }
168 |
169 | // MARK: UICollectionViewDelegateFlowLayout
170 |
171 | extension CollectionStackViewController: UICollectionViewDelegateFlowLayout {
172 |
173 | func collectionView(_: UICollectionView, layout _: UICollectionViewLayout, sizeForItemAt _: IndexPath) -> CGSize {
174 | return view.bounds.size
175 | }
176 |
177 | func collectionView(_ collectionView: UICollectionView, layout _: UICollectionViewLayout, minimumLineSpacingForSectionAt _: NSInteger) -> CGFloat {
178 | return -collectionView.bounds.size.width * CGFloat(overlay)
179 | }
180 | }
181 |
182 | // MARK: Additional helpers
183 |
184 | extension CollectionStackViewController {
185 |
186 | fileprivate func scrolltoIndex(_ index: Int, animated: Bool, position: UICollectionView.ScrollPosition) {
187 | let indexPath = IndexPath(item: index, section: 0)
188 | collectionView?.scrollToItem(at: indexPath, at: position, animated: animated)
189 | }
190 | }
191 |
--------------------------------------------------------------------------------
/Source/CollectionView/FlowLayout/CollectionViewStackFlowLayout.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CollectionViewStackFlowLayout.swift
3 | // NavigationStackDemo
4 | //
5 | // Copyright (c) 26/02/16 Ramotion Inc. (http://ramotion.com)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 |
25 | import UIKit
26 |
27 | // MARK: CollectionViewStackFlowLayout
28 |
29 | class CollectionViewStackFlowLayout: UICollectionViewFlowLayout {
30 |
31 | let itemsCount: Int
32 | let overlay: Float // from 0 to 1
33 |
34 | let maxScale: Float
35 | let scaleRatio: Float
36 |
37 | var additionScale = 1.0
38 | var openAnimating = false
39 |
40 | var dxOffset: Float = 0
41 |
42 | init(itemsCount: Int, overlay: Float, scaleRatio: Float, scale: Float) {
43 | self.itemsCount = itemsCount
44 | self.overlay = overlay
45 | self.scaleRatio = scaleRatio
46 | maxScale = scale
47 | super.init()
48 | }
49 |
50 | required init?(coder _: NSCoder) {
51 | fatalError("init(coder:) has not been implemented")
52 | }
53 | }
54 |
55 | extension CollectionViewStackFlowLayout {
56 |
57 | override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
58 | let items = NSArray(array: super.layoutAttributesForElements(in: rect)!, copyItems: true)
59 | var headerAttributes: UICollectionViewLayoutAttributes?
60 |
61 | items.enumerateObjects({ (object, _, _) -> Void in
62 | let attributes = object as! UICollectionViewLayoutAttributes
63 |
64 | if attributes.representedElementKind == UICollectionView.elementKindSectionHeader {
65 | headerAttributes = attributes
66 | } else {
67 | self.updateCellAttributes(attributes, headerAttributes: headerAttributes)
68 | }
69 | })
70 | return items as? [UICollectionViewLayoutAttributes]
71 | }
72 |
73 | func updateCellAttributes(_ attributes: UICollectionViewLayoutAttributes, headerAttributes _: UICollectionViewLayoutAttributes?) {
74 |
75 | guard let collectionView = self.collectionView else {
76 | return
77 | }
78 | let itemWidth = collectionView.bounds.size.width - collectionView.bounds.size.width * CGFloat(overlay)
79 | let allWidth = itemWidth * CGFloat(itemsCount - 1)
80 |
81 | // set contentOffset range
82 | let contentOffsetX = min(max(0, collectionView.contentOffset.x), allWidth)
83 |
84 | let scale = transformScale(attributes, allWidth: allWidth, offset: contentOffsetX)
85 | let move = transformMove(attributes, itemWidth: itemWidth, offset: contentOffsetX)
86 | attributes.transform = scale.concatenating(move)
87 | attributes.alpha = calculateAlpha(attributes, itemWidth: itemWidth, offset: contentOffsetX)
88 |
89 | if additionScale > 0 && openAnimating {
90 | additionScale -= 0.02
91 | additionScale = additionScale < 0 ? 0 : additionScale
92 | }
93 | attributes.zIndex = (attributes.indexPath as NSIndexPath).row
94 | }
95 |
96 | override func shouldInvalidateLayout(forBoundsChange _: CGRect) -> Bool {
97 | return true
98 | }
99 | }
100 |
101 | // MARK: helpers
102 |
103 | extension CollectionViewStackFlowLayout {
104 |
105 | fileprivate func transformScale(_ attributes: UICollectionViewLayoutAttributes,
106 | allWidth: CGFloat,
107 | offset: CGFloat) -> CGAffineTransform {
108 | var maximum = CGFloat(maxScale) - CGFloat(itemsCount - (attributes.indexPath as NSIndexPath).row) / CGFloat(scaleRatio)
109 | maximum += CGFloat(1.0 - maximum) * CGFloat(additionScale)
110 |
111 | var minimum = CGFloat(maxScale - 0.1) - CGFloat(itemsCount - (attributes.indexPath as NSIndexPath).row) / CGFloat(scaleRatio)
112 | minimum += CGFloat(1.0 - minimum) * CGFloat(additionScale)
113 |
114 | var currentScale = (maximum + minimum) - (minimum + offset / (allWidth / (maximum - minimum)))
115 | currentScale = max(min(maximum, currentScale), minimum)
116 | return CGAffineTransform(scaleX: currentScale, y: currentScale)
117 | }
118 |
119 | fileprivate func transformMove(_ attributes: UICollectionViewLayoutAttributes,
120 | itemWidth: CGFloat,
121 | offset: CGFloat) -> CGAffineTransform {
122 | var currentContentOffsetX = offset - itemWidth * CGFloat((attributes.indexPath as NSIndexPath).row)
123 | currentContentOffsetX = min(max(currentContentOffsetX, 0), itemWidth)
124 |
125 | var dx = (currentContentOffsetX / itemWidth)
126 | if let collectionView = self.collectionView {
127 | dx *= collectionView.bounds.size.width / 8.0
128 | }
129 | dx = currentContentOffsetX - dx
130 |
131 | return CGAffineTransform(translationX: dx, y: 0)
132 | }
133 |
134 | fileprivate func calculateAlpha(_ attributes: UICollectionViewLayoutAttributes, itemWidth: CGFloat, offset: CGFloat) -> CGFloat {
135 | var currentContentOffsetX = offset - itemWidth * CGFloat((attributes.indexPath as NSIndexPath).row)
136 | currentContentOffsetX = min(max(currentContentOffsetX, 0), itemWidth)
137 |
138 | let dx = (currentContentOffsetX / itemWidth)
139 |
140 | return 1.0 - dx
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/Source/Fonts/OpenSans-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Source/Fonts/OpenSans-Light.ttf
--------------------------------------------------------------------------------
/Source/Fonts/OpenSans-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Source/Fonts/OpenSans-Regular.ttf
--------------------------------------------------------------------------------
/Source/Fonts/OpenSans-Semibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Source/Fonts/OpenSans-Semibold.ttf
--------------------------------------------------------------------------------
/Source/NavigationStack.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NavigationStack.swift
3 | // NavigationStackDemo
4 | //
5 | // Copyright (c) 26/02/16 Ramotion Inc. (http://ramotion.com)
6 | //
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy
8 | // of this software and associated documentation files (the "Software"), to deal
9 | // in the Software without restriction, including without limitation the rights
10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | // copies of the Software, and to permit persons to whom the Software is
12 | // furnished to do so, subject to the following conditions:
13 | //
14 | // The above copyright notice and this permission notice shall be included in
15 | // all copies or substantial portions of the Software.
16 | //
17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 | // THE SOFTWARE.
24 |
25 | import UIKit
26 |
27 | /// UINavigationcontroller with animation show lists of UIViewControllers
28 | open class NavigationStack: UINavigationController {
29 |
30 | var overlay: Float = 0.8
31 | var scaleRatio: Float = 14.0
32 | var scaleValue: Float = 0.99
33 |
34 | /// A floating-point value that determines the rate of deceleration after the user lifts their finger.
35 | @IBInspectable open var decelerationRate: CGFloat = UIScrollView.DecelerationRate.normal.rawValue
36 |
37 | /// The color to use for the background of the lists of UIViewcontrollers.
38 | @IBInspectable open var bgColor: UIColor = .black
39 |
40 | /// The background UIView of the lists of UIViewcontrollers.
41 | open var bgView: UIView?
42 | fileprivate var screens = [UIImage]()
43 |
44 | /// The delegate of the navigation controller object. Use this instead delegate.
45 | open weak var stackDelegate: UINavigationControllerDelegate?
46 |
47 | /**
48 | The initialized navigation controller object or nil if there was a problem initializing the object.
49 |
50 | - parameter aDecoder: aDecoder
51 |
52 | - returns: The initialized navigation controller object or nil if there was a problem initializing the object.
53 | */
54 | public required init?(coder aDecoder: NSCoder) {
55 | super.init(coder: aDecoder)
56 |
57 | delegate = self
58 | }
59 |
60 | /**
61 | Initializes and returns a newly created navigation controller.
62 |
63 | - parameter rootViewController: The view controller that resides at the bottom of the navigation stack.
64 |
65 | - returns: The initialized navigation controller object or nil if there was a problem initializing the object.
66 | */
67 | public override init(rootViewController: UIViewController) {
68 | super.init(rootViewController: rootViewController)
69 |
70 | delegate = self
71 | }
72 |
73 | /**
74 | Necessary to prevent a crash
75 | */
76 | public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
77 | super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
78 | }
79 | }
80 |
81 | // MARK: pulbic methods
82 |
83 | extension NavigationStack {
84 |
85 | /**
86 | Show list of ViewControllers.
87 | */
88 | public func showControllers() {
89 | if screens.count == 0 {
90 | return
91 | }
92 |
93 | var allScreens = screens
94 | allScreens.append(view.takeScreenshot())
95 | let collectioView = CollectionStackViewController(images: allScreens,
96 | delegate: self,
97 | overlay: overlay,
98 | scaleRatio: scaleRatio,
99 | scaleValue: scaleValue,
100 | bgColor: bgColor,
101 | bgView: bgView,
102 | decelerationRate: decelerationRate)
103 |
104 | present(collectioView, animated: false, completion: nil)
105 | }
106 | }
107 |
108 | // MARK: UINavigationControllerDelegate
109 |
110 | extension NavigationStack: UINavigationControllerDelegate {
111 |
112 | public func navigationController(_ navigationController: UINavigationController,
113 | willShow viewController: UIViewController,
114 | animated: Bool) {
115 |
116 | stackDelegate?.navigationController?(navigationController, willShow: viewController, animated: animated)
117 |
118 | if navigationController.viewControllers.count > screens.count + 1 {
119 | screens.append(view.takeScreenshot())
120 | } else
121 | if navigationController.viewControllers.count == screens.count && screens.count > 0 {
122 | screens.removeLast()
123 | }
124 | }
125 |
126 | public func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
127 | stackDelegate?.navigationController?(navigationController, didShow: viewController, animated: animated)
128 | }
129 |
130 | // ???
131 | // public func navigationControllerSupportedInterfaceOrientations(navigationController: UINavigationController) -> UIInterfaceOrientationMask {
132 | // return stackDelegate?.navigationControllerSupportedInterfaceOrientations?(navigationController)
133 | // }
134 |
135 | // ???
136 | // optional public func navigationControllerPreferredInterfaceOrientationForPresentation(navigationController: UINavigationController) -> UIInterfaceOrientation
137 | //
138 |
139 | public func navigationController(_ navigationController: UINavigationController, interactionControllerFor animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning? {
140 | return stackDelegate?.navigationController?(navigationController, interactionControllerFor: animationController)
141 | }
142 |
143 | public func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
144 | return stackDelegate?.navigationController?(navigationController, animationControllerFor: operation, from: fromVC, to: toVC)
145 | }
146 | }
147 |
148 | extension NavigationStack: CollectionStackViewControllerDelegate {
149 | func controllerDidSelected(index: Int) {
150 |
151 | let newViewControllers = Array(viewControllers[0 ... index])
152 | setViewControllers(newViewControllers, animated: false)
153 | screens.removeSubrange(index ..< screens.count)
154 | }
155 | }
156 |
157 | // MARK: UIView
158 |
159 | extension UIView {
160 |
161 | func takeScreenshot() -> UIImage {
162 |
163 | UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
164 | layer.render(in: UIGraphicsGetCurrentContext()!)
165 |
166 | let image = UIGraphicsGetImageFromCurrentImageContext()
167 | UIGraphicsEndImageContext()
168 |
169 | return image!
170 | }
171 | }
172 |
--------------------------------------------------------------------------------
/Swift@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/Swift@2x.png
--------------------------------------------------------------------------------
/contact_our_team@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/contact_our_team@2x.png
--------------------------------------------------------------------------------
/docs/Classes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Classes Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | NavigationStackDemo Reference
22 |
23 | Classes Reference
24 |
25 |
26 |
27 |
39 |
40 |
41 |
42 | Classes
43 | The following classes are available globally.
44 |
45 |
46 |
47 |
48 |
49 | -
50 |
57 |
58 |
59 |
60 |
61 |
62 |
UINavigationcontroller with animation show lists of UIViewControllers
63 |
64 |
See more
65 |
66 |
67 |
Declaration
68 |
69 |
Swift
70 |
public class NavigationStack: UINavigationController
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/docs/Classes/NavigationStack.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | NavigationStack Class Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | NavigationStackDemo Reference
23 |
24 | NavigationStack Class Reference
25 |
26 |
27 |
28 |
40 |
41 |
42 |
43 | NavigationStack
44 |
45 |
46 |
public class NavigationStack: UINavigationController
47 |
48 |
49 |
50 | UINavigationcontroller with animation show lists of UIViewControllers
51 |
52 |
53 |
54 |
55 |
56 | -
57 |
64 |
65 |
66 |
67 |
68 |
69 |
A floating-point value that determines the rate of deceleration after the user lifts their finger.
70 |
71 |
72 |
73 |
Declaration
74 |
75 |
Swift
76 |
@IBInspectable public var decelerationRate: CGFloat = UIScrollViewDecelerationRateNormal
77 |
78 |
79 |
80 |
81 |
82 |
83 | -
84 |
85 |
86 |
87 |
88 | bgColor
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
The color to use for the background of the lists of UIViewcontrollers.
97 |
98 |
99 |
100 |
Declaration
101 |
102 |
Swift
103 |
@IBInspectable public var bgColor: UIColor = .blackColor()
104 |
105 |
106 |
107 |
108 |
109 |
110 | -
111 |
112 |
113 |
114 |
115 | bgView
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
The background UIView of the lists of UIViewcontrollers.
124 |
125 |
126 |
127 |
Declaration
128 |
129 |
Swift
130 |
public var bgView: UIView? = nil
131 |
132 |
133 |
134 |
135 |
136 |
137 | -
138 |
145 |
146 |
147 |
148 |
149 |
150 |
The delegate of the navigation controller object. Use this instead delegate.
151 |
152 |
153 |
154 |
Declaration
155 |
156 |
Swift
157 |
weak public var stackDelegate: UINavigationControllerDelegate?
158 |
159 |
160 |
161 |
162 |
163 |
164 | -
165 |
172 |
173 |
174 |
175 |
176 |
177 |
The initialized navigation controller object or nil if there was a problem initializing the object.
178 |
179 |
180 |
181 |
Declaration
182 |
183 |
Swift
184 |
public required init?(coder aDecoder: NSCoder)
185 |
186 |
187 |
188 |
189 |
Parameters
190 |
191 |
192 |
193 |
194 |
195 | aDecoder
196 |
197 | |
198 |
199 |
200 | aDecoder
201 |
202 |
203 | |
204 |
205 |
206 |
207 |
208 |
209 |
Return Value
210 |
The initialized navigation controller object or nil if there was a problem initializing the object.
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 | -
221 |
228 |
229 |
230 |
231 |
232 |
233 |
Show list of ViewControllers.
234 |
235 |
236 |
237 |
Declaration
238 |
239 |
Swift
240 |
public func showControllers()
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
255 |
256 |
257 |
258 |
259 |
260 |
--------------------------------------------------------------------------------
/docs/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none; }
143 | .nav-group-task a {
144 | color: #888; }
145 |
146 | .main-content {
147 | background-color: #fff;
148 | border: 1px solid #e2e2e2;
149 | margin-left: 246px;
150 | position: absolute;
151 | overflow: hidden;
152 | padding-bottom: 60px;
153 | top: 70px;
154 | width: 734px; }
155 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
156 | margin-bottom: 1em; }
157 | .main-content p {
158 | line-height: 1.8em; }
159 | .main-content section .section:first-child {
160 | margin-top: 0;
161 | padding-top: 0; }
162 | .main-content section .task-group-section .task-group:first-of-type {
163 | padding-top: 10px; }
164 | .main-content section .task-group-section .task-group:first-of-type .section-name {
165 | padding-top: 15px; }
166 |
167 | .section {
168 | padding: 0 25px; }
169 |
170 | .highlight {
171 | background-color: #eee;
172 | padding: 10px 12px;
173 | border: 1px solid #e2e2e2;
174 | border-radius: 4px;
175 | overflow-x: auto; }
176 |
177 | .declaration .highlight {
178 | overflow-x: initial;
179 | padding: 0 40px 40px 0;
180 | margin-bottom: -25px;
181 | background-color: transparent;
182 | border: none; }
183 |
184 | .section-name {
185 | margin: 0;
186 | margin-left: 18px; }
187 |
188 | .task-group-section {
189 | padding-left: 6px;
190 | border-top: 1px solid #e2e2e2; }
191 |
192 | .task-group {
193 | padding-top: 0px; }
194 |
195 | .task-name-container a[name]:before {
196 | content: "";
197 | display: block;
198 | padding-top: 70px;
199 | margin: -70px 0 0; }
200 |
201 | .item {
202 | padding-top: 8px;
203 | width: 100%;
204 | list-style-type: none; }
205 | .item a[name]:before {
206 | content: "";
207 | display: block;
208 | padding-top: 70px;
209 | margin: -70px 0 0; }
210 | .item code {
211 | background-color: transparent;
212 | padding: 0; }
213 | .item .token {
214 | padding-left: 3px;
215 | margin-left: 15px;
216 | font-size: 11.9px; }
217 | .item .declaration-note {
218 | font-size: .85em;
219 | color: gray;
220 | font-style: italic; }
221 |
222 | .pointer-container {
223 | border-bottom: 1px solid #e2e2e2;
224 | left: -23px;
225 | padding-bottom: 13px;
226 | position: relative;
227 | width: 110%; }
228 |
229 | .pointer {
230 | background: #f9f9f9;
231 | border-left: 1px solid #e2e2e2;
232 | border-top: 1px solid #e2e2e2;
233 | height: 12px;
234 | left: 21px;
235 | top: -7px;
236 | -webkit-transform: rotate(45deg);
237 | -moz-transform: rotate(45deg);
238 | -o-transform: rotate(45deg);
239 | transform: rotate(45deg);
240 | position: absolute;
241 | width: 12px; }
242 |
243 | .height-container {
244 | display: none;
245 | left: -25px;
246 | padding: 0 25px;
247 | position: relative;
248 | width: 100%;
249 | overflow: hidden; }
250 | .height-container .section {
251 | background: #f9f9f9;
252 | border-bottom: 1px solid #e2e2e2;
253 | left: -25px;
254 | position: relative;
255 | width: 100%;
256 | padding-top: 10px;
257 | padding-bottom: 5px; }
258 |
259 | .aside, .language {
260 | padding: 6px 12px;
261 | margin: 12px 0;
262 | border-left: 5px solid #dddddd;
263 | overflow-y: hidden; }
264 | .aside .aside-title, .language .aside-title {
265 | font-size: 9px;
266 | letter-spacing: 2px;
267 | text-transform: uppercase;
268 | padding-bottom: 0;
269 | margin: 0;
270 | color: #aaa;
271 | -webkit-user-select: none; }
272 | .aside p:last-child, .language p:last-child {
273 | margin-bottom: 0; }
274 |
275 | .language {
276 | border-left: 5px solid #cde9f4; }
277 | .language .aside-title {
278 | color: #4b8afb; }
279 |
280 | .aside-warning {
281 | border-left: 5px solid #ff6666; }
282 | .aside-warning .aside-title {
283 | color: #ff0000; }
284 |
285 | .graybox {
286 | border-collapse: collapse;
287 | width: 100%; }
288 | .graybox p {
289 | margin: 0;
290 | word-break: break-word;
291 | min-width: 50px; }
292 | .graybox td {
293 | border: 1px solid #e2e2e2;
294 | padding: 5px 25px 5px 10px;
295 | vertical-align: middle; }
296 | .graybox tr td:first-of-type {
297 | text-align: right;
298 | padding: 7px;
299 | vertical-align: top;
300 | word-break: normal;
301 | width: 40px; }
302 |
303 | .slightly-smaller {
304 | font-size: 0.9em; }
305 |
306 | #footer {
307 | position: absolute;
308 | bottom: 10px;
309 | margin-left: 25px; }
310 | #footer p {
311 | margin: 0;
312 | color: #aaa;
313 | font-size: 0.8em; }
314 |
315 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
316 | display: none; }
317 | html.dash .main-content {
318 | width: 980px;
319 | margin-left: 0;
320 | border: none;
321 | width: 100%;
322 | top: 0;
323 | padding-bottom: 0; }
324 | html.dash .height-container {
325 | display: block; }
326 | html.dash .item .token {
327 | margin-left: 0; }
328 | html.dash .content-wrapper {
329 | width: auto; }
330 | html.dash #footer {
331 | position: static; }
332 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIdentifier
6 | com.jazzy.navigationstackdemo
7 | CFBundleName
8 | NavigationStackDemo
9 | DocSetPlatformFamily
10 | jazzy
11 | isDashDocset
12 |
13 | dashIndexFilePath
14 | index.html
15 | isJavaScriptEnabled
16 |
17 | DashDocSetFamily
18 | dashtoc
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/Classes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Classes Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | NavigationStackDemo Reference
22 |
23 | Classes Reference
24 |
25 |
26 |
27 |
39 |
40 |
41 |
42 | Classes
43 | The following classes are available globally.
44 |
45 |
46 |
47 |
48 |
49 | -
50 |
57 |
58 |
59 |
60 |
61 |
62 |
UINavigationcontroller with animation show lists of UIViewControllers
63 |
64 |
See more
65 |
66 |
67 |
Declaration
68 |
69 |
Swift
70 |
public class NavigationStack: UINavigationController
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/Classes/NavigationStack.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | NavigationStack Class Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | NavigationStackDemo Reference
23 |
24 | NavigationStack Class Reference
25 |
26 |
27 |
28 |
40 |
41 |
42 |
43 | NavigationStack
44 |
45 |
46 |
public class NavigationStack: UINavigationController
47 |
48 |
49 |
50 | UINavigationcontroller with animation show lists of UIViewControllers
51 |
52 |
53 |
54 |
55 |
56 | -
57 |
64 |
65 |
66 |
67 |
68 |
69 |
A floating-point value that determines the rate of deceleration after the user lifts their finger.
70 |
71 |
72 |
73 |
Declaration
74 |
75 |
Swift
76 |
@IBInspectable public var decelerationRate: CGFloat = UIScrollViewDecelerationRateNormal
77 |
78 |
79 |
80 |
81 |
82 |
83 | -
84 |
85 |
86 |
87 |
88 | bgColor
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
The color to use for the background of the lists of UIViewcontrollers.
97 |
98 |
99 |
100 |
Declaration
101 |
102 |
Swift
103 |
@IBInspectable public var bgColor: UIColor = .blackColor()
104 |
105 |
106 |
107 |
108 |
109 |
110 | -
111 |
112 |
113 |
114 |
115 | bgView
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
The background UIView of the lists of UIViewcontrollers.
124 |
125 |
126 |
127 |
Declaration
128 |
129 |
Swift
130 |
public var bgView: UIView? = nil
131 |
132 |
133 |
134 |
135 |
136 |
137 | -
138 |
145 |
146 |
147 |
148 |
149 |
150 |
The delegate of the navigation controller object. Use this instead delegate.
151 |
152 |
153 |
154 |
Declaration
155 |
156 |
Swift
157 |
weak public var stackDelegate: UINavigationControllerDelegate?
158 |
159 |
160 |
161 |
162 |
163 |
164 | -
165 |
172 |
173 |
174 |
175 |
176 |
177 |
The initialized navigation controller object or nil if there was a problem initializing the object.
178 |
179 |
180 |
181 |
Declaration
182 |
183 |
Swift
184 |
public required init?(coder aDecoder: NSCoder)
185 |
186 |
187 |
188 |
189 |
Parameters
190 |
191 |
192 |
193 |
194 |
195 | aDecoder
196 |
197 | |
198 |
199 |
200 | aDecoder
201 |
202 |
203 | |
204 |
205 |
206 |
207 |
208 |
209 |
Return Value
210 |
The initialized navigation controller object or nil if there was a problem initializing the object.
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 | -
221 |
228 |
229 |
230 |
231 |
232 |
233 |
Show list of ViewControllers.
234 |
235 |
236 |
237 |
Declaration
238 |
239 |
Swift
240 |
public func showControllers()
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
255 |
256 |
257 |
258 |
259 |
260 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none; }
143 | .nav-group-task a {
144 | color: #888; }
145 |
146 | .main-content {
147 | background-color: #fff;
148 | border: 1px solid #e2e2e2;
149 | margin-left: 246px;
150 | position: absolute;
151 | overflow: hidden;
152 | padding-bottom: 60px;
153 | top: 70px;
154 | width: 734px; }
155 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
156 | margin-bottom: 1em; }
157 | .main-content p {
158 | line-height: 1.8em; }
159 | .main-content section .section:first-child {
160 | margin-top: 0;
161 | padding-top: 0; }
162 | .main-content section .task-group-section .task-group:first-of-type {
163 | padding-top: 10px; }
164 | .main-content section .task-group-section .task-group:first-of-type .section-name {
165 | padding-top: 15px; }
166 |
167 | .section {
168 | padding: 0 25px; }
169 |
170 | .highlight {
171 | background-color: #eee;
172 | padding: 10px 12px;
173 | border: 1px solid #e2e2e2;
174 | border-radius: 4px;
175 | overflow-x: auto; }
176 |
177 | .declaration .highlight {
178 | overflow-x: initial;
179 | padding: 0 40px 40px 0;
180 | margin-bottom: -25px;
181 | background-color: transparent;
182 | border: none; }
183 |
184 | .section-name {
185 | margin: 0;
186 | margin-left: 18px; }
187 |
188 | .task-group-section {
189 | padding-left: 6px;
190 | border-top: 1px solid #e2e2e2; }
191 |
192 | .task-group {
193 | padding-top: 0px; }
194 |
195 | .task-name-container a[name]:before {
196 | content: "";
197 | display: block;
198 | padding-top: 70px;
199 | margin: -70px 0 0; }
200 |
201 | .item {
202 | padding-top: 8px;
203 | width: 100%;
204 | list-style-type: none; }
205 | .item a[name]:before {
206 | content: "";
207 | display: block;
208 | padding-top: 70px;
209 | margin: -70px 0 0; }
210 | .item code {
211 | background-color: transparent;
212 | padding: 0; }
213 | .item .token {
214 | padding-left: 3px;
215 | margin-left: 15px;
216 | font-size: 11.9px; }
217 | .item .declaration-note {
218 | font-size: .85em;
219 | color: gray;
220 | font-style: italic; }
221 |
222 | .pointer-container {
223 | border-bottom: 1px solid #e2e2e2;
224 | left: -23px;
225 | padding-bottom: 13px;
226 | position: relative;
227 | width: 110%; }
228 |
229 | .pointer {
230 | background: #f9f9f9;
231 | border-left: 1px solid #e2e2e2;
232 | border-top: 1px solid #e2e2e2;
233 | height: 12px;
234 | left: 21px;
235 | top: -7px;
236 | -webkit-transform: rotate(45deg);
237 | -moz-transform: rotate(45deg);
238 | -o-transform: rotate(45deg);
239 | transform: rotate(45deg);
240 | position: absolute;
241 | width: 12px; }
242 |
243 | .height-container {
244 | display: none;
245 | left: -25px;
246 | padding: 0 25px;
247 | position: relative;
248 | width: 100%;
249 | overflow: hidden; }
250 | .height-container .section {
251 | background: #f9f9f9;
252 | border-bottom: 1px solid #e2e2e2;
253 | left: -25px;
254 | position: relative;
255 | width: 100%;
256 | padding-top: 10px;
257 | padding-bottom: 5px; }
258 |
259 | .aside, .language {
260 | padding: 6px 12px;
261 | margin: 12px 0;
262 | border-left: 5px solid #dddddd;
263 | overflow-y: hidden; }
264 | .aside .aside-title, .language .aside-title {
265 | font-size: 9px;
266 | letter-spacing: 2px;
267 | text-transform: uppercase;
268 | padding-bottom: 0;
269 | margin: 0;
270 | color: #aaa;
271 | -webkit-user-select: none; }
272 | .aside p:last-child, .language p:last-child {
273 | margin-bottom: 0; }
274 |
275 | .language {
276 | border-left: 5px solid #cde9f4; }
277 | .language .aside-title {
278 | color: #4b8afb; }
279 |
280 | .aside-warning {
281 | border-left: 5px solid #ff6666; }
282 | .aside-warning .aside-title {
283 | color: #ff0000; }
284 |
285 | .graybox {
286 | border-collapse: collapse;
287 | width: 100%; }
288 | .graybox p {
289 | margin: 0;
290 | word-break: break-word;
291 | min-width: 50px; }
292 | .graybox td {
293 | border: 1px solid #e2e2e2;
294 | padding: 5px 25px 5px 10px;
295 | vertical-align: middle; }
296 | .graybox tr td:first-of-type {
297 | text-align: right;
298 | padding: 7px;
299 | vertical-align: top;
300 | word-break: normal;
301 | width: 40px; }
302 |
303 | .slightly-smaller {
304 | font-size: 0.9em; }
305 |
306 | #footer {
307 | position: absolute;
308 | bottom: 10px;
309 | margin-left: 25px; }
310 | #footer p {
311 | margin: 0;
312 | color: #aaa;
313 | font-size: 0.8em; }
314 |
315 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
316 | display: none; }
317 | html.dash .main-content {
318 | width: 980px;
319 | margin-left: 0;
320 | border: none;
321 | width: 100%;
322 | top: 0;
323 | padding-bottom: 0; }
324 | html.dash .height-container {
325 | display: block; }
326 | html.dash .item .token {
327 | margin-left: 0; }
328 | html.dash .content-wrapper {
329 | width: auto; }
330 | html.dash #footer {
331 | position: static; }
332 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/carat.png
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/dash.png
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/img/gh.png
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | NavigationStackDemo Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | NavigationStackDemo Reference
22 |
23 | NavigationStackDemo Reference
24 |
25 |
26 |
27 |
39 |
40 |
41 |
42 |
43 | 
44 | navigation-stack
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | 
53 |
54 | shot on dribbble:
55 | 
56 |
57 | The iPhone mockup available here.
58 | Requirements
59 |
60 |
61 | - iOS 9.0+
62 | - Xcode 7.3
63 |
64 | Installation
65 |
66 | Just add the Source folder to your project.
67 |
68 | or use CocoaPods with Podfile:
69 | ruby
70 | pod 'Navigation-stack'
71 |
72 |
73 | or Carthage users can simply add to their Cartfile
:
74 |
75 | github "Ramotion/navigation-stack"
76 |
77 | Usage
78 |
79 | 1) YourNavigationController inherit from NavigationStack
80 |
81 | 2) add code to root viewViewController
82 | override func viewDidLoad() {
83 | super.viewDidLoad()
84 | navigationController!.interactivePopGestureRecognizer?.delegate = self
85 | }
86 |
87 | extension YourViewController: UIGestureRecognizerDelegate {
88 | func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
89 |
90 | if navigationController?.viewControllers.count == 2 {
91 | return true
92 | }
93 |
94 | if let navigationController = self.navigationController as? NavigationStack {
95 | navigationController.showControllers()
96 | }
97 |
98 | return false
99 | }
100 | }
101 |
102 | Licence
103 |
104 | Navigation-stack is released under the MIT license.
105 | See LICENSE for details.
106 | About
107 |
108 | The project maintained by app development agency Ramotion Inc.
109 | See our other open-source projects or hire us to design, develop, and grow your product.
110 |
111 |
112 | 
113 |
114 |
115 |
116 |
120 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/js/jazzy.js:
--------------------------------------------------------------------------------
1 | window.jazzy = {'docset': false}
2 | if (typeof window.dash != 'undefined') {
3 | document.documentElement.className += ' dash'
4 | window.jazzy.docset = true
5 | }
6 | if (navigator.userAgent.match(/xcode/i)) {
7 | document.documentElement.className += ' xcode'
8 | window.jazzy.docset = true
9 | }
10 |
11 | // On doc load, toggle the URL hash discussion if present
12 | $(document).ready(function() {
13 | if (!window.jazzy.docset) {
14 | var linkToHash = $('a[href="' + window.location.hash +'"]');
15 | linkToHash.trigger("click");
16 | }
17 | });
18 |
19 | // On token click, toggle its discussion and animate token.marginLeft
20 | $(".token").click(function(event) {
21 | if (window.jazzy.docset) {
22 | return;
23 | }
24 | var link = $(this);
25 | var animationDuration = 300;
26 | var tokenOffset = "15px";
27 | var original = link.css('marginLeft') == tokenOffset;
28 | link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
29 | $content = link.parent().parent().next();
30 | $content.slideToggle(animationDuration);
31 |
32 | // Keeps the document from jumping to the hash.
33 | var href = $(this).attr('href');
34 | if (history.pushState) {
35 | history.pushState({}, '', href);
36 | } else {
37 | location.hash = href;
38 | }
39 | event.preventDefault();
40 | });
41 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/Documents/undocumented.txt:
--------------------------------------------------------------------------------
1 | NavigationStack.swift
2 | public func navigationController(navigationController: UINavigationController,
3 | willShowViewController viewController: UIViewController,
4 | animated: Bool)
5 | public func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool)
6 | public func navigationController(navigationController: UINavigationController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
7 | public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
8 |
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/docsets/NavigationStackDemo.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/docsets/NavigationStackDemo.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/docsets/NavigationStackDemo.tgz
--------------------------------------------------------------------------------
/docs/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/img/carat.png
--------------------------------------------------------------------------------
/docs/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/img/dash.png
--------------------------------------------------------------------------------
/docs/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/docs/img/gh.png
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | NavigationStackDemo Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | NavigationStackDemo Reference
22 |
23 | NavigationStackDemo Reference
24 |
25 |
26 |
27 |
39 |
40 |
41 |
42 |
43 | 
44 | navigation-stack
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | 
53 |
54 | shot on dribbble:
55 | 
56 |
57 | The iPhone mockup available here.
58 | Requirements
59 |
60 |
61 | - iOS 9.0+
62 | - Xcode 7.3
63 |
64 | Installation
65 |
66 | Just add the Source folder to your project.
67 |
68 | or use CocoaPods with Podfile:
69 | ruby
70 | pod 'Navigation-stack'
71 |
72 |
73 | or Carthage users can simply add to their Cartfile
:
74 |
75 | github "Ramotion/navigation-stack"
76 |
77 | Usage
78 |
79 | 1) YourNavigationController inherit from NavigationStack
80 |
81 | 2) add code to root viewViewController
82 | override func viewDidLoad() {
83 | super.viewDidLoad()
84 | navigationController!.interactivePopGestureRecognizer?.delegate = self
85 | }
86 |
87 | extension YourViewController: UIGestureRecognizerDelegate {
88 | func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
89 |
90 | if navigationController?.viewControllers.count == 2 {
91 | return true
92 | }
93 |
94 | if let navigationController = self.navigationController as? NavigationStack {
95 | navigationController.showControllers()
96 | }
97 |
98 | return false
99 | }
100 | }
101 |
102 | Licence
103 |
104 | Navigation-stack is released under the MIT license.
105 | See LICENSE for details.
106 | About
107 |
108 | The project maintained by app development agency Ramotion Inc.
109 | See our other open-source projects or hire us to design, develop, and grow your product.
110 |
111 |
112 | 
113 |
114 |
115 |
116 |
120 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/docs/js/jazzy.js:
--------------------------------------------------------------------------------
1 | window.jazzy = {'docset': false}
2 | if (typeof window.dash != 'undefined') {
3 | document.documentElement.className += ' dash'
4 | window.jazzy.docset = true
5 | }
6 | if (navigator.userAgent.match(/xcode/i)) {
7 | document.documentElement.className += ' xcode'
8 | window.jazzy.docset = true
9 | }
10 |
11 | // On doc load, toggle the URL hash discussion if present
12 | $(document).ready(function() {
13 | if (!window.jazzy.docset) {
14 | var linkToHash = $('a[href="' + window.location.hash +'"]');
15 | linkToHash.trigger("click");
16 | }
17 | });
18 |
19 | // On token click, toggle its discussion and animate token.marginLeft
20 | $(".token").click(function(event) {
21 | if (window.jazzy.docset) {
22 | return;
23 | }
24 | var link = $(this);
25 | var animationDuration = 300;
26 | var tokenOffset = "15px";
27 | var original = link.css('marginLeft') == tokenOffset;
28 | link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration);
29 | $content = link.parent().parent().next();
30 | $content.slideToggle(animationDuration);
31 |
32 | // Keeps the document from jumping to the hash.
33 | var href = $(this).attr('href');
34 | if (history.pushState) {
35 | history.pushState({}, '', href);
36 | } else {
37 | location.hash = href;
38 | }
39 | event.preventDefault();
40 | });
41 |
--------------------------------------------------------------------------------
/docs/undocumented.txt:
--------------------------------------------------------------------------------
1 | NavigationStack.swift
2 | public func navigationController(navigationController: UINavigationController,
3 | willShowViewController viewController: UIViewController,
4 | animated: Bool)
5 | public func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool)
6 | public func navigationController(navigationController: UINavigationController, interactionControllerForAnimationController animationController: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
7 | public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
8 |
--------------------------------------------------------------------------------
/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/header.png
--------------------------------------------------------------------------------
/navigation-stack.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ramotion/navigation-stack/9efb3a2eb741a0555d9c6f3a2835abaa4f3623b8/navigation-stack.gif
--------------------------------------------------------------------------------