Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Material
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
Material
Commits
9f00b30f
Unverified
Commit
9f00b30f
authored
Apr 24, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
renamed PageMenuController to TabsController
parent
da69383e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
426 deletions
+28
-426
Material.xcodeproj/project.pbxproj
+10
-24
Sources/iOS/PageTabBarController.swift
+0
-384
Sources/iOS/TabsController.swift
+18
-18
No files found.
Material.xcodeproj/project.pbxproj
View file @
9f00b30f
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
objects
=
{
objects
=
{
/* Begin PBXBuildFile section */
/* Begin PBXBuildFile section */
9606CFAC1E957AC3006B4E74
/*
PageMenuController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9606CFAB1E957AC3006B4E74
/* PageMenu
Controller.swift */
;
};
9606CFAC1E957AC3006B4E74
/*
TabsController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9606CFAB1E957AC3006B4E74
/* Tabs
Controller.swift */
;
};
961409B01E43D15C00E7BA99
/* CollectionViewCard.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
961730591E145DE900A9A297
/* CollectionViewCard.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
961409B01E43D15C00E7BA99
/* CollectionViewCard.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
961730591E145DE900A9A297
/* CollectionViewCard.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
961409B11E43D15C00E7BA99
/* FABMenu.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96A183621E0C6CE200083C30
/* FABMenu.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
961409B11E43D15C00E7BA99
/* FABMenu.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96A183621E0C6CE200083C30
/* FABMenu.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
961409B21E43D15C00E7BA99
/* FABMenuController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96A183641E0C6DD400083C30
/* FABMenuController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
961409B21E43D15C00E7BA99
/* FABMenuController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96A183641E0C6DD400083C30
/* FABMenuController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
9617B0821DFCA8CF00410F8F
/* CapturePreview.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B0F1DBE6AF600DA84DB
/* CapturePreview.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0821DFCA8CF00410F8F
/* CapturePreview.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B0F1DBE6AF600DA84DB
/* CapturePreview.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0831DFCA8CF00410F8F
/* CaptureController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B0E1DBE6AF600DA84DB
/* CaptureController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0831DFCA8CF00410F8F
/* CaptureController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B0E1DBE6AF600DA84DB
/* CaptureController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0861DFCA8CF00410F8F
/* HeightPreset.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9626CB9A1DAD3D1D003E2611
/* HeightPreset.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0861DFCA8CF00410F8F
/* HeightPreset.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9626CB9A1DAD3D1D003E2611
/* HeightPreset.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0871DFCA8CF00410F8F
/* PageTabBarController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
963FBF071D669D14008F8512
/* PageTabBarController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0881DFCA8CF00410F8F
/* PhotoLibrary.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B161DBE6B1800DA84DB
/* PhotoLibrary.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0881DFCA8CF00410F8F
/* PhotoLibrary.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B161DBE6B1800DA84DB
/* PhotoLibrary.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0891DFCA8CF00410F8F
/* PhotoLibraryController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B171DBE6B1800DA84DB
/* PhotoLibraryController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B0891DFCA8CF00410F8F
/* PhotoLibraryController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96717B171DBE6B1800DA84DB
/* PhotoLibraryController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B08A1DFCA8CF00410F8F
/* DisplayStyle.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9626CA961DAB53A8003E2611
/* DisplayStyle.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
9617B08A1DFCA8CF00410F8F
/* DisplayStyle.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9626CA961DAB53A8003E2611
/* DisplayStyle.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
...
@@ -80,7 +79,6 @@
...
@@ -80,7 +79,6 @@
965E80F71DD4D59500D61E4B
/* Card.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB75D1CB40DC500C806FE
/* Card.swift */
;
};
965E80F71DD4D59500D61E4B
/* Card.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB75D1CB40DC500C806FE
/* Card.swift */
;
};
965E80F81DD4D59500D61E4B
/* ImageCard.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7621CB40DC500C806FE
/* ImageCard.swift */
;
};
965E80F81DD4D59500D61E4B
/* ImageCard.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7621CB40DC500C806FE
/* ImageCard.swift */
;
};
965E80F91DD4D59500D61E4B
/* PresenterCard.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9631A7C01D95E3AC00CFB109
/* PresenterCard.swift */
;
};
965E80F91DD4D59500D61E4B
/* PresenterCard.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9631A7C01D95E3AC00CFB109
/* PresenterCard.swift */
;
};
965E80FA1DD4D59500D61E4B
/* PageTabBarController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
963FBF071D669D14008F8512
/* PageTabBarController.swift */
;
};
965E80FB1DD4D59500D61E4B
/* SearchBar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7951CB40DC500C806FE
/* SearchBar.swift */
;
};
965E80FB1DD4D59500D61E4B
/* SearchBar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7951CB40DC500C806FE
/* SearchBar.swift */
;
};
965E80FC1DD4D59500D61E4B
/* SearchBarController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
;
};
965E80FC1DD4D59500D61E4B
/* SearchBarController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
;
};
965E80FD1DD4D59500D61E4B
/* Toolbar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB79F1CB40DC500C806FE
/* Toolbar.swift */
;
};
965E80FD1DD4D59500D61E4B
/* Toolbar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB79F1CB40DC500C806FE
/* Toolbar.swift */
;
};
...
@@ -190,7 +188,7 @@
...
@@ -190,7 +188,7 @@
/* End PBXBuildFile section */
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
/* Begin PBXFileReference section */
9606CFAB1E957AC3006B4E74
/*
PageMenuController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
PageMenu
Controller.swift
;
sourceTree
=
"<group>"
;
};
9606CFAB1E957AC3006B4E74
/*
TabsController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Tabs
Controller.swift
;
sourceTree
=
"<group>"
;
};
961276621DCD8B1800A7D920
/* CharacterAttribute.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CharacterAttribute.swift
;
sourceTree
=
"<group>"
;
};
961276621DCD8B1800A7D920
/* CharacterAttribute.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CharacterAttribute.swift
;
sourceTree
=
"<group>"
;
};
961730591E145DE900A9A297
/* CollectionViewCard.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CollectionViewCard.swift
;
sourceTree
=
"<group>"
;
};
961730591E145DE900A9A297
/* CollectionViewCard.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CollectionViewCard.swift
;
sourceTree
=
"<group>"
;
};
961E6BDE1DDA2A95004E6C93
/* Application.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Application.swift
;
sourceTree
=
"<group>"
;
};
961E6BDE1DDA2A95004E6C93
/* Application.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Application.swift
;
sourceTree
=
"<group>"
;
};
...
@@ -211,7 +209,6 @@
...
@@ -211,7 +209,6 @@
96334EF51C8B84660083986B
/* Assets.xcassets */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
folder.assetcatalog
;
path
=
Assets.xcassets
;
sourceTree
=
"<group>"
;
};
96334EF51C8B84660083986B
/* Assets.xcassets */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
folder.assetcatalog
;
path
=
Assets.xcassets
;
sourceTree
=
"<group>"
;
};
963832361B88DFD80015F710
/* Material.framework */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.framework
;
includeInIndex
=
0
;
path
=
Material.framework
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
963832361B88DFD80015F710
/* Material.framework */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.framework
;
includeInIndex
=
0
;
path
=
Material.framework
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
963FBEFC1D669510008F8512
/* Snackbar.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Snackbar.swift
;
sourceTree
=
"<group>"
;
};
963FBEFC1D669510008F8512
/* Snackbar.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Snackbar.swift
;
sourceTree
=
"<group>"
;
};
963FBF071D669D14008F8512
/* PageTabBarController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
PageTabBarController.swift
;
sourceTree
=
"<group>"
;
};
965532281E47E388005C2792
/* SpringAnimation.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
SpringAnimation.swift
;
sourceTree
=
"<group>"
;
};
965532281E47E388005C2792
/* SpringAnimation.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
SpringAnimation.swift
;
sourceTree
=
"<group>"
;
};
9658F2161CD6FA4700B902C1
/* IconButton.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
IconButton.swift
;
sourceTree
=
"<group>"
;
};
9658F2161CD6FA4700B902C1
/* IconButton.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
IconButton.swift
;
sourceTree
=
"<group>"
;
};
966ECF291CF4C20100BB0BDF
/* CollectionReusableView.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CollectionReusableView.swift
;
sourceTree
=
"<group>"
;
};
966ECF291CF4C20100BB0BDF
/* CollectionReusableView.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
CollectionReusableView.swift
;
sourceTree
=
"<group>"
;
};
...
@@ -364,15 +361,6 @@
...
@@ -364,15 +361,6 @@
name
=
Height
;
name
=
Height
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
962DDD071D6FBBB7001C307C
/* PageTabMenu */
=
{
isa
=
PBXGroup
;
children
=
(
963FBF071D669D14008F8512
/* PageTabBarController.swift */
,
9606CFAB1E957AC3006B4E74
/* PageMenuController.swift */
,
);
name
=
PageTabMenu
;
sourceTree
=
"<group>"
;
};
962DDD081D6FBBD0001C307C
/* BottomTabBar */
=
{
962DDD081D6FBBD0001C307C
/* BottomTabBar */
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
...
@@ -433,21 +421,22 @@
...
@@ -433,21 +421,22 @@
name
=
Toolbar
;
name
=
Toolbar
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
963FBF011D6696AB008F8512
/* Tab
Bar
*/
=
{
963FBF011D6696AB008F8512
/* Tab
s
*/
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
9606CFAB1E957AC3006B4E74
/* TabsController.swift */
,
96BCB79A1CB40DC500C806FE
/* TabBar.swift */
,
96BCB79A1CB40DC500C806FE
/* TabBar.swift */
,
);
);
name
=
Tab
Bar
;
name
=
Tab
s
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
963FBF021D6696D0008F8512
/* Menu */
=
{
963FBF021D6696D0008F8512
/*
FAB
Menu */
=
{
isa
=
PBXGroup
;
isa
=
PBXGroup
;
children
=
(
children
=
(
96A183621E0C6CE200083C30
/* FABMenu.swift */
,
96A183621E0C6CE200083C30
/* FABMenu.swift */
,
96A183641E0C6DD400083C30
/* FABMenuController.swift */
,
96A183641E0C6DD400083C30
/* FABMenuController.swift */
,
);
);
name
=
Menu
;
name
=
FAB
Menu
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
};
};
963FBF031D6696EF008F8512
/* SearchBar */
=
{
963FBF031D6696EF008F8512
/* SearchBar */
=
{
...
@@ -520,17 +509,16 @@
...
@@ -520,17 +509,16 @@
96BCB80B1CB410CC00C806FE
/* Device */
,
96BCB80B1CB410CC00C806FE
/* Device */
,
96230AB61D6A51FD00AF47DC
/* Divider */
,
96230AB61D6A51FD00AF47DC
/* Divider */
,
96BCB80A1CB410A100C806FE
/* Extension */
,
96BCB80A1CB410A100C806FE
/* Extension */
,
963FBF021D6696D0008F8512
/* FABMenu */
,
96BCB8071CB4101C00C806FE
/* Font */
,
96BCB8071CB4101C00C806FE
/* Font */
,
9602F00C1DA1163000F3FB79
/* Grid */
,
9602F00C1DA1163000F3FB79
/* Grid */
,
9626CBCC1DADA5F1003E2611
/* Height */
,
9626CBCC1DADA5F1003E2611
/* Height */
,
96BCB8081CB4105E00C806FE
/* Icon */
,
96BCB8081CB4105E00C806FE
/* Icon */
,
96BCB80D1CB410FD00C806FE
/* Layer */
,
96BCB80D1CB410FD00C806FE
/* Layer */
,
96BCB8041CB40F6C00C806FE
/* Layout */
,
96BCB8041CB40F6C00C806FE
/* Layout */
,
963FBF021D6696D0008F8512
/* Menu */
,
96BCB8091CB4107700C806FE
/* Motion */
,
96BCB8091CB4107700C806FE
/* Motion */
,
96BCB8011CB40F1700C806FE
/* Navigation */
,
96BCB8011CB40F1700C806FE
/* Navigation */
,
961E6BEF1DDA4B04004E6C93
/* NavigationDrawer */
,
961E6BEF1DDA4B04004E6C93
/* NavigationDrawer */
,
962DDD071D6FBBB7001C307C
/* PageTabMenu */
,
96717B151DBE6B1800DA84DB
/* Photos */
,
96717B151DBE6B1800DA84DB
/* Photos */
,
96328B8F1E05B69A009A4C90
/* Reminders */
,
96328B8F1E05B69A009A4C90
/* Reminders */
,
9626CA951DAB5370003E2611
/* Root */
,
9626CA951DAB5370003E2611
/* Root */
,
...
@@ -539,7 +527,7 @@
...
@@ -539,7 +527,7 @@
963FBEFB1D6694E8008F8512
/* Snackbar */
,
963FBEFB1D6694E8008F8512
/* Snackbar */
,
967A48171D0F424B00B8CEB7
/* StatusBar */
,
967A48171D0F424B00B8CEB7
/* StatusBar */
,
968C99421D36EC9E000074FF
/* Switch */
,
968C99421D36EC9E000074FF
/* Switch */
,
963FBF011D6696AB008F8512
/* Tab
Bar
*/
,
963FBF011D6696AB008F8512
/* Tab
s
*/
,
966ECF2B1CF4C21B00BB0BDF
/* Table */
,
966ECF2B1CF4C21B00BB0BDF
/* Table */
,
96090B031D9D709E00709CA6
/* TextField */
,
96090B031D9D709E00709CA6
/* TextField */
,
96BCB80E1CB4110E00C806FE
/* TextView */
,
96BCB80E1CB4110E00C806FE
/* TextView */
,
...
@@ -817,7 +805,6 @@
...
@@ -817,7 +805,6 @@
9617B0821DFCA8CF00410F8F
/* CapturePreview.swift in Headers */
,
9617B0821DFCA8CF00410F8F
/* CapturePreview.swift in Headers */
,
9617B0831DFCA8CF00410F8F
/* CaptureController.swift in Headers */
,
9617B0831DFCA8CF00410F8F
/* CaptureController.swift in Headers */
,
9617B0861DFCA8CF00410F8F
/* HeightPreset.swift in Headers */
,
9617B0861DFCA8CF00410F8F
/* HeightPreset.swift in Headers */
,
9617B0871DFCA8CF00410F8F
/* PageTabBarController.swift in Headers */
,
9617B0881DFCA8CF00410F8F
/* PhotoLibrary.swift in Headers */
,
9617B0881DFCA8CF00410F8F
/* PhotoLibrary.swift in Headers */
,
9617B0891DFCA8CF00410F8F
/* PhotoLibraryController.swift in Headers */
,
9617B0891DFCA8CF00410F8F
/* PhotoLibraryController.swift in Headers */
,
9617B08A1DFCA8CF00410F8F
/* DisplayStyle.swift in Headers */
,
9617B08A1DFCA8CF00410F8F
/* DisplayStyle.swift in Headers */
,
...
@@ -959,7 +946,6 @@
...
@@ -959,7 +946,6 @@
965E81221DD4D5C800D61E4B
/* TextView.swift in Sources */
,
965E81221DD4D5C800D61E4B
/* TextView.swift in Sources */
,
965E80E61DD4C55200D61E4B
/* Material+Obj-C.swift in Sources */
,
965E80E61DD4C55200D61E4B
/* Material+Obj-C.swift in Sources */
,
965E80E71DD4C55200D61E4B
/* Material+UIView.swift in Sources */
,
965E80E71DD4C55200D61E4B
/* Material+UIView.swift in Sources */
,
965E80FA1DD4D59500D61E4B
/* PageTabBarController.swift in Sources */
,
965E80E81DD4C55200D61E4B
/* Material+CALayer.swift in Sources */
,
965E80E81DD4C55200D61E4B
/* Material+CALayer.swift in Sources */
,
965E80E91DD4C55200D61E4B
/* Material+String.swift in Sources */
,
965E80E91DD4C55200D61E4B
/* Material+String.swift in Sources */
,
965E80F71DD4D59500D61E4B
/* Card.swift in Sources */
,
965E80F71DD4D59500D61E4B
/* Card.swift in Sources */
,
...
@@ -995,7 +981,7 @@
...
@@ -995,7 +981,7 @@
965E80D81DD4C50600D61E4B
/* Layer.swift in Sources */
,
965E80D81DD4C50600D61E4B
/* Layer.swift in Sources */
,
965E80D91DD4C50600D61E4B
/* Layout.swift in Sources */
,
965E80D91DD4C50600D61E4B
/* Layout.swift in Sources */
,
965E80DA1DD4C50600D61E4B
/* Border.swift in Sources */
,
965E80DA1DD4C50600D61E4B
/* Border.swift in Sources */
,
9606CFAC1E957AC3006B4E74
/*
PageMenu
Controller.swift in Sources */
,
9606CFAC1E957AC3006B4E74
/*
Tabs
Controller.swift in Sources */
,
965E80DB1DD4C50600D61E4B
/* InterimSpace.swift in Sources */
,
965E80DB1DD4C50600D61E4B
/* InterimSpace.swift in Sources */
,
965E80DC1DD4C50600D61E4B
/* Depth.swift in Sources */
,
965E80DC1DD4C50600D61E4B
/* Depth.swift in Sources */
,
965E80DD1DD4C50600D61E4B
/* EdgeInsets.swift in Sources */
,
965E80DD1DD4C50600D61E4B
/* EdgeInsets.swift in Sources */
,
...
...
Sources/iOS/PageTabBarController.swift
deleted
100644 → 0
View file @
da69383e
/*
* Copyright (C) 2015 - 2017, Daniel Dahan and CosmicMind, Inc. <http://cosmicmind.com>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of CosmicMind nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import
UIKit
/// A memory reference to the PageTabBarItem instance for UIViewController extensions.
fileprivate
var
PageTabBarItemKey
:
UInt8
=
0
open
class
PageTabBarItem
:
FlatButton
{
open
override
func
prepare
()
{
super
.
prepare
()
pulseAnimation
=
.
none
}
}
open
class
PageTabBar
:
TabBar
{
open
override
func
prepare
()
{
super
.
prepare
()
isLineAnimated
=
false
lineAlignment
=
.
top
}
}
@objc(PageTabBarAlignment)
public
enum
PageTabBarAlignment
:
Int
{
case
top
case
bottom
}
extension
UIViewController
{
/// PageTabBarItem reference.
public
private(set)
var
pageTabBarItem
:
PageTabBarItem
{
get
{
return
AssociatedObject
(
base
:
self
,
key
:
&
PageTabBarItemKey
)
{
return
PageTabBarItem
()
}
}
set
(
value
)
{
AssociateObject
(
base
:
self
,
key
:
&
PageTabBarItemKey
,
value
:
value
)
}
}
}
extension
UIViewController
{
/**
A convenience property that provides access to the PageTabBarController.
This is the recommended method of accessing the PageTabBarController
through child UIViewControllers.
*/
public
var
pageTabBarController
:
PageTabBarController
?
{
var
viewController
:
UIViewController
?
=
self
while
nil
!=
viewController
{
if
viewController
is
PageTabBarController
{
return
viewController
as?
PageTabBarController
}
viewController
=
viewController
?
.
parent
}
return
nil
}
}
@objc(PageTabBarControllerDelegate)
public
protocol
PageTabBarControllerDelegate
{
/**
A delegation method that is executed when a UIViewController did transition to.
- Parameter pageTabBarController: A PageTabBarController.
- Parameter willTransitionTo viewController: A UIViewController.
*/
@objc
optional
func
pageTabBarController
(
pageTabBarController
:
PageTabBarController
,
didTransitionTo
viewController
:
UIViewController
)
}
open
class
PageTabBarController
:
RootController
{
/// Reference to the PageTabBar.
@IBInspectable
open
let
pageTabBar
=
PageTabBar
()
/// A boolean that indicates whether bounce is enabled.
open
var
isBounceEnabled
:
Bool
{
didSet
{
scrollView
?
.
bounces
=
isBounceEnabled
}
}
/// Indicates that the tab has been pressed and animating.
open
internal(set)
var
isTabSelectedAnimation
=
false
/// An internal reference to the selectedIndex.
fileprivate
var
internalSelectedIndex
=
0
/// The currently selected UIViewController.
open
var
selectedIndex
:
Int
{
get
{
return
internalSelectedIndex
}
set
(
value
)
{
setInternalSelectedIndex
(
index
:
value
,
animated
:
true
)
}
}
/// PageTabBar alignment setting.
open
var
pageTabBarAlignment
=
PageTabBarAlignment
.
bottom
/// Delegation handler.
open
weak
var
delegate
:
PageTabBarControllerDelegate
?
/// A reference to the instance when it is a UIPageViewController.
open
var
pageViewController
:
UIPageViewController
?
{
return
rootViewController
as?
UIPageViewController
}
/// A reference to the scrollView.
open
var
scrollView
:
UIScrollView
?
{
guard
let
v
=
pageViewController
else
{
return
nil
}
for
view
in
v
.
view
.
subviews
{
if
let
v
=
view
as?
UIScrollView
{
return
v
}
}
return
nil
}
/// A reference to the UIViewControllers.
open
var
viewControllers
=
[
UIViewController
]()
public
required
init
?(
coder
aDecoder
:
NSCoder
)
{
isBounceEnabled
=
true
super
.
init
(
coder
:
aDecoder
)
}
public
override
init
(
rootViewController
:
UIViewController
)
{
isBounceEnabled
=
true
super
.
init
(
rootViewController
:
UIPageViewController
(
transitionStyle
:
.
scroll
,
navigationOrientation
:
.
horizontal
,
options
:
nil
))
viewControllers
.
append
(
rootViewController
)
setInternalSelectedIndex
(
index
:
0
,
animated
:
true
)
}
public
init
(
viewControllers
:
[
UIViewController
],
selectedIndex
index
:
Int
=
0
)
{
isBounceEnabled
=
true
super
.
init
(
rootViewController
:
UIPageViewController
(
transitionStyle
:
.
scroll
,
navigationOrientation
:
.
horizontal
,
options
:
nil
))
self
.
viewControllers
.
append
(
contentsOf
:
viewControllers
)
setInternalSelectedIndex
(
index
:
index
,
animated
:
true
)
}
open
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
prepare
()
}
open
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
let
p
=
pageTabBar
.
intrinsicContentSize
.
height
+
pageTabBar
.
layoutEdgeInsets
.
top
+
pageTabBar
.
layoutEdgeInsets
.
bottom
let
y
=
view
.
height
-
p
pageTabBar
.
height
=
p
pageTabBar
.
width
=
view
.
width
+
pageTabBar
.
layoutEdgeInsets
.
left
+
pageTabBar
.
layoutEdgeInsets
.
right
rootViewController
.
view
.
height
=
y
switch
pageTabBarAlignment
{
case
.
top
:
pageTabBar
.
y
=
0
rootViewController
.
view
.
y
=
p
case
.
bottom
:
pageTabBar
.
y
=
y
rootViewController
.
view
.
y
=
0
}
}
/**
Sets the view controllers.
- Parameter _ viewController: An Array of UIViewControllers.
- Parameter direction: A UIPageViewControllerNavigationDirection enum value.
- Parameter animated: A boolean indicating to include animation.
- Parameter completion: An optional completion block.
*/
open
func
setViewControllers
(
_
viewControllers
:
[
UIViewController
],
direction
:
UIPageViewControllerNavigationDirection
,
animated
:
Bool
,
completion
:
((
Bool
)
->
Void
)?
=
nil
)
{
pageViewController
?
.
setViewControllers
(
viewControllers
,
direction
:
direction
,
animated
:
animated
,
completion
:
completion
)
}
/**
Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepare method
to initialize property values and other setup operations.
The super.prepare method should always be called immediately
when subclassing.
*/
open
override
func
prepare
()
{
super
.
prepare
()
preparePageTabBar
()
preparePageTabBarItems
()
}
open
override
func
prepareRootViewController
()
{
super
.
prepareRootViewController
()
guard
let
v
=
pageViewController
else
{
return
}
v
.
delegate
=
self
v
.
dataSource
=
self
v
.
isDoubleSided
=
false
scrollView
?
.
delegate
=
self
}
/// Prepares the pageTabBarItems.
open
func
preparePageTabBarItems
()
{
pageTabBar
.
buttons
.
removeAll
()
for
x
in
viewControllers
{
let
button
=
x
.
pageTabBarItem
as
UIButton
pageTabBar
.
buttons
.
append
(
button
)
button
.
removeTarget
(
self
,
action
:
#selector(
handlePageTabBarButton(button:)
)
,
for
:
.
touchUpInside
)
button
.
addTarget
(
self
,
action
:
#selector(
handlePageTabBarButton(button:)
)
,
for
:
.
touchUpInside
)
}
}
}
extension
PageTabBarController
{
/// Prepares the pageTabBar.
fileprivate
func
preparePageTabBar
()
{
pageTabBar
.
zPosition
=
1000
pageTabBar
.
dividerColor
=
Color
.
grey
.
lighten3
view
.
addSubview
(
pageTabBar
)
pageTabBar
.
select
(
at
:
internalSelectedIndex
)
}
}
extension
PageTabBarController
{
/**
Handles the pageTabBarButton.
- Parameter button: A UIButton.
*/
@objc
fileprivate
func
handlePageTabBarButton
(
button
:
UIButton
)
{
guard
let
index
=
pageTabBar
.
buttons
.
index
(
of
:
button
)
else
{
return
}
guard
index
!=
internalSelectedIndex
else
{
return
}
setInternalSelectedIndex
(
index
:
index
,
animated
:
true
)
}
}
extension
PageTabBarController
{
/**
Internally sets the internalSelectedIndex value.
- Parameter index: Int.
- Parameter animated: Bool.
*/
fileprivate
func
setInternalSelectedIndex
(
index
:
Int
,
animated
:
Bool
=
false
)
{
guard
animated
else
{
internalSelectedIndex
=
index
return
}
let
direction
:
UIPageViewControllerNavigationDirection
=
index
<
internalSelectedIndex
?
.
reverse
:
.
forward
isTabSelectedAnimation
=
true
internalSelectedIndex
=
index
pageTabBar
.
select
(
at
:
internalSelectedIndex
)
setViewControllers
([
viewControllers
[
internalSelectedIndex
]],
direction
:
direction
,
animated
:
true
)
{
[
weak
self
]
_
in
guard
let
s
=
self
else
{
return
}
s
.
isTabSelectedAnimation
=
false
s
.
delegate
?
.
pageTabBarController
?(
pageTabBarController
:
s
,
didTransitionTo
:
s
.
viewControllers
[
s
.
internalSelectedIndex
])
}
}
}
extension
PageTabBarController
:
UIPageViewControllerDelegate
{
open
func
pageViewController
(
_
pageViewController
:
UIPageViewController
,
didFinishAnimating
finished
:
Bool
,
previousViewControllers
:
[
UIViewController
],
transitionCompleted
completed
:
Bool
)
{
guard
let
v
=
pageViewController
.
viewControllers
?
.
first
else
{
return
}
guard
let
index
=
viewControllers
.
index
(
of
:
v
)
else
{
return
}
setInternalSelectedIndex
(
index
:
index
)
pageTabBar
.
select
(
at
:
index
)
if
finished
&&
completed
{
delegate
?
.
pageTabBarController
?(
pageTabBarController
:
self
,
didTransitionTo
:
v
)
}
}
}
extension
PageTabBarController
:
UIPageViewControllerDataSource
{
open
func
pageViewController
(
_
pageViewController
:
UIPageViewController
,
viewControllerBefore
viewController
:
UIViewController
)
->
UIViewController
?
{
guard
let
current
=
viewControllers
.
index
(
of
:
viewController
)
else
{
return
nil
}
let
previous
=
current
-
1
guard
previous
>=
0
else
{
return
nil
}
return
viewControllers
[
previous
]
}
open
func
pageViewController
(
_
pageViewController
:
UIPageViewController
,
viewControllerAfter
viewController
:
UIViewController
)
->
UIViewController
?
{
guard
let
current
=
viewControllers
.
index
(
of
:
viewController
)
else
{
return
nil
}
let
next
=
current
+
1
guard
viewControllers
.
count
>
next
else
{
return
nil
}
return
viewControllers
[
next
]
}
}
extension
PageTabBarController
:
UIScrollViewDelegate
{
open
func
scrollViewDidScroll
(
_
scrollView
:
UIScrollView
)
{
guard
!
pageTabBar
.
isAnimating
else
{
return
}
guard
!
isTabSelectedAnimation
else
{
return
}
guard
let
selected
=
pageTabBar
.
selected
else
{
return
}
guard
0
<
view
.
width
else
{
return
}
let
x
=
(
scrollView
.
contentOffset
.
x
-
view
.
width
)
/
scrollView
.
contentSize
.
width
*
view
.
width
pageTabBar
.
line
.
center
.
x
=
selected
.
center
.
x
+
x
}
}
Sources/iOS/
PageMenu
Controller.swift
→
Sources/iOS/
Tabs
Controller.swift
View file @
9f00b30f
...
@@ -30,10 +30,10 @@
...
@@ -30,10 +30,10 @@
import
UIKit
import
UIKit
/// A memory reference to the
PageMenu
BarItem instance for UIViewController extensions.
/// A memory reference to the
Tabs
BarItem instance for UIViewController extensions.
fileprivate
var
PageMenu
BarItemKey
:
UInt8
=
0
fileprivate
var
Tabs
BarItemKey
:
UInt8
=
0
open
class
PageMenu
BarItem
:
FlatButton
{
open
class
Tabs
BarItem
:
FlatButton
{
open
override
func
prepare
()
{
open
override
func
prepare
()
{
super
.
prepare
()
super
.
prepare
()
pulseAnimation
=
.
none
pulseAnimation
=
.
none
...
@@ -49,29 +49,29 @@ public enum TabBarAlignment: Int {
...
@@ -49,29 +49,29 @@ public enum TabBarAlignment: Int {
extension
UIViewController
{
extension
UIViewController
{
/// pageMenuBarItem reference.
/// pageMenuBarItem reference.
public
private(set)
var
pageMenuBarItem
:
PageMenu
BarItem
{
public
private(set)
var
pageMenuBarItem
:
Tabs
BarItem
{
get
{
get
{
return
AssociatedObject
(
base
:
self
,
key
:
&
PageMenu
BarItemKey
)
{
return
AssociatedObject
(
base
:
self
,
key
:
&
Tabs
BarItemKey
)
{
return
PageMenu
BarItem
()
return
Tabs
BarItem
()
}
}
}
}
set
(
value
)
{
set
(
value
)
{
AssociateObject
(
base
:
self
,
key
:
&
PageMenu
BarItemKey
,
value
:
value
)
AssociateObject
(
base
:
self
,
key
:
&
Tabs
BarItemKey
,
value
:
value
)
}
}
}
}
}
}
extension
UIViewController
{
extension
UIViewController
{
/**
/**
A convenience property that provides access to the
PageMenu
Controller.
A convenience property that provides access to the
Tabs
Controller.
This is the recommended method of accessing the
PageMenu
Controller
This is the recommended method of accessing the
Tabs
Controller
through child UIViewControllers.
through child UIViewControllers.
*/
*/
public
var
pageMenuController
:
PageMenu
Controller
?
{
public
var
pageMenuController
:
Tabs
Controller
?
{
var
viewController
:
UIViewController
?
=
self
var
viewController
:
UIViewController
?
=
self
while
nil
!=
viewController
{
while
nil
!=
viewController
{
if
viewController
is
PageMenu
Controller
{
if
viewController
is
Tabs
Controller
{
return
viewController
as?
PageMenu
Controller
return
viewController
as?
Tabs
Controller
}
}
viewController
=
viewController
?
.
parent
viewController
=
viewController
?
.
parent
}
}
...
@@ -79,7 +79,7 @@ extension UIViewController {
...
@@ -79,7 +79,7 @@ extension UIViewController {
}
}
}
}
open
class
PageMenu
Controller
:
UIViewController
{
open
class
Tabs
Controller
:
UIViewController
{
/// A reference to the currently selected view controller index value.
/// A reference to the currently selected view controller index value.
@IBInspectable
@IBInspectable
open
var
selectedIndex
=
0
open
var
selectedIndex
=
0
...
@@ -186,7 +186,7 @@ open class PageMenuController: UIViewController {
...
@@ -186,7 +186,7 @@ open class PageMenuController: UIViewController {
}
}
}
}
extension
PageMenu
Controller
{
extension
Tabs
Controller
{
/// Prepares the scrollView used to pan through view controllers.
/// Prepares the scrollView used to pan through view controllers.
fileprivate
func
prepareScrollView
()
{
fileprivate
func
prepareScrollView
()
{
scrollView
.
delegate
=
self
scrollView
.
delegate
=
self
...
@@ -302,7 +302,7 @@ extension PageMenuController {
...
@@ -302,7 +302,7 @@ extension PageMenuController {
}
}
}
}
extension
PageMenu
Controller
{
extension
Tabs
Controller
{
fileprivate
func
layoutScrollView
()
{
fileprivate
func
layoutScrollView
()
{
let
w
=
view
.
bounds
.
width
let
w
=
view
.
bounds
.
width
scrollView
.
contentSize
=
CGSize
(
width
:
w
*
CGFloat
(
viewControllers
.
count
),
height
:
scrollView
.
height
)
scrollView
.
contentSize
=
CGSize
(
width
:
w
*
CGFloat
(
viewControllers
.
count
),
height
:
scrollView
.
height
)
...
@@ -393,7 +393,7 @@ extension PageMenuController {
...
@@ -393,7 +393,7 @@ extension PageMenuController {
}
}
}
}
extension
PageMenu
Controller
{
extension
Tabs
Controller
{
/// Removes the view controllers not within the scrollView.
/// Removes the view controllers not within the scrollView.
fileprivate
func
removeViewControllers
()
{
fileprivate
func
removeViewControllers
()
{
let
n
=
viewControllers
.
count
let
n
=
viewControllers
.
count
...
@@ -451,7 +451,7 @@ extension PageMenuController {
...
@@ -451,7 +451,7 @@ extension PageMenuController {
}
}
}
}
extension
PageMenu
Controller
{
extension
Tabs
Controller
{
/**
/**
Handles the pageTabBarButton.
Handles the pageTabBarButton.
- Parameter button: A UIButton.
- Parameter button: A UIButton.
...
@@ -482,7 +482,7 @@ extension PageMenuController {
...
@@ -482,7 +482,7 @@ extension PageMenuController {
}
}
}
}
extension
PageMenu
Controller
:
UIScrollViewDelegate
{
extension
Tabs
Controller
:
UIScrollViewDelegate
{
@objc
@objc
open
func
scrollViewDidEndDecelerating
(
_
scrollView
:
UIScrollView
)
{
open
func
scrollViewDidEndDecelerating
(
_
scrollView
:
UIScrollView
)
{
let
w
=
scrollView
.
width
let
w
=
scrollView
.
width
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment