Commit 55a765cf by Daniel Dahan

progression commit for NavigationBar and statusBar animations

parent 012d5b80
......@@ -11,8 +11,6 @@
965EAD1B1D07274200BFE12C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965EAD1A1D07274200BFE12C /* ViewController.swift */; };
965EAD201D07274200BFE12C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965EAD1F1D07274200BFE12C /* Assets.xcassets */; };
965EAD231D07274200BFE12C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965EAD211D07274200BFE12C /* LaunchScreen.storyboard */; };
965EAD2B1D07285E00BFE12C /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 965EAD2A1D07285E00BFE12C /* Material.framework */; };
965EAD2C1D07285E00BFE12C /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 965EAD2A1D07285E00BFE12C /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
......@@ -22,7 +20,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
965EAD2C1D07285E00BFE12C /* Material.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
......@@ -36,7 +33,6 @@
965EAD1F1D07274200BFE12C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
965EAD221D07274200BFE12C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
965EAD241D07274200BFE12C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
965EAD2A1D07285E00BFE12C /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-dciwtavdzrmtrifplxfnouazaqvx/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -44,7 +40,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
965EAD2B1D07285E00BFE12C /* Material.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -54,7 +49,6 @@
965EAD0C1D07274200BFE12C = {
isa = PBXGroup;
children = (
965EAD2A1D07285E00BFE12C /* Material.framework */,
965EAD171D07274200BFE12C /* NavigationController */,
965EAD161D07274200BFE12C /* Products */,
);
......
......@@ -7,8 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
965EAD2F1D072B6E00BFE12C /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 965EAD2E1D072B6E00BFE12C /* Material.framework */; };
965EAD301D072B6E00BFE12C /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 965EAD2E1D072B6E00BFE12C /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
960CDA3D1D086FE200387CE8 /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 960CDA3C1D086FE200387CE8 /* Material.framework */; };
960CDA3E1D086FE200387CE8 /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 960CDA3C1D086FE200387CE8 /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
96E5E4671CC1E5EC0054837B /* PurpleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E4661CC1E5EC0054837B /* PurpleViewController.swift */; };
96E5E4691CC1E6130054837B /* OrangeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E4681CC1E6130054837B /* OrangeViewController.swift */; };
96E5E46B1CC1E8FB0054837B /* AppLeftViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E5E46A1CC1E8FB0054837B /* AppLeftViewController.swift */; };
......@@ -27,7 +27,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
965EAD301D072B6E00BFE12C /* Material.framework in Embed Frameworks */,
960CDA3E1D086FE200387CE8 /* Material.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
......@@ -35,7 +35,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
965EAD2E1D072B6E00BFE12C /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-dciwtavdzrmtrifplxfnouazaqvx/Build/Products/Debug-iphonesimulator/Material.framework"; sourceTree = "<absolute>"; };
960CDA3C1D086FE200387CE8 /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-dciwtavdzrmtrifplxfnouazaqvx/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
9663F9651C7ADCB600AF0965 /* SideNavigationController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SideNavigationController.app; sourceTree = BUILT_PRODUCTS_DIR; };
96E5E4661CC1E5EC0054837B /* PurpleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurpleViewController.swift; sourceTree = "<group>"; };
96E5E4681CC1E6130054837B /* OrangeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrangeViewController.swift; sourceTree = "<group>"; };
......@@ -54,7 +54,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
965EAD2F1D072B6E00BFE12C /* Material.framework in Frameworks */,
960CDA3D1D086FE200387CE8 /* Material.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -64,7 +64,7 @@
9663F95C1C7ADCB600AF0965 = {
isa = PBXGroup;
children = (
965EAD2E1D072B6E00BFE12C /* Material.framework */,
960CDA3C1D086FE200387CE8 /* Material.framework */,
96F2F1FC1C97A68800A5FE27 /* SideNavigationController */,
9663F9661C7ADCB600AF0965 /* Products */,
);
......
......@@ -75,7 +75,7 @@ class AppLeftViewController: UIViewController {
tableView.separatorStyle = .None
// Use Layout to easily align the tableView.
view.layout.align(tableView)
view.layout.align.edges(tableView)
}
}
......
......@@ -441,7 +441,6 @@
96BCB7961CB40DC500C806FE /* SearchBarController.swift */,
96BCB79F1CB40DC500C806FE /* Toolbar.swift */,
96BCB7A01CB40DC500C806FE /* ToolbarController.swift */,
96BCB7971CB40DC500C806FE /* SideNavigationController.swift */,
96BCB78D1CB40DC500C806FE /* Menu.swift */,
96BCB78E1CB40DC500C806FE /* MenuView.swift */,
96BCB78F1CB40DC500C806FE /* MenuController.swift */,
......@@ -451,6 +450,7 @@
96BCB7901CB40DC500C806FE /* NavigationBar.swift */,
96BCB7911CB40DC500C806FE /* NavigationController.swift */,
96BCB7921CB40DC500C806FE /* NavigationItem.swift */,
96BCB7971CB40DC500C806FE /* SideNavigationController.swift */,
);
name = Navigation;
sourceTree = "<group>";
......
......@@ -54,6 +54,8 @@ public class NavigationBar : UINavigationBar {
/// NavigationBarStyle value.
public var navigationBarStyle: NavigationBarStyle = .Default
internal var animating: Bool = false
/// Will render the view.
public var willRenderView: Bool {
return 0 < width && 0 < height
......@@ -285,21 +287,18 @@ public class NavigationBar : UINavigationBar {
self.init(frame: CGRectZero)
}
private func statusbarOffset() -> CGFloat {
var result: CGFloat = 0
switch MaterialDevice.type {
case .iPad:
result = MaterialDevice.statusBarHidden ? 20 : 0
case .iPhone:
result = MaterialDevice.isPortrait && MaterialDevice.statusBarHidden ? 20 : 0
case .TV:
break
case .Unspecified:
break
}
return result;
}
/// Calculates the offset for the statusbar.
private func statusbarOffset() -> CGFloat {
switch MaterialDevice.type {
case .iPad:
return MaterialDevice.statusBarHidden ? 20 : 0
case .iPhone:
return MaterialDevice.isPortrait && MaterialDevice.statusBarHidden ? 20 : 0
default:
return 0
}
}
public override func intrinsicContentSize() -> CGSize {
switch navigationBarStyle {
case .Tiny:
......@@ -310,11 +309,13 @@ public class NavigationBar : UINavigationBar {
return CGSizeMake(superview?.bounds.width ?? MaterialDevice.width, 56)
}
}
public override func sizeThatFits(size: CGSize) -> CGSize {
var result: CGSize = intrinsicContentSize()
result.height += statusbarOffset()
return result
var result: CGSize = intrinsicContentSize()
result.height += statusbarOffset()
print(MaterialDevice.isPortrait, result.height)
return result
}
public override func layoutSubviews() {
......@@ -338,14 +339,14 @@ public class NavigationBar : UINavigationBar {
- Parameter item: A UINavigationItem to layout.
*/
internal func layoutNavigationItem(item: UINavigationItem) {
if willRenderView {
if willRenderView && !animating {
prepareItem(item)
if let titleView: UIView = prepareTitleView(item) {
if let contentView: UIView = prepareContentView(item) {
if let g: Int = Int(width / gridFactor) {
let columns: Int = g + 1
titleView.frame.origin = CGPoint(x: 0, y: statusbarOffset())
titleView.frame.size = intrinsicContentSize()
titleView.grid.views = []
......@@ -369,7 +370,7 @@ public class NavigationBar : UINavigationBar {
titleView.grid.views?.append(c)
}
}
titleView.addSubview(contentView)
titleView.grid.views?.append(contentView)
......@@ -389,7 +390,7 @@ public class NavigationBar : UINavigationBar {
titleView.grid.views?.append(c)
}
}
titleView.grid.contentInset = contentInset
titleView.grid.spacing = spacing
titleView.grid.reloadLayout()
......@@ -486,4 +487,4 @@ public class NavigationBar : UINavigationBar {
item.contentView!.grid.axis.direction = .Vertical
return item.contentView!
}
}
}
\ No newline at end of file
......@@ -400,12 +400,6 @@ public class SideNavigationController : UIViewController, UIGestureRecognizerDel
public override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
// Portrait will be Lanscape when this method is done.
if MaterialDevice.isPortrait && .iPhone == MaterialDevice.type {
hideStatusBar()
} else {
showStatusBar()
}
closeLeftView()
closeRightView()
......@@ -1098,11 +1092,17 @@ public class SideNavigationController : UIViewController, UIGestureRecognizerDel
willHideStatusBar = false
UIView.animateWithDuration(NSTimeInterval(UINavigationControllerHideShowBarDuration),
animations: { [weak self] in
if let v: NavigationBar = (self?.rootViewController as? NavigationController)?.navigationBar as? NavigationBar {
v.animating = true
}
self?.statusBarHidden = false
})
self.setNeedsStatusBarAppearanceUpdate()
delegate?.sideNavigationStatusBarHiddenState?(self, hidden: false)
self?.setNeedsStatusBarAppearanceUpdate()
}) { [weak self] _ in
if let v: NavigationBar = (self?.rootViewController as? NavigationController)?.navigationBar as? NavigationBar {
v.animating = false
}
}
delegate?.sideNavigationStatusBarHiddenState?(self, hidden: false)
}
}
......@@ -1113,11 +1113,17 @@ public class SideNavigationController : UIViewController, UIGestureRecognizerDel
if !statusBarHidden {
UIView.animateWithDuration(NSTimeInterval(UINavigationControllerHideShowBarDuration),
animations: { [weak self] in
if let v: NavigationBar = (self?.rootViewController as? NavigationController)?.navigationBar as? NavigationBar {
v.animating = true
}
self?.statusBarHidden = true
})
self.setNeedsStatusBarAppearanceUpdate()
delegate?.sideNavigationStatusBarHiddenState?(self, hidden: true)
self?.setNeedsStatusBarAppearanceUpdate()
}) { [weak self] _ in
if let v: NavigationBar = (self?.rootViewController as? NavigationController)?.navigationBar as? NavigationBar {
v.animating = false
}
}
delegate?.sideNavigationStatusBarHiddenState?(self, hidden: true)
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment