Commit de0f26a3 by Daniel Dahan

development: updated CollectionView and added TableView

parent d114f592
...@@ -141,7 +141,7 @@ open class BottomNavigationController: UITabBarController, UITabBarControllerDel ...@@ -141,7 +141,7 @@ open class BottomNavigationController: UITabBarController, UITabBarControllerDel
open func prepare() { open func prepare() {
view.clipsToBounds = true view.clipsToBounds = true
view.contentScaleFactor = Screen.scale view.contentScaleFactor = Screen.scale
view.backgroundColor = Color.white view.backgroundColor = .white
delegate = self delegate = self
prepareTabBar() prepareTabBar()
} }
...@@ -164,6 +164,6 @@ open class BottomNavigationController: UITabBarController, UITabBarControllerDel ...@@ -164,6 +164,6 @@ open class BottomNavigationController: UITabBarController, UITabBarControllerDel
let image = UIImage.image(with: Color.clear, size: CGSize(width: 1, height: 1)) let image = UIImage.image(with: Color.clear, size: CGSize(width: 1, height: 1))
tabBar.shadowImage = image tabBar.shadowImage = image
tabBar.backgroundImage = image tabBar.backgroundImage = image
tabBar.backgroundColor = Color.white tabBar.backgroundColor = .white
} }
} }
...@@ -35,9 +35,9 @@ public protocol CollectionViewDelegate: UICollectionViewDelegate {} ...@@ -35,9 +35,9 @@ public protocol CollectionViewDelegate: UICollectionViewDelegate {}
public protocol CollectionViewDataSource: UICollectionViewDataSource { public protocol CollectionViewDataSource: UICollectionViewDataSource {
/** /**
Retrieves the data source items for the collectionView. Retrieves the data source items for the collectionView.
- Returns: An Array of CollectionViewDataSourceItem objects. - Returns: An Array of DataSourceItem objects.
*/ */
var dataSourceItems: [CollectionViewDataSourceItem] { get } var dataSourceItems: [DataSourceItem] { get }
} }
extension UIViewController { extension UIViewController {
...@@ -62,7 +62,7 @@ open class CollectionViewController: UIViewController { ...@@ -62,7 +62,7 @@ open class CollectionViewController: UIViewController {
/// A reference to a Reminder. /// A reference to a Reminder.
open let collectionView = CollectionView() open let collectionView = CollectionView()
open var dataSourceItems = [CollectionViewDataSourceItem]() open var dataSourceItems = [DataSourceItem]()
open override func viewDidLoad() { open override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -78,7 +78,7 @@ open class CollectionViewController: UIViewController { ...@@ -78,7 +78,7 @@ open class CollectionViewController: UIViewController {
*/ */
open func prepare() { open func prepare() {
view.clipsToBounds = true view.clipsToBounds = true
view.backgroundColor = Color.white view.backgroundColor = .white
view.contentScaleFactor = Screen.scale view.contentScaleFactor = Screen.scale
prepareCollectionView() prepareCollectionView()
} }
...@@ -94,6 +94,7 @@ extension CollectionViewController { ...@@ -94,6 +94,7 @@ extension CollectionViewController {
} }
extension CollectionViewController: CollectionViewDelegate {} extension CollectionViewController: CollectionViewDelegate {}
extension CollectionViewController: CollectionViewDataSource { extension CollectionViewController: CollectionViewDataSource {
@objc @objc
open func numberOfSections(in collectionView: UICollectionView) -> Int { open func numberOfSections(in collectionView: UICollectionView) -> Int {
......
...@@ -54,7 +54,7 @@ open class CollectionViewLayout: UICollectionViewLayout { ...@@ -54,7 +54,7 @@ open class CollectionViewLayout: UICollectionViewLayout {
open fileprivate(set) lazy var layoutItems = [(UICollectionViewLayoutAttributes, NSIndexPath)]() open fileprivate(set) lazy var layoutItems = [(UICollectionViewLayoutAttributes, NSIndexPath)]()
/// Cell data source items. /// Cell data source items.
open fileprivate(set) var dataSourceItems: [CollectionViewDataSourceItem]? open fileprivate(set) var dataSourceItems: [DataSourceItem]?
/// Scroll direction. /// Scroll direction.
open var scrollDirection = UICollectionViewScrollDirection.vertical open var scrollDirection = UICollectionViewScrollDirection.vertical
...@@ -129,7 +129,7 @@ open class CollectionViewLayout: UICollectionViewLayout { ...@@ -129,7 +129,7 @@ open class CollectionViewLayout: UICollectionViewLayout {
return proposedContentOffset return proposedContentOffset
} }
fileprivate func prepareLayoutForItems(dataSourceItems: [CollectionViewDataSourceItem]) { fileprivate func prepareLayoutForItems(dataSourceItems: [DataSourceItem]) {
self.dataSourceItems = dataSourceItems self.dataSourceItems = dataSourceItems
layoutItems.removeAll() layoutItems.removeAll()
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
import UIKit import UIKit
public struct CollectionViewDataSourceItem { public struct DataSourceItem {
/// Stores an the data for the item. /// Stores an the data for the item.
public var data: Any? public var data: Any?
......
...@@ -66,7 +66,7 @@ open class RemindersController: UIViewController { ...@@ -66,7 +66,7 @@ open class RemindersController: UIViewController {
*/ */
open func prepare() { open func prepare() {
view.clipsToBounds = true view.clipsToBounds = true
view.backgroundColor = Color.white view.backgroundColor = .white
view.contentScaleFactor = Screen.scale view.contentScaleFactor = Screen.scale
prepareReminders() prepareReminders()
} }
......
...@@ -107,7 +107,7 @@ open class Snackbar: Bar { ...@@ -107,7 +107,7 @@ open class Snackbar: Bar {
textLabel.contentScaleFactor = Screen.scale textLabel.contentScaleFactor = Screen.scale
textLabel.font = RobotoFont.medium(with: 14) textLabel.font = RobotoFont.medium(with: 14)
textLabel.textAlignment = .left textLabel.textAlignment = .left
textLabel.textColor = Color.white textLabel.textColor = .white
textLabel.numberOfLines = 0 textLabel.numberOfLines = 0
} }
} }
/*
* Copyright (C) 2015 - 2016, 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
open class TableView: UITableView {}
/*
* Copyright (C) 2015 - 2016, Daniel Dahan and CosmicMind, Inc. <http://cosmicmind.io>.
* 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
public protocol TableViewDelegate: UITableViewDelegate {}
public protocol TableViewDataSource: UITableViewDataSource {
/**
Retrieves the data source items for the tableView.
- Returns: An Array of DataSourceItem objects.
*/
var dataSourceItems: [DataSourceItem] { get }
}
extension UIViewController {
/**
A convenience property that provides access to the TableViewController.
This is the recommended method of accessing the TableViewController
through child UIViewControllers.
*/
public var tableViewController: TableViewController? {
var viewController: UIViewController? = self
while nil != viewController {
if viewController is TableViewController {
return viewController as? TableViewController
}
viewController = viewController?.parent
}
return nil
}
}
open class TableViewController: UIViewController {
/// A reference to a Reminder.
open let tableView = TableView()
/// An Array of DataSourceItems.
open var dataSourceItems = [DataSourceItem]()
open override func viewDidLoad() {
super.viewDidLoad()
prepare()
}
/**
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.
*/
open func prepare() {
view.clipsToBounds = true
view.backgroundColor = .white
view.contentScaleFactor = Screen.scale
prepareTableView()
}
}
extension TableViewController {
/// Prepares the tableView.
fileprivate func prepareTableView() {
tableView.delegate = self
tableView.dataSource = self
view.layout(tableView).edges()
}
}
extension TableViewController: TableViewDelegate {}
extension TableViewController: TableViewDataSource {
@objc
open func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
@objc
open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSourceItems.count
}
@objc
open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
...@@ -67,7 +67,7 @@ open class Color: NSColor { ...@@ -67,7 +67,7 @@ open class Color: NSColor {
// light text // light text
open class lightText { open class lightText {
open static let primary = Color.white open static let primary = .white
open static let secondary = Color.white.withAlphaComponent(0.7) open static let secondary = Color.white.withAlphaComponent(0.7)
open static let others = Color.white.withAlphaComponent(0.5) open static let others = Color.white.withAlphaComponent(0.5)
open static let dividers = Color.white.withAlphaComponent(0.12) open static let dividers = Color.white.withAlphaComponent(0.12)
......
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