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
b2580b70
Commit
b2580b70
authored
Jun 16, 2016
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed issue where rootViewController was crashing when calling the transition method
parent
c87070f1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
107 additions
and
434 deletions
+107
-434
Examples/Programmatic/App/App/AppNavigationDrawerController.swift
+8
-8
Examples/Programmatic/App/App/RecipesViewController.swift
+1
-1
Examples/Programmatic/NavigationDrawerController/NavigationDrawerController/AppLeftViewController.swift
+2
-1
Examples/Programmatic/NavigationDrawerController/NavigationDrawerController/AppNavigationDrawerController.swift
+8
-8
Material.xcodeproj/project.pbxproj
+6
-6
Sources/iOS/MenuController.swift
+13
-127
Sources/iOS/NavigationDrawerController.swift
+24
-126
Sources/iOS/RootController.swift
+19
-7
Sources/iOS/SearchBarController.swift
+8
-8
Sources/iOS/StatusBarController.swift
+10
-134
Sources/iOS/ToolbarController.swift
+8
-8
No files found.
Examples/Programmatic/App/App/AppNavigationDrawerController.swift
View file @
b2580b70
...
...
@@ -37,27 +37,27 @@ class AppNavigationDrawerController: NavigationDrawerController, NavigationDrawe
delegate
=
self
}
func
navigationDrawerPanDidBegin
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidBegin
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Pan Began"
);
}
func
navigationDrawerPanDidEnd
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidEnd
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Pan Ended"
);
}
func
navigationDrawerWillOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerWillOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Will Open"
);
}
func
navigationDrawerDidOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - DId Open"
);
}
func
navigationDrawerWillClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerWillClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Will Close"
);
}
func
navigationDrawerDidClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Did Close"
);
}
...
...
@@ -65,11 +65,11 @@ class AppNavigationDrawerController: NavigationDrawerController, NavigationDrawe
print
(
"NavigationDrawerController - Status Bar Hidden: "
,
hidden
?
"Yes"
:
"No"
);
}
func
navigationDrawerDidTap
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidTap
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Did Tap"
);
}
func
navigationDrawerPanDidChange
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidChange
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
// print("NavigationDrawerController - Did Change");
}
}
Examples/Programmatic/App/App/RecipesViewController.swift
View file @
b2580b70
...
...
@@ -66,7 +66,7 @@ class RecipesViewController: UIViewController {
override
func
viewDidAppear
(
animated
:
Bool
)
{
super
.
viewDidAppear
(
animated
)
// Enable the
SideNavigation
.
// Enable the
NavigationDrawer
.
navigationDrawerController
?
.
enabled
=
true
(
menuController
as?
AppMenuController
)?
.
showMenuView
()
}
...
...
Examples/Programmatic/NavigationDrawerController/NavigationDrawerController/AppLeftViewController.swift
View file @
b2580b70
...
...
@@ -116,7 +116,8 @@ extension AppLeftViewController: UITableViewDelegate {
if
let
v
:
NavigationController
=
navigationDrawerController
?
.
rootViewController
as?
NavigationController
{
switch
item
.
text
{
case
"Orange"
:
v
.
pushViewController
(
OrangeViewController
(),
animated
:
true
)
navigationDrawerController
?
.
transitionFromRootViewController
(
OrangeViewController
())
// v.pushViewController(OrangeViewController(), animated: true)
case
"Purple"
:
v
.
pushViewController
(
PurpleViewController
(),
animated
:
true
)
case
"Green"
:
...
...
Examples/Programmatic/NavigationDrawerController/NavigationDrawerController/AppNavigationDrawerController.swift
View file @
b2580b70
...
...
@@ -37,27 +37,27 @@ class AppNavigationDrawerController: NavigationDrawerController, NavigationDrawe
delegate
=
self
}
func
navigationDrawerPanDidBegin
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidBegin
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Pan Began"
);
}
func
navigationDrawerPanDidEnd
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidEnd
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Pan Ended"
);
}
func
navigationDrawerWillOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerWillOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Will Open"
);
}
func
navigationDrawerDidOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidOpen
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - DId Open"
);
}
func
navigationDrawerWillClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerWillClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Will Close"
);
}
func
navigationDrawerDidClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidClose
(
navigationDrawerController
:
NavigationDrawerController
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Did Close"
);
}
...
...
@@ -65,11 +65,11 @@ class AppNavigationDrawerController: NavigationDrawerController, NavigationDrawe
print
(
"NavigationDrawerController - Status Bar Hidden: "
,
hidden
?
"Yes"
:
"No"
);
}
func
navigationDrawerDidTap
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerDidTap
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
print
(
"NavigationDrawerController - Did Tap"
);
}
func
navigationDrawerPanDidChange
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
SideNavigation
Position
)
{
func
navigationDrawerPanDidChange
(
navigationDrawerController
:
NavigationDrawerController
,
point
:
CGPoint
,
position
:
NavigationDrawer
Position
)
{
// print("NavigationDrawerController - Did Change");
}
}
Material.xcodeproj/project.pbxproj
View file @
b2580b70
...
...
@@ -82,7 +82,7 @@
96BCB7DF1CB40DC500C806FE
/* SearchBarController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
;
};
96BCB7E01CB40DC500C806FE
/* NavigationDrawerController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7971CB40DC500C806FE
/* NavigationDrawerController.swift */
;
};
96BCB7E11CB40DC500C806FE
/* BarView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7981CB40DC500C806FE
/* BarView.swift */
;
};
96BCB7E21CB40DC500C806FE
/*
BarController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7991CB40DC500C806FE
/* Bar
Controller.swift */
;
};
96BCB7E21CB40DC500C806FE
/*
RootController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7991CB40DC500C806FE
/* Root
Controller.swift */
;
};
96BCB7E31CB40DC500C806FE
/* TabBar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB79A1CB40DC500C806FE
/* TabBar.swift */
;
};
96BCB7E41CB40DC500C806FE
/* Text.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB79B1CB40DC500C806FE
/* Text.swift */
;
};
96BCB7E51CB40DC500C806FE
/* TextField.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB79C1CB40DC500C806FE
/* TextField.swift */
;
};
...
...
@@ -146,7 +146,7 @@
96BCB83A1CB4115200C806FE
/* SearchBarController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83B1CB4115200C806FE
/* NavigationDrawerController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7971CB40DC500C806FE
/* NavigationDrawerController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83C1CB4115200C806FE
/* BarView.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7981CB40DC500C806FE
/* BarView.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83D1CB4115200C806FE
/*
BarController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7991CB40DC500C806FE
/* Bar
Controller.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83D1CB4115200C806FE
/*
RootController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7991CB40DC500C806FE
/* Root
Controller.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83E1CB4115200C806FE
/* Menu.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB78D1CB40DC500C806FE
/* Menu.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB83F1CB4115200C806FE
/* MenuView.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB78E1CB40DC500C806FE
/* MenuView.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96BCB8401CB4115200C806FE
/* MenuController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB78F1CB40DC500C806FE
/* MenuController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
...
...
@@ -273,7 +273,7 @@
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
SearchBarController.swift
;
sourceTree
=
"<group>"
;
};
96BCB7971CB40DC500C806FE
/* NavigationDrawerController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
NavigationDrawerController.swift
;
sourceTree
=
"<group>"
;
};
96BCB7981CB40DC500C806FE
/* BarView.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
BarView.swift
;
sourceTree
=
"<group>"
;
};
96BCB7991CB40DC500C806FE
/*
BarController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Bar
Controller.swift
;
sourceTree
=
"<group>"
;
};
96BCB7991CB40DC500C806FE
/*
RootController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Root
Controller.swift
;
sourceTree
=
"<group>"
;
};
96BCB79A1CB40DC500C806FE
/* TabBar.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
TabBar.swift
;
sourceTree
=
"<group>"
;
};
96BCB79B1CB40DC500C806FE
/* Text.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Text.swift
;
sourceTree
=
"<group>"
;
};
96BCB79C1CB40DC500C806FE
/* TextField.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
TextField.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -445,9 +445,9 @@
96BCB8011CB40F1700C806FE
/* Navigation */
=
{
isa
=
PBXGroup
;
children
=
(
96BCB7991CB40DC500C806FE
/* RootController.swift */
,
96BCB75E1CB40DC500C806FE
/* ControlView.swift */
,
96BCB7981CB40DC500C806FE
/* BarView.swift */
,
96BCB7991CB40DC500C806FE
/* BarController.swift */
,
96BCB7951CB40DC500C806FE
/* SearchBar.swift */
,
96BCB7961CB40DC500C806FE
/* SearchBarController.swift */
,
96BCB79F1CB40DC500C806FE
/* Toolbar.swift */
,
...
...
@@ -687,7 +687,7 @@
96BCB83A1CB4115200C806FE
/* SearchBarController.swift in Headers */
,
96BCB83B1CB4115200C806FE
/* NavigationDrawerController.swift in Headers */
,
96BCB83C1CB4115200C806FE
/* BarView.swift in Headers */
,
96BCB83D1CB4115200C806FE
/*
Bar
Controller.swift in Headers */
,
96BCB83D1CB4115200C806FE
/*
Root
Controller.swift in Headers */
,
96BCB83E1CB4115200C806FE
/* Menu.swift in Headers */
,
96BCB83F1CB4115200C806FE
/* MenuView.swift in Headers */
,
96BCB8401CB4115200C806FE
/* MenuController.swift in Headers */
,
...
...
@@ -945,7 +945,7 @@
96BCB7B81CB40DC500C806FE
/* MaterialBorder.swift in Sources */
,
96BCB7A61CB40DC500C806FE
/* CardView.swift in Sources */
,
96BCB7C91CB40DC500C806FE
/* MaterialLayer.swift in Sources */
,
96BCB7E21CB40DC500C806FE
/*
Bar
Controller.swift in Sources */
,
96BCB7E21CB40DC500C806FE
/*
Root
Controller.swift in Sources */
,
96BCB7DC1CB40DC500C806FE
/* RaisedButton.swift in Sources */
,
96BCB7DD1CB40DC500C806FE
/* RobotoFont.swift in Sources */
,
96BCB7D71CB40DC500C806FE
/* MenuView.swift in Sources */
,
...
...
Sources/iOS/MenuController.swift
View file @
b2580b70
...
...
@@ -49,104 +49,11 @@ public extension UIViewController {
}
@IBDesignable
public
class
MenuController
:
UIView
Controller
{
public
class
MenuController
:
Root
Controller
{
/// Reference to the MenuView.
public
private(set)
lazy
var
menuView
:
MenuView
=
MenuView
()
/**
A Boolean property used to enable and disable interactivity
with the rootViewController.
*/
@IBInspectable
public
var
userInteractionEnabled
:
Bool
{
get
{
return
rootViewController
.
view
.
userInteractionEnabled
}
set
(
value
)
{
rootViewController
.
view
.
userInteractionEnabled
=
value
}
}
/**
A UIViewController property that references the active
main UIViewController. To swap the rootViewController, it
is recommended to use the transitionFromRootViewController
helper method.
*/
public
private(set)
var
rootViewController
:
UIViewController
!
/**
An initializer that initializes the object with a NSCoder object.
- Parameter aDecoder: A NSCoder instance.
*/
public
required
init
?(
coder
aDecoder
:
NSCoder
)
{
super
.
init
(
coder
:
aDecoder
)
prepareView
()
}
/**
An initializer that initializes the object with an Optional nib and bundle.
- Parameter nibNameOrNil: An Optional String for the nib.
- Parameter bundle: An Optional NSBundle where the nib is located.
*/
public
override
init
(
nibName
nibNameOrNil
:
String
?,
bundle
nibBundleOrNil
:
NSBundle
?)
{
super
.
init
(
nibName
:
nibNameOrNil
,
bundle
:
nibBundleOrNil
)
prepareView
()
}
/**
An initializer for the BarController.
- Parameter rootViewController: The main UIViewController.
*/
public
init
(
rootViewController
:
UIViewController
)
{
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
self
.
rootViewController
=
rootViewController
prepareView
()
}
public
override
func
viewWillLayoutSubviews
()
{
super
.
viewWillLayoutSubviews
()
layoutSubviews
()
}
/**
A method to swap rootViewController objects.
- Parameter toViewController: The UIViewController to swap
with the active rootViewController.
- Parameter duration: A NSTimeInterval that sets the
animation duration of the transition.
- Parameter options: UIViewAnimationOptions thst are used
when animating the transition from the active rootViewController
to the toViewController.
- Parameter animations: An animation block that is executed during
the transition from the active rootViewController
to the toViewController.
- Parameter completion: A completion block that is execited after
the transition animation from the active rootViewController
to the toViewController has completed.
*/
public
func
transitionFromRootViewController
(
toViewController
:
UIViewController
,
duration
:
NSTimeInterval
=
0.5
,
options
:
UIViewAnimationOptions
=
[],
animations
:
(()
->
Void
)?
=
nil
,
completion
:
((
Bool
)
->
Void
)?
=
nil
)
{
rootViewController
.
willMoveToParentViewController
(
nil
)
addChildViewController
(
toViewController
)
toViewController
.
view
.
frame
=
rootViewController
.
view
.
frame
transitionFromViewController
(
rootViewController
,
toViewController
:
toViewController
,
duration
:
duration
,
options
:
options
,
animations
:
animations
,
completion
:
{
[
weak
self
]
(
result
:
Bool
)
in
if
let
s
:
MenuController
=
self
{
toViewController
.
didMoveToParentViewController
(
s
)
s
.
rootViewController
.
removeFromParentViewController
()
s
.
rootViewController
=
toViewController
s
.
rootViewController
.
view
.
clipsToBounds
=
true
s
.
rootViewController
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
s
.
view
.
sendSubviewToBack
(
s
.
rootViewController
.
view
)
completion
?(
result
)
}
})
}
/**
Opens the menu with a callback.
- Parameter completion: An Optional callback that is executed when
all menu items have been opened.
...
...
@@ -175,17 +82,25 @@ public class MenuController : UIViewController {
}
/**
To execute in the order of the layout chain, override this
method. LayoutSubviews should be called immediately, unless you
have a certain need.
*/
public
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
rootViewController
.
view
.
frame
=
view
.
bounds
}
/**
Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepareView method
to initialize property values and other setup operations.
The super.prepareView method should always be called immediately
when subclassing.
*/
public
func
prepareView
()
{
view
.
clipsToBounds
=
true
view
.
contentScaleFactor
=
MaterialDevice
.
scale
public
override
func
prepareView
()
{
super
.
prepareView
()
prepareMenuView
()
prepareRootViewController
()
}
/// Prepares the MenuView.
...
...
@@ -193,33 +108,4 @@ public class MenuController : UIViewController {
menuView
.
zPosition
=
1000
view
.
addSubview
(
menuView
)
}
/// A method that prepares the rootViewController.
private
func
prepareRootViewController
()
{
prepareViewControllerWithinContainer
(
rootViewController
,
container
:
view
)
}
/**
A method that adds the passed in controller as a child of
the MenuController within the passed in
container view.
- Parameter viewController: A UIViewController to add as a child.
- Parameter container: A UIView that is the parent of the
passed in controller view within the view hierarchy.
*/
private
func
prepareViewControllerWithinContainer
(
viewController
:
UIViewController
?,
container
:
UIView
)
{
if
let
v
:
UIViewController
=
viewController
{
addChildViewController
(
v
)
v
.
didMoveToParentViewController
(
self
)
v
.
view
.
clipsToBounds
=
true
v
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
container
.
addSubview
(
v
.
view
)
container
.
sendSubviewToBack
(
v
.
view
)
}
}
/// Layout subviews.
private
func
layoutSubviews
()
{
rootViewController
.
view
.
frame
=
view
.
bounds
}
}
Sources/iOS/NavigationDrawerController.swift
View file @
b2580b70
This diff is collapsed.
Click to expand it.
Sources/iOS/
Bar
Controller.swift
→
Sources/iOS/
Root
Controller.swift
View file @
b2580b70
...
...
@@ -31,7 +31,7 @@
import
UIKit
@IBDesignable
public
class
Bar
Controller
:
UIViewController
{
public
class
Root
Controller
:
UIViewController
{
/// Device status bar style.
public
var
statusBarStyle
:
UIStatusBarStyle
{
get
{
...
...
@@ -92,6 +92,11 @@ public class BarController : UIViewController {
prepareView
()
}
public
override
func
viewWillLayoutSubviews
()
{
super
.
viewWillLayoutSubviews
()
layoutSubviews
()
}
/**
A method to swap rootViewController objects.
- Parameter toViewController: The UIViewController to swap
...
...
@@ -118,19 +123,25 @@ public class BarController : UIViewController {
options
:
options
,
animations
:
animations
,
completion
:
{
[
weak
self
]
(
result
:
Bool
)
in
if
let
s
:
Bar
Controller
=
self
{
if
let
s
:
Root
Controller
=
self
{
toViewController
.
didMoveToParentViewController
(
s
)
s
.
rootViewController
.
removeFromParentViewController
()
s
.
rootViewController
=
toViewController
s
.
rootViewController
.
view
.
clipsToBounds
=
true
s
.
rootViewController
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
s
.
view
.
sendSubviewToBack
(
s
.
rootViewController
.
view
)
completion
?(
result
)
}
})
}
/**
To execute in the order of the layout chain, override this
method. LayoutSubviews should be called immediately, unless you
have a certain need.
*/
public
func
layoutSubviews
()
{}
/**
Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepareView method
to initialize property values and other setup operations.
...
...
@@ -144,7 +155,7 @@ public class BarController : UIViewController {
}
/// A method that prepares the rootViewController.
private
func
prepareRootViewController
()
{
internal
func
prepareRootViewController
()
{
prepareViewControllerWithinContainer
(
rootViewController
,
container
:
view
)
}
...
...
@@ -156,14 +167,15 @@ public class BarController : UIViewController {
- Parameter container: A UIView that is the parent of the
passed in controller view within the view hierarchy.
*/
private
func
prepareViewControllerWithinContainer
(
viewController
:
UIViewController
?,
container
:
UIView
)
{
internal
func
prepareViewControllerWithinContainer
(
viewController
:
UIViewController
?,
container
:
UIView
)
{
if
let
v
:
UIViewController
=
viewController
{
addChildViewController
(
v
)
container
.
addSubview
(
v
.
view
)
container
.
sendSubviewToBack
(
v
.
view
)
v
.
didMoveToParentViewController
(
self
)
v
.
view
.
clipsToBounds
=
true
v
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
container
.
addSubview
(
v
.
view
)
container
.
sendSubviewToBack
(
v
.
view
)
v
.
view
.
contentScaleFactor
=
MaterialDevice
.
scale
}
}
}
Sources/iOS/SearchBarController.swift
View file @
b2580b70
...
...
@@ -48,17 +48,17 @@ public extension UIViewController {
}
}
public
class
SearchBarController
:
Bar
Controller
{
public
class
SearchBarController
:
Root
Controller
{
/// Reference to the SearchBar.
public
private(set)
var
searchBar
:
SearchBar
!
public
override
func
viewWillLayoutSubviews
()
{
super
.
viewWillLayoutSubviews
()
layoutSubviews
()
}
/// Layout subviews.
public
func
layoutSubviews
()
{
/**
To execute in the order of the layout chain, override this
method. LayoutSubviews should be called immediately, unless you
have a certain need.
*/
public
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
if
let
v
:
SearchBar
=
searchBar
{
v
.
grid
.
layoutInset
.
top
=
.
iPhone
==
MaterialDevice
.
type
&&
MaterialDevice
.
isLandscape
?
0
:
20
...
...
Sources/iOS/StatusBarController.swift
View file @
b2580b70
...
...
@@ -49,111 +49,19 @@ public extension UIViewController {
}
@IBDesignable
public
class
StatusBarController
:
UIViewController
{
/// Device status bar style.
public
var
statusBarStyle
:
UIStatusBarStyle
{
get
{
return
MaterialDevice
.
statusBarStyle
}
set
(
value
)
{
MaterialDevice
.
statusBarStyle
=
value
}
}
public
class
StatusBarController
:
RootController
{
/// A reference to the statusBarView.
public
private(set)
var
statusBarView
:
MaterialView
!
/**
A Boolean property used to enable and disable interactivity
with the rootViewController.
*/
@IBInspectable
public
var
userInteractionEnabled
:
Bool
{
get
{
return
rootViewController
.
view
.
userInteractionEnabled
}
set
(
value
)
{
rootViewController
.
view
.
userInteractionEnabled
=
value
}
}
/**
A UIViewController property that references the active
main UIViewController. To swap the rootViewController, it
is recommended to use the transitionFromRootViewController
helper method.
*/
public
private(set)
var
rootViewController
:
UIViewController
!
/**
An initializer that initializes the object with a NSCoder object.
- Parameter aDecoder: A NSCoder instance.
*/
public
required
init
?(
coder
aDecoder
:
NSCoder
)
{
super
.
init
(
coder
:
aDecoder
)
prepareView
()
}
/**
An initializer that initializes the object with an Optional nib and bundle.
- Parameter nibNameOrNil: An Optional String for the nib.
- Parameter bundle: An Optional NSBundle where the nib is located.
*/
public
override
init
(
nibName
nibNameOrNil
:
String
?,
bundle
nibBundleOrNil
:
NSBundle
?)
{
super
.
init
(
nibName
:
nibNameOrNil
,
bundle
:
nibBundleOrNil
)
prepareView
()
}
/**
An initializer for the BarController.
- Parameter rootViewController: The main UIViewController.
*/
public
init
(
rootViewController
:
UIViewController
)
{
super
.
init
(
nibName
:
nil
,
bundle
:
nil
)
self
.
rootViewController
=
rootViewController
prepareView
()
}
public
override
func
viewWillLayoutSubviews
()
{
super
.
viewWillLayoutSubviews
()
layoutSubviews
()
}
/**
A method to swap rootViewController objects.
- Parameter toViewController: The UIViewController to swap
with the active rootViewController.
- Parameter duration: A NSTimeInterval that sets the
animation duration of the transition.
- Parameter options: UIViewAnimationOptions thst are used
when animating the transition from the active rootViewController
to the toViewController.
- Parameter animations: An animation block that is executed during
the transition from the active rootViewController
to the toViewController.
- Parameter completion: A completion block that is execited after
the transition animation from the active rootViewController
to the toViewController has completed.
To execute in the order of the layout chain, override this
method. LayoutSubviews should be called immediately, unless you
have a certain need.
*/
public
func
transitionFromRootViewController
(
toViewController
:
UIViewController
,
duration
:
NSTimeInterval
=
0.5
,
options
:
UIViewAnimationOptions
=
[],
animations
:
(()
->
Void
)?
=
nil
,
completion
:
((
Bool
)
->
Void
)?
=
nil
)
{
rootViewController
.
willMoveToParentViewController
(
nil
)
addChildViewController
(
toViewController
)
toViewController
.
view
.
frame
=
rootViewController
.
view
.
frame
transitionFromViewController
(
rootViewController
,
toViewController
:
toViewController
,
duration
:
duration
,
options
:
options
,
animations
:
animations
,
completion
:
{
[
weak
self
]
(
result
:
Bool
)
in
if
let
s
:
StatusBarController
=
self
{
toViewController
.
didMoveToParentViewController
(
s
)
s
.
rootViewController
.
removeFromParentViewController
()
s
.
rootViewController
=
toViewController
s
.
rootViewController
.
view
.
clipsToBounds
=
true
s
.
rootViewController
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
s
.
view
.
sendSubviewToBack
(
s
.
rootViewController
.
view
)
completion
?(
result
)
}
})
public
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
statusBarView
.
hidden
=
MaterialDevice
.
isLandscape
&&
.
iPhone
==
MaterialDevice
.
type
rootViewController
.
view
.
frame
=
view
.
bounds
}
/**
...
...
@@ -163,11 +71,9 @@ public class StatusBarController : UIViewController {
The super.prepareView method should always be called immediately
when subclassing.
*/
public
func
prepareView
()
{
view
.
clipsToBounds
=
true
view
.
contentScaleFactor
=
MaterialDevice
.
scale
public
override
func
prepareView
()
{
super
.
prepareView
()
prepareStatusBarView
()
prepareRootViewController
()
}
/// Prepares the statusBarView.
...
...
@@ -177,34 +83,4 @@ public class StatusBarController : UIViewController {
statusBarView
.
backgroundColor
=
MaterialColor
.
black
.
colorWithAlphaComponent
(
0.12
)
view
.
layout
(
statusBarView
)
.
top
(
0
)
.
horizontally
()
.
height
(
20
)
}
/// A method that prepares the rootViewController.
private
func
prepareRootViewController
()
{
prepareViewControllerWithinContainer
(
rootViewController
,
container
:
view
)
}
/**
A method that adds the passed in controller as a child of
the StatusBarController within the passed in
container view.
- Parameter viewController: A UIViewController to add as a child.
- Parameter container: A UIView that is the parent of the
passed in controller view within the view hierarchy.
*/
private
func
prepareViewControllerWithinContainer
(
viewController
:
UIViewController
?,
container
:
UIView
)
{
if
let
v
:
UIViewController
=
viewController
{
addChildViewController
(
v
)
v
.
didMoveToParentViewController
(
self
)
v
.
view
.
clipsToBounds
=
true
v
.
view
.
autoresizingMask
=
[
.
FlexibleWidth
,
.
FlexibleHeight
]
container
.
addSubview
(
v
.
view
)
container
.
sendSubviewToBack
(
v
.
view
)
}
}
/// Layout subviews.
private
func
layoutSubviews
()
{
statusBarView
.
hidden
=
MaterialDevice
.
isLandscape
&&
.
iPhone
==
MaterialDevice
.
type
rootViewController
.
view
.
frame
=
view
.
bounds
}
}
Sources/iOS/ToolbarController.swift
View file @
b2580b70
...
...
@@ -64,7 +64,7 @@ public protocol ToolbarControllerDelegate : MaterialDelegate {
}
@objc(ToolbarController)
public
class
ToolbarController
:
Bar
Controller
{
public
class
ToolbarController
:
Root
Controller
{
/// Internal reference to the floatingViewController.
private
var
internalFloatingViewController
:
UIViewController
?
...
...
@@ -151,13 +151,13 @@ public class ToolbarController : BarController {
}
}
public
override
func
viewWillLayoutSubviews
()
{
super
.
viewWillLayoutSubviews
()
layoutSubviews
()
}
/// Layout subviews.
public
func
layoutSubviews
()
{
/**
To execute in the order of the layout chain, override this
method. LayoutSubviews should be called immediately, unless you
have a certain need.
*/
public
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
if
let
v
:
Toolbar
=
toolbar
{
v
.
grid
.
layoutInset
.
top
=
.
iPhone
==
MaterialDevice
.
type
&&
MaterialDevice
.
isLandscape
?
0
:
20
...
...
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