Commit c46110ca by Daniel Dahan

adjustments to the NavigationBar alignment

parent 7d7e0975
...@@ -28,15 +28,18 @@ ...@@ -28,15 +28,18 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
/*
The following example shows how to dynamically size MaterialCollectionViewCells.
*/
import UIKit import UIKit
import Material import Material
class FeedViewController: UIViewController { class FeedViewController: UIViewController {
private var collectionView: MaterialCollectionView = MaterialCollectionView() /// Menu button at the top left of the navigation bar.
private lazy var menuButton: FlatButton = FlatButton()
/// Search button at the top left of the navigation bar.
private lazy var searchButton: FlatButton = FlatButton()
/// MaterialCollectionView.
private lazy var collectionView: MaterialCollectionView = MaterialCollectionView()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -53,31 +56,17 @@ class FeedViewController: UIViewController { ...@@ -53,31 +56,17 @@ class FeedViewController: UIViewController {
super.viewWillAppear(animated) super.viewWillAppear(animated)
navigationItem.title = "Feed" navigationItem.title = "Feed"
navigationController?.navigationBar.leftControls = [menuButton]
var image = UIImage(named: "ic_menu_white") sideNavigationViewController?.enabled = true
}
// Menu button.
let menuButton: FlatButton = FlatButton()
menuButton.pulseScale = false
menuButton.pulseColor = MaterialColor.white
menuButton.setImage(image, forState: .Normal)
menuButton.setImage(image, forState: .Highlighted)
menuButton.addTarget(self, action: "handleMenuButton", forControlEvents: .TouchUpInside)
// Switch control.
let switchControl: MaterialSwitch = MaterialSwitch(state: .Off, style: .LightContent, size: .Small)
// Search button. override func viewDidAppear(animated: Bool) {
image = UIImage(named: "ic_search_white") super.viewDidAppear(animated)
let searchButton: FlatButton = FlatButton()
searchButton.pulseScale = false
searchButton.pulseColor = MaterialColor.white
searchButton.setImage(image, forState: .Normal)
searchButton.setImage(image, forState: .Highlighted)
searchButton.addTarget(self, action: "handleSearchButton", forControlEvents: .TouchUpInside)
// Handles when the page is being panned left to right.
navigationItem.title = "Feed"
navigationController?.navigationBar.leftControls = [menuButton] navigationController?.navigationBar.leftControls = [menuButton]
navigationController?.navigationBar.rightControls = [switchControl, searchButton]
} }
internal func handleMenuButton() { internal func handleMenuButton() {
...@@ -92,10 +81,36 @@ class FeedViewController: UIViewController { ...@@ -92,10 +81,36 @@ class FeedViewController: UIViewController {
private func prepareView() { private func prepareView() {
view.backgroundColor = MaterialColor.grey.lighten4 view.backgroundColor = MaterialColor.grey.lighten4
prepareMenuButton()
prepareSearchButton()
navigationController?.navigationBar.statusBarStyle = .LightContent navigationController?.navigationBar.statusBarStyle = .LightContent
navigationController?.navigationBar.tintColor = MaterialColor.white navigationController?.navigationBar.tintColor = MaterialColor.white
navigationController?.navigationBar.backgroundColor = MaterialColor.blue.base navigationController?.navigationBar.backgroundColor = MaterialColor.blue.base
navigationController?.navigationBar.backButton.pulseColor = MaterialColor.white navigationController?.navigationBar.backButton.pulseColor = MaterialColor.white
navigationController?.navigationBar.rightControls = [searchButton]
}
/// Prepares the menuButton.
private func prepareMenuButton() {
let image: UIImage? = UIImage(named: "ic_menu_white")
menuButton.pulseScale = false
menuButton.pulseColor = MaterialColor.white
menuButton.setImage(image, forState: .Normal)
menuButton.setImage(image, forState: .Highlighted)
menuButton.addTarget(self, action: "handleMenuButton", forControlEvents: .TouchUpInside)
}
/// Prepares the searchButton.
private func prepareSearchButton() {
// Search button.
let image: UIImage? = UIImage(named: "ic_search_white")
searchButton.pulseScale = false
searchButton.pulseColor = MaterialColor.white
searchButton.setImage(image, forState: .Normal)
searchButton.setImage(image, forState: .Highlighted)
searchButton.addTarget(self, action: "handleSearchButton", forControlEvents: .TouchUpInside)
} }
/// Prepares the collectionView /// Prepares the collectionView
...@@ -105,12 +120,9 @@ class FeedViewController: UIViewController { ...@@ -105,12 +120,9 @@ class FeedViewController: UIViewController {
collectionView.spacingPreset = .Spacing1 collectionView.spacingPreset = .Spacing1
collectionView.registerClass(MaterialCollectionViewCell.self, forCellWithReuseIdentifier: "MaterialCollectionViewCell") collectionView.registerClass(MaterialCollectionViewCell.self, forCellWithReuseIdentifier: "MaterialCollectionViewCell")
// To avoid being hidden under the hovering MenuView.
view.addSubview(collectionView) view.addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false collectionView.translatesAutoresizingMaskIntoConstraints = false
MaterialLayout.alignToParent(view, child: collectionView) MaterialLayout.alignToParent(view, child: collectionView)
// collectionView.scrollDirection = .Horizontal // Uncomment to see the horizontal scroll direction.
} }
} }
...@@ -124,8 +136,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -124,8 +136,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 150, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
), ),
MaterialDataSourceItem( MaterialDataSourceItem(
data: [ data: [
...@@ -133,8 +144,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -133,8 +144,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 250, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
), ),
MaterialDataSourceItem( MaterialDataSourceItem(
data: [ data: [
...@@ -142,8 +152,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -142,8 +152,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 350, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
), ),
MaterialDataSourceItem( MaterialDataSourceItem(
data: [ data: [
...@@ -151,8 +160,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -151,8 +160,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 150, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
), ),
MaterialDataSourceItem( MaterialDataSourceItem(
data: [ data: [
...@@ -160,8 +168,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -160,8 +168,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 250, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
), ),
MaterialDataSourceItem( MaterialDataSourceItem(
data: [ data: [
...@@ -169,8 +176,7 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -169,8 +176,7 @@ extension FeedViewController: MaterialCollectionViewDataSource {
"detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "detail": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"date": "February 26, 2016" "date": "February 26, 2016"
], ],
width: 350, // Applied when scrollDirection is .Horizontal height: 158
height: 150 // Applied when scrollDirection is .Vertical
) )
] ]
} }
...@@ -206,7 +212,9 @@ extension FeedViewController: MaterialCollectionViewDataSource { ...@@ -206,7 +212,9 @@ extension FeedViewController: MaterialCollectionViewDataSource {
cardView!.pulseScale = false cardView!.pulseScale = false
cardView!.divider = false cardView!.divider = false
cardView!.depth = .None cardView!.depth = .None
cardView!.contentInsetPreset = .Square3
cardView!.cornerRadiusPreset = .None cardView!.cornerRadiusPreset = .None
cardView!.rightButtonsInsetPreset = .None
let titleLabel: UILabel = UILabel() let titleLabel: UILabel = UILabel()
titleLabel.textColor = MaterialColor.grey.darken4 titleLabel.textColor = MaterialColor.grey.darken4
......
...@@ -57,6 +57,14 @@ class InboxViewController: UIViewController { ...@@ -57,6 +57,14 @@ class InboxViewController: UIViewController {
navigationItem.title = "Messages" navigationItem.title = "Messages"
navigationController?.navigationBar.topItem?.title = "" navigationController?.navigationBar.topItem?.title = ""
navigationController?.navigationBar.leftControls = [] navigationController?.navigationBar.leftControls = []
sideNavigationViewController?.enabled = false
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
navigationItem.title = "Messages"
navigationController?.navigationBar.leftControls = []
} }
/** /**
......
...@@ -454,7 +454,7 @@ public class NavigationBarControls { ...@@ -454,7 +454,7 @@ public class NavigationBarControls {
/// Inset for spacer button. /// Inset for spacer button.
public var inset: CGFloat { public var inset: CGFloat {
return MaterialDevice.landscape ? -20 : -20 return MaterialDevice.landscape ? -28 : -20
} }
public private(set) var backButton: MaterialButton public private(set) var backButton: MaterialButton
......
...@@ -47,6 +47,7 @@ public class NavigationController : UINavigationController { ...@@ -47,6 +47,7 @@ public class NavigationController : UINavigationController {
public override func viewWillLayoutSubviews() { public override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews() super.viewWillLayoutSubviews()
interactivePopGestureRecognizer?.delegate = nil
if let v: NavigationBar = navigationBar as? NavigationBar { if let v: NavigationBar = navigationBar as? NavigationBar {
v.layoutSubviews() v.layoutSubviews()
v.backButton.removeTarget(self, action: "handleBackButton", forControlEvents: .TouchUpInside) v.backButton.removeTarget(self, action: "handleBackButton", forControlEvents: .TouchUpInside)
......
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