From ca672392e85584fc1e07703f4dbfef38c3381fad Mon Sep 17 00:00:00 2001 From: Luis Padron Date: Fri, 14 Jul 2017 14:13:20 -0400 Subject: [PATCH] Version 1.0.0 - Stable Release - Add Swift version check to allow support for Swift 3 --> Swift 4. - Refactor public API to make it less verbose and more Swift-like. - Add two new delegate methods to the `UIEmptyStateDelegate` - Fix some broken documentation/updated docs --- CHANGELOG.md | 19 +- README.md | 51 ----- UIEmptyState.podspec | 2 +- UIEmptyState/UIEmptyStateDataSource.swift | 12 +- UIEmptyState/UIEmptyStateDelegate.swift | 24 ++- UIEmptyState/UIEmptyStateView.swift | 12 +- .../UIViewController+UIEmptyState.swift | 65 +++--- docs/Classes.html | 8 +- docs/Classes/UIEmptyStateView.html | 85 ++++---- docs/Extensions.html | 10 +- .../UICollectionViewController.html | 10 +- docs/Extensions/UITableViewController.html | 10 +- docs/Extensions/UIViewController.html | 48 +++-- docs/Protocols.html | 18 +- docs/Protocols/UIEmptyStateDataSource.html | 204 +++++++++++------- docs/Protocols/UIEmptyStateDelegate.html | 117 ++++++++-- .../Contents/Resources/Documents/Classes.html | 8 +- .../Documents/Classes/UIEmptyStateView.html | 85 ++++---- .../Resources/Documents/Extensions.html | 10 +- .../UICollectionViewController.html | 10 +- .../Extensions/UITableViewController.html | 10 +- .../Extensions/UIViewController.html | 48 +++-- .../Resources/Documents/Protocols.html | 18 +- .../Protocols/UIEmptyStateDataSource.html | 204 +++++++++++------- .../Protocols/UIEmptyStateDelegate.html | 117 ++++++++-- .../Contents/Resources/Documents/index.html | 79 ++----- .../Contents/Resources/Documents/search.json | 2 +- .../Resources/Documents/undocumented.json | 6 - .../Contents/Resources/docSet.dsidx | Bin 28672 -> 28672 bytes docs/docsets/UIEmptyState.tgz | Bin 78078 -> 77523 bytes docs/index.html | 79 ++----- docs/search.json | 2 +- docs/undocumented.json | 2 +- run-jazzy.sh | 2 +- 34 files changed, 762 insertions(+), 615 deletions(-) delete mode 100644 docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/undocumented.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 95dab74..a0d18a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,21 @@ -# UIEmptyState Changelog +# UIEmptyState CHANGELOG + +## Version 1.0.0 - Stable Release + +- Add Swift version check to allow support for Swift 3 --> Swift 4. +- Refactor public API to make it less verbose and more Swift-like. + * All methods which had the format `methodName(forSomething:)` have been refactored to simply `methodName(for:)`. + * Due to this renaming, if using Swift 3.2 or lower, you may get an error +about a `@objc` method having already been declared, this is due to Swift 3 inferring an `@objc` attribute when it is not in fact `@objc`. If using Xcode 9 +, you will need to set `Swift 3 @objc Inference` in the `Optimization Level` of this projects `Build Settings` to `Off`. I know this is a hassle, but I want to keep the API clean and stable, no point in changing it at a later date when Swift 4 is fully released and breaking more code. +- Add two new delegate methods to the `UIEmptyStateDelegate` + * `emptyStateViewWillShow(view: UIView)` which is called before the view is shown, given you time to do any additional work. + * `emptyStateViewWillHide(view: UIView)` which is called right before the view will be hidden from the screen. +- Fix some broken documentation/updated docs + +After this release the API should not change that often, thus I wont be breaking your code as much 😅 + +Thanks for using `UIEmptyState` + ## Version 0.8.3 diff --git a/README.md b/README.md index 3e1ea93..0108b91 100644 --- a/README.md +++ b/README.md @@ -97,49 +97,6 @@ If you need more help take a look at the example project here (Pokemon nerds, wi ## Documentation -Quick overview of available `UIEmptyStateDataSource` properties - -```swift -///////////// METHODS ///////////// -// If empty view should show, implemented by default -func shouldShowEmptyStateView(forTableView:) -> Bool -// If empty view should show, implemented by default -func shouldShowEmptyStateView(forCollectionView:) -> Bool -// The block for the animation code, basic animation by default -func emptyStateViewAnimation(forView,animationDuration:completion) -> Bool - -///////////// COMPUTED PROPERTIES ///////////// -// The view to show, implemented by default -var emptyStateView: UIView -// Whether the view adjusts and resizes to fit and be centered when inside a nav controller -var emptyStateViewAdjustsToFitBars: Bool -// The text for the title view, implemented by default -var emptyStateTitle: NSAttributedString -// The image for the image view, nil by default -var emptyStateImage: UIImage? -// The size of the image view, nil by default -var emptyStateImageSize: CGSize? -// The text for the button title, nil by default -var emptyStateButtonTitle: NSAttributedString? -// The image for the button, nil by default -var emptyStateButtonImage: UIImage? -// The size of the button, nil by default -var emptyStateButtonSize: CGSize? -// The detail message for the view, nil by default -var emptyStateDetailMessage: NSAttributedString? -// The spacing inbetween views, 12 by default -var emptyStateViewSpacing: CGFloat -// The background color for the view, UIColor.clear by default -var emptyStateBackgroundColor: UIColor -// Whether view can scroll when showing, false by default -var emptyStateViewCanScroll: Bool -// Whether view can animate, true by default -var emptyStateViewCanAnimate: Bool -// Whether view animates everytime it appears, true by default -var emptyStateViewAnimatesEverytime: Bool -// The animation duration for the view animation, 0.5 by default -var emptyStateViewAnimationDuration: TimeInterval -``` #### [Read the full documentation here](http://htmlpreview.github.io/?https://github.com/luispadron/UIEmptyState/blob/master/docs/index.html) @@ -147,14 +104,6 @@ var emptyStateViewAnimationDuration: TimeInterval #### Clone this repo and run the `UIEmptyStateExample` project -## Roadmap -- [x] Add support for any `UIViewController` subclass, i.e `UICollectionView` etc. -- [ ] Figure out nicer method for reloading emptystate with out explicitly calling for a reload, maybe method swizzling -- [x] Add animation to view appearance -- [ ] Add nicer animation to button taps, or view taps -- [ ] Add tests -- [ ] Clean up and continue to work on `UIEmptyStateView`, i.e add better constraints and more customization options - ## License (MIT) diff --git a/UIEmptyState.podspec b/UIEmptyState.podspec index a96d65d..28c968e 100644 --- a/UIEmptyState.podspec +++ b/UIEmptyState.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "UIEmptyState" - s.version = "0.8.3" + s.version = "1.0.0" s.summary = "An empty state control to give visually appealing context when building iOS applications." s.description = <<-DESC Empty state control which gives context with either a message, image, and buttons to the user when ever there is a reason the state is empty. diff --git a/UIEmptyState/UIEmptyStateDataSource.swift b/UIEmptyState/UIEmptyStateDataSource.swift index a826e25..5db1816 100644 --- a/UIEmptyState/UIEmptyStateDataSource.swift +++ b/UIEmptyState/UIEmptyStateDataSource.swift @@ -22,7 +22,7 @@ public protocol UIEmptyStateDataSource: class { - returns: Boolean value of whether view should or should not be displayed */ - func shouldShowEmptyStateView(forTableView tableView: UITableView) -> Bool + func shouldShowEmptyStateView(for tableView: UITableView) -> Bool /** Determines whether should or should not show the empty view for a specific collectionView, @@ -33,7 +33,7 @@ public protocol UIEmptyStateDataSource: class { - returns: Boolean value of whether view should or should not be displayed */ - func shouldShowEmptyStateView(forCollectionView collectionView: UICollectionView) -> Bool + func shouldShowEmptyStateView(for collectionView: UICollectionView) -> Bool /** Determines the view to use for the empty state, by default this is a nice stack view @@ -147,7 +147,7 @@ public protocol UIEmptyStateDataSource: class { if implementing this pass this to the `UIView.animate` completion block in order for the delegate to work properly */ - func emptyStateViewAnimation(forView view: UIView, animationDuration: TimeInterval, + func emptyStateViewAnimation(for view: UIView, animationDuration: TimeInterval, completion: ((Bool) -> Void)?) -> Void } @@ -158,7 +158,7 @@ extension UIEmptyStateDataSource where Self: UIViewController { Default implementation for UIViewController tableView determining if should show the emptystate view, counts number of rows in the tableView */ - public func shouldShowEmptyStateView(forTableView tableView: UITableView) -> Bool { + public func shouldShowEmptyStateView(for tableView: UITableView) -> Bool { let sections = tableView.numberOfSections var rows = 0 for section in 0.. Bool { + public func shouldShowEmptyStateView(for collectionView: UICollectionView) -> Bool { let sections = collectionView.numberOfSections var items = 0 for section in 0.. Void)?) -> Void { guard let v = view as? UIEmptyStateView else { return } // Set initial alpha diff --git a/UIEmptyState/UIEmptyStateDelegate.swift b/UIEmptyState/UIEmptyStateDelegate.swift index 46695ed..ace90bf 100644 --- a/UIEmptyState/UIEmptyStateDelegate.swift +++ b/UIEmptyState/UIEmptyStateDelegate.swift @@ -15,6 +15,14 @@ you must handle how this delegate operates */ public protocol UIEmptyStateDelegate: class { + /** + The call back for when the `emptyStateView` will be shown on screen + + - parameters: + - view: The view that is will show + */ + func emptyStateViewWillShow(view: UIView) + /** The call back for when the `emptyStateView` is now shown on screen @@ -23,6 +31,14 @@ public protocol UIEmptyStateDelegate: class { */ func emptyStateViewDidShow(view: UIView) + /** + The call back for when the `emptyStateView` will be hidden + + - parameters: + - view: The view that will be hidden + */ + func emptyStateViewWillHide(view: UIView) + /** The call back for when the button inside the emptyStateView is tapped @@ -45,17 +61,21 @@ public protocol UIEmptyStateDelegate: class { - view: The view which finished animating - didFinish: Whether the animation finished completely, i.e not interrupted */ - func emptyStateViewAnimationCompleted(forEmptyStateView view: UIView, didFinish: Bool) + func emptyStateViewAnimationCompleted(for view: UIView, didFinish: Bool) } /// Extension to add default conformance to UIViewController, by default the method bodies are empty extension UIEmptyStateDelegate where Self: UIViewController { + /// Default empty implementation of `emptyStateViewWillShow` + public func emptyStateViewWillShow(view: UIView) { } /// Default empty implementation of `emptyStateViewDidShow` public func emptyStateViewDidShow(view: UIView) { } + /// Default empty implementation of `emptyStateViewWillHide` + func emptyStateViewWillHide(view: UIView) { } /// Default empty implementation of `emptyStateButtonWasTapped` public func emptyStatebuttonWasTapped(button: UIButton) { } /// Default empty implementation of `emptyStateViewWasTapped` public func emptyStateViewWasTapped(view: UIView) { } /// Default empty implementation of `emptyStateViewAnimationCompleted` - public func emptyStateViewAnimationCompleted(forEmptyStateView view: UIView, didFinish: Bool) { } + public func emptyStateViewAnimationCompleted(for view: UIView, didFinish: Bool) { } } diff --git a/UIEmptyState/UIEmptyStateView.swift b/UIEmptyState/UIEmptyStateView.swift index 71ae62d..ecc7b4a 100644 --- a/UIEmptyState/UIEmptyStateView.swift +++ b/UIEmptyState/UIEmptyStateView.swift @@ -17,11 +17,13 @@ private extension UILabel { let maxSize = CGSize(width: width, height: .greatestFiniteMagnitude) - let attrString = NSAttributedString(string: txt, - attributes: [.font : self.font]) - let expectedRect = attrString.boundingRect(with: maxSize, - options: .usesLineFragmentOrigin, - context: nil) + #if swift(>=4.0) + let attrString = NSAttributedString(string: txt, attributes: [.font: self.font]) + #else + let attrString = NSAttributedString(string: txt, attributes: [NSFontAttributeName: self.font]) + #endif + + let expectedRect = attrString.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, context: nil) return ceil(expectedRect.size.height) } diff --git a/UIEmptyState/UIViewController+UIEmptyState.swift b/UIEmptyState/UIViewController+UIEmptyState.swift index a4bbf75..f43f559 100644 --- a/UIEmptyState/UIViewController+UIEmptyState.swift +++ b/UIEmptyState/UIViewController+UIEmptyState.swift @@ -63,10 +63,14 @@ extension UIViewController { **Important:** This should be called whenever changes are made to the tableView data source or after reloading the tableview - DO NOT override this method/implement it unless you need custom behavior. + Do NOT override this method/implement it unless you need custom behavior and know what you are doing. */ - public func reloadEmptyState(forTableView tableView: UITableView) { - guard let source = emptyStateDataSource, source.shouldShowEmptyStateView(forTableView: tableView) else { + public func reloadEmptyState(for tableView: UITableView) { + guard let source = emptyStateDataSource, source.shouldShowEmptyStateView(for: tableView) else { + // Call the will hide delegate + if let view = emptyStateView { + self.emptyStateDelegate?.emptyStateViewWillHide(view: view) + } // If shouldnt show view remove from superview, enable scrolling again emptyStateView?.isHidden = true tableView.isScrollEnabled = true @@ -87,12 +91,17 @@ extension UIViewController { The method responsible for show and hiding the `UIEmptyStateDataSource.viewForEmptyState` view **Important:** - This should be called whenever changes are made to the collectionView data source - or after reloading the tableview + This should be called whenever changes are made to the collection view data source or after reloading the collection view. + + Do NOT override this method/implement it unless you need custom behavior and know what you are doing. */ - public func reloadEmptyState(forCollectionView collectionView: UICollectionView) { + public func reloadEmptyState(for collectionView: UICollectionView) { guard let source = emptyStateDataSource, - source.shouldShowEmptyStateView(forCollectionView: collectionView) else { + source.shouldShowEmptyStateView(for: collectionView) else { + // Call the will hide delegate + if let view = emptyStateView { + self.emptyStateDelegate?.emptyStateViewWillHide(view: view) + } // If shouldnt show view remove from superview, enable scrolling again emptyStateView?.isHidden = true collectionView.isScrollEnabled = true @@ -112,7 +121,6 @@ extension UIViewController { /// Finishes the reload, i.e assigns the empty view, and adjusts any other UI private func finishReload(for source: UIEmptyStateDataSource) { - let emptyView = showView(for: source) // Set constraints @@ -157,10 +165,13 @@ extension UIViewController { /// Private helper method which will create the empty state view if not created, or show it if hidden private func showView(for source: UIEmptyStateDataSource) -> UIView { + if let createdView = emptyStateView { + // Call the will show delegate + self.emptyStateDelegate?.emptyStateViewWillShow(view: createdView) // View has been created, update it and then reshow createdView.isHidden = false - guard let view = createdView as? UIEmptyStateView else { return createdView} + guard let view = createdView as? UIEmptyStateView else { return createdView } view.backgroundColor = source.emptyStateBackgroundColor view.title = source.emptyStateTitle @@ -176,14 +187,13 @@ extension UIViewController { // Animate now if source.emptyStateViewCanAnimate && source.emptyStateViewAnimatesEverytime { DispatchQueue.main.async { - source.emptyStateViewAnimation(forView: view, - animationDuration: source.emptyStateViewAnimationDuration, - completion: - { finished in - - self.emptyStateDelegate?.emptyStateViewAnimationCompleted(forEmptyStateView: view, - didFinish: finished) - }) + source.emptyStateViewAnimation( + for: view, + animationDuration: source.emptyStateViewAnimationDuration, + completion: { finished in + self.emptyStateDelegate?.emptyStateViewAnimationCompleted(for: view, didFinish: finished) + } + ) } } @@ -192,6 +202,8 @@ extension UIViewController { } else { // We can create the view now let newView = source.emptyStateView + // Call the will show delegate + self.emptyStateDelegate?.emptyStateViewWillShow(view: newView) // Add to emptyStateView property emptyStateView = newView // Add as a subView, bring it infront of the tableView @@ -200,14 +212,13 @@ extension UIViewController { // Animate now if source.emptyStateViewCanAnimate { DispatchQueue.main.async { - source.emptyStateViewAnimation(forView: newView, - animationDuration: source.emptyStateViewAnimationDuration, - completion: - { finished in - - self.emptyStateDelegate?.emptyStateViewAnimationCompleted(forEmptyStateView: newView, - didFinish: finished) - }) + source.emptyStateViewAnimation( + for: newView, + animationDuration: source.emptyStateViewAnimationDuration, + completion: { finished in + self.emptyStateDelegate?.emptyStateViewAnimationCompleted(for: newView, didFinish: finished) + } + ) } } @@ -221,7 +232,7 @@ extension UIViewController { extension UITableViewController { /// Reloads the empty state, defaults the tableView to `self.tableView` public func reloadEmptyState() { - self.reloadEmptyState(forTableView: self.tableView) + self.reloadEmptyState(for: self.tableView) } } @@ -234,7 +245,7 @@ extension UICollectionViewController { return } - self.reloadEmptyState(forCollectionView: collectionView) + self.reloadEmptyState(for: collectionView) } } diff --git a/docs/Classes.html b/docs/Classes.html index e2f3899..b61ef19 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -101,9 +101,9 @@

Classes

  • - + - UIEmptyStateView + UIEmptyStateView
    @@ -135,8 +135,8 @@

    Declaration

    diff --git a/docs/Classes/UIEmptyStateView.html b/docs/Classes/UIEmptyStateView.html index 8554b86..752082e 100644 --- a/docs/Classes/UIEmptyStateView.html +++ b/docs/Classes/UIEmptyStateView.html @@ -116,9 +116,9 @@

    Properties

  • - + - delegate + delegate
    @@ -143,9 +143,9 @@

    Declaration

  • - + - title + title
    @@ -170,9 +170,9 @@

    Declaration

  • - + - image + image
    @@ -197,9 +197,9 @@

    Declaration

  • - + - imageSize + imageSize
    @@ -224,9 +224,9 @@

    Declaration

  • - + - buttonTitle + buttonTitle
    @@ -251,9 +251,9 @@

    Declaration

  • - + - buttonImage + buttonImage
    @@ -278,9 +278,9 @@

    Declaration

  • - + - buttonSize + buttonSize
    @@ -305,9 +305,9 @@

    Declaration

  • - + - detailMessage + detailMessage
    @@ -332,9 +332,9 @@

    Declaration

  • - + - spacing + spacing
    @@ -370,9 +370,9 @@

    Initializers

  • - + - init(frame:title:) + init(frame:title:)
    @@ -380,7 +380,8 @@

    Initializers

    -

    Initializer for UIEmptyStateView, requires a frame and an NSAttributedString which will be used as it’s title

    +

    Initializer for UIEmptyStateView, +requires a frame and an NSAttributedString which will be used as it’s title

    @@ -397,9 +398,9 @@

    Declaration

  • @@ -435,9 +436,9 @@

    Overrides

  • @@ -447,7 +448,9 @@

    Overrides

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    -

    ** IMPORTANT: ** This method will remove all constraints that a part of the contentView so do not add constraints to these views.

    +

    ** IMPORTANT: ** +This method will remove all constraints that a part of the contentView so do not add +constraints to these views.

    @@ -475,9 +478,9 @@

    Subviews

  • @@ -502,9 +505,9 @@

    Declaration

  • @@ -512,7 +515,7 @@

    Declaration

    -

    The title view which displays the value of title, place below the image view

    +

    The title view which displays the value of title, place below the image view

    @@ -529,9 +532,9 @@

    Declaration

  • @@ -539,7 +542,7 @@

    Declaration

    -

    The image view which displays the value of image, placed above the title label

    +

    The image view which displays the value of image, placed above the title label

    @@ -556,9 +559,9 @@

    Declaration

  • - + - button + button
    @@ -566,7 +569,7 @@

    Declaration

    -

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    +

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    @@ -583,9 +586,9 @@

    Declaration

  • @@ -615,8 +618,8 @@

    Declaration

  • diff --git a/docs/Extensions.html b/docs/Extensions.html index c89c050..985e784 100644 --- a/docs/Extensions.html +++ b/docs/Extensions.html @@ -111,7 +111,7 @@

    Extensions

    -

    Undocumented

    +

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    See more
    @@ -131,7 +131,7 @@

    Extensions

    -

    Undocumented

    +

    A convenience extension for UITableViewController which defaults the tableView

    See more
    @@ -151,7 +151,7 @@

    Extensions

    -

    Undocumented

    +

    A convenience extension for UICollectionViewController which defaults the collectionView

    See more
    @@ -166,8 +166,8 @@

    Extensions

  • diff --git a/docs/Extensions/UICollectionViewController.html b/docs/Extensions/UICollectionViewController.html index eb4af6e..137d782 100644 --- a/docs/Extensions/UICollectionViewController.html +++ b/docs/Extensions/UICollectionViewController.html @@ -90,7 +90,7 @@

    UICollectionViewController

    -

    Undocumented

    +

    A convenience extension for UICollectionViewController which defaults the collectionView

    @@ -102,9 +102,9 @@

    UICollectionViewController

  • @@ -134,8 +134,8 @@

    Declaration

  • diff --git a/docs/Extensions/UITableViewController.html b/docs/Extensions/UITableViewController.html index 49fb6d1..885dc76 100644 --- a/docs/Extensions/UITableViewController.html +++ b/docs/Extensions/UITableViewController.html @@ -90,7 +90,7 @@

    UITableViewController

    -

    Undocumented

    +

    A convenience extension for UITableViewController which defaults the tableView

    @@ -102,9 +102,9 @@

    UITableViewController

  • @@ -134,8 +134,8 @@

    Declaration

  • diff --git a/docs/Extensions/UIViewController.html b/docs/Extensions/UIViewController.html index 48e949a..1ba1351 100644 --- a/docs/Extensions/UIViewController.html +++ b/docs/Extensions/UIViewController.html @@ -90,7 +90,7 @@

    UIViewController

    -

    Undocumented

    +

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    @@ -102,9 +102,9 @@

    UIViewController

  • @@ -132,9 +132,9 @@

    Declaration

  • @@ -162,9 +162,9 @@

    Declaration

  • @@ -174,7 +174,9 @@

    Declaration

    The empty state view associated to the ViewController

    -

    Note: this view corresponds and is created from the UIEmptyDataSource method: func viewForEmptyState() -> UIView

    +

    Note: +This view corresponds and is created from +the UIEmptyDataSource method: func viewForEmptyState() -> UIView

    By default this view is of type UIEmptyStateView

    @@ -193,9 +195,9 @@

    Declaration

  • @@ -205,16 +207,17 @@

    Declaration

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    -

    Important: This should be called whenever changes are made to the tableView data source or after reloading the tableview

    +

    Important: +This should be called whenever changes are made to the tableView data source or after reloading the tableview

    -

    DO NOT override this method/implement it unless you need custom behavior.

    +

    Do NOT override this method/implement it unless you need custom behavior and know what you are doing.

    Declaration

    Swift

    -
    public func reloadEmptyState(forTableView tableView: UITableView)
    +
    public func reloadEmptyState(for tableView: UITableView)
    @@ -224,9 +227,9 @@

    Declaration

  • @@ -236,14 +239,17 @@

    Declaration

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    -

    Important: This should be called whenever changes are made to the collectionView data source or after reloading the tableview

    +

    Important: +This should be called whenever changes are made to the collection view data source or after reloading the collection view.

    + +

    Do NOT override this method/implement it unless you need custom behavior and know what you are doing.

    Declaration

    Swift

    -
    public func reloadEmptyState(forCollectionView collectionView: UICollectionView)
    +
    public func reloadEmptyState(for collectionView: UICollectionView)
    @@ -258,8 +264,8 @@

    Declaration

  • diff --git a/docs/Protocols.html b/docs/Protocols.html index f471ffe..f31a6d8 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -101,9 +101,9 @@

    Protocols

  • @@ -136,9 +136,9 @@

    Declaration

  • @@ -148,8 +148,10 @@

    Declaration

    The delegate for UIEmptyStateView

    -

    Important: this delegate and its functions are only used when using UIEmptyStateView. -If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState you must handle how this delegate operates

    +

    Important: +This delegate and its functions are only used when using UIEmptyStateView. +If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState +you must handle how this delegate operates

    See more
    @@ -172,8 +174,8 @@

    Declaration

  • diff --git a/docs/Protocols/UIEmptyStateDataSource.html b/docs/Protocols/UIEmptyStateDataSource.html index 1b32780..71a6cc6 100644 --- a/docs/Protocols/UIEmptyStateDataSource.html +++ b/docs/Protocols/UIEmptyStateDataSource.html @@ -111,9 +111,9 @@

    UIEmptyStateDataSource

  • - - - shouldShowEmptyStateView(forTableView:) + + + shouldShowEmptyStateView(for:) Default implementation @@ -124,7 +124,8 @@

    UIEmptyStateDataSource

    -

    Determines whether should or should not show the empty view for a specific tableView, by default it will count tableView rows to determine

    +

    Determines whether should or should not show the empty view for a specific tableView, +by default it will count tableView rows to determine

    • paramaters: @@ -137,21 +138,23 @@

      UIEmptyStateDataSource

    Default Implementation

    -

    Default implementation for UIViewController tableView determining if should show the emptystate view, counts number of rows in the tableView

    +

    Default implementation for UIViewController tableView determining if should show the emptystate view, +counts number of rows in the tableView

    +

    Default implementation for UIViewController collectionView determining if should show the emptystate view, +counts number of items in the collectionView

    Declaration

    Swift

    -
    func shouldShowEmptyStateView(forTableView tableView: UITableView) -> Bool
    +
    func shouldShowEmptyStateView(for tableView: UITableView) -> Bool

    Return Value

    Boolean value of whether view should or should not be displayed

    -
    @@ -159,20 +162,18 @@

    Return Value

  • -

    Determines whether should or should not show the empty view for a specific collectionView, by default it will count collectionView items to determine

    +

    Determines whether should or should not show the empty view for a specific collectionView, +by default it will count collectionView items to determine

    • paramaters: @@ -182,24 +183,18 @@

      Return Value

  • -
    -

    Default Implementation

    -
    -

    Default implementation for UIViewController collectionView determining if should show the emptystate view, counts number of items in the collectionView

    -

    Declaration

    Swift

    -
    func shouldShowEmptyStateView(forCollectionView collectionView: UICollectionView) -> Bool
    +
    func shouldShowEmptyStateView(for collectionView: UICollectionView) -> Bool

    Return Value

    Boolean value of whether view should or should not be displayed

    -
    @@ -207,9 +202,9 @@

    Return Value

  • - + - emptyStateView + emptyStateView Default implementation @@ -223,7 +218,8 @@

    Return Value

    Determines the view to use for the empty state, by default this is a nice stack view

    Important: By default this will return a UIEmptyStateView, implementing this method will -cause the delegation of button and view touches to no longer work, unless you implement those yourself as well.

    +cause the delegation of button and view touches to no longer work, +unless you implement those yourself as well.

    Default Implementation

    @@ -245,9 +241,9 @@

    Declaration

  • - + - emptyStateViewAdjustsToFitBars + emptyStateViewAdjustsToFitBars Default implementation @@ -258,8 +254,8 @@

    Declaration

    -

    Determines whether the emptyStateView should adjust to be shown properly inside by not extending the view -past the navigation bar and tab bar of a navigation controller.

    +

    Determines whether the emptyStateView should adjust to be shown properly inside by +not extending the view past the navigation bar and tab bar of a navigation controller.

    Default Implementation

    @@ -281,9 +277,9 @@

    Declaration

  • - + - emptyStateTitle + emptyStateTitle Default implementation @@ -294,7 +290,8 @@

    Declaration

    -

    Determines the title for the Empty View, by default this just returns an intro message, override for custom title

    +

    Determines the title for the Empty View, by default this just returns an intro message, +override for custom title

    Default Implementation

    @@ -316,9 +313,9 @@

    Declaration

  • - + - emptyStateImage + emptyStateImage Default implementation @@ -351,9 +348,9 @@

    Declaration

  • - + - emptyStateImageSize + emptyStateImageSize Default implementation @@ -364,7 +361,8 @@

    Declaration

    -

    Determines the size of the image view, by default this will return nil which means that the imageview size will just be 100x100

    +

    Determines the size of the image view, by default this will return nil which means +that the imageview size will just be 100x100

    Default Implementation

    @@ -386,9 +384,9 @@

    Declaration

  • - + - emptyStateButtonTitle + emptyStateButtonTitle Default implementation @@ -421,9 +419,9 @@

    Declaration

  • - + - emptyStateButtonImage + emptyStateButtonImage Default implementation @@ -456,9 +454,9 @@

    Declaration

  • - + - emptyStateButtonSize + emptyStateButtonSize Default implementation @@ -469,13 +467,17 @@

    Declaration

    -

    Determines the size of the button, by default it will constrain the view to the size of the title plus some padding. -Implement this method to send a custom size for the button, useful when adding a buttonImage to the button

    +

    Determines the size of the button, by default it will constrain the view to the size +of the title plus some padding.

    + +

    Implement this method to send a custom size for the button, +useful when adding a buttonImage to the button

    Default Implementation

    -

    Default implementation of emptyStateButtonSize, returns nil, thus size will be calculated using size of buttonTitle

    +

    Default implementation of emptyStateButtonSize, returns nil, +thus size will be calculated using size of buttonTitle

    @@ -492,9 +494,9 @@

    Declaration

  • - + - emptyStateDetailMessage + emptyStateDetailMessage Default implementation @@ -505,7 +507,8 @@

    Declaration

    -

    Determines the message which will be displayed in the detail view of the empty state view, by default this will return an intro message

    +

    Determines the message which will be displayed in the detail view of the empty state view, +by default this will return an intro message

    Default Implementation

    @@ -527,9 +530,9 @@

    Declaration

  • - + - emptyStateViewSpacing + emptyStateViewSpacing Default implementation @@ -562,9 +565,9 @@

    Declaration

  • - + - emptyStateBackgroundColor + emptyStateBackgroundColor Default implementation @@ -597,9 +600,9 @@

    Declaration

  • - + - emptyStateViewCanScroll + emptyStateViewCanScroll Default implementation @@ -634,9 +637,9 @@

    Declaration

  • - + - emptyStateViewCanAnimate + emptyStateViewCanAnimate Default implementation @@ -649,7 +652,8 @@

    Declaration

    Whether the empty state view should animate or not

    -

    Note: This is called whenever the empty state view will show, if false; no animation will occur. Default = true

    +

    Note: +This is called whenever the empty state view will show, if false; no animation will occur. Default = true

    Default Implementation

    @@ -671,9 +675,9 @@

    Declaration

  • - + - emptyStateViewAnimatesEverytime + emptyStateViewAnimatesEverytime Default implementation @@ -686,8 +690,11 @@

    Declaration

    Whether the empty state view animates every time it is shown

    -

    Note: This is called whenever the empty state view will show, returning true means that an animation from emptyStateViewAnimation will be performed everytime the view is shown - returning false means that only the inital animation is shown. To turn off animation in general use emptyStateViewCanAnimate

    +

    Note: +This is called whenever the empty state view will show, returning true means that an animation +from emptyStateViewAnimation will be performed everytime the view is shown +returning false means that only the inital animation is shown. +To turn off animation in general use emptyStateViewCanAnimate

    Default Implementation

    @@ -709,9 +716,9 @@

    Declaration

  • - + - emptyStateViewAnimationDuration + emptyStateViewAnimationDuration Default implementation @@ -724,7 +731,8 @@

    Declaration

    The amount of time the empty state view should animate for

    -

    Note: This is called whenever the empty state view will show, Default = 0.5

    +

    Note: +This is called whenever the empty state view will show, Default = 0.5

    Default Implementation

    @@ -746,9 +754,9 @@

    Declaration

  • - - - emptyStateViewAnimation(forView:animationDuration:completion:) + + + emptyStateViewAnimation(for:animationDuration:completion:) Default implementation @@ -763,16 +771,6 @@

    Declaration

    Note: This is called whenever the empty state view will show, Default = pop in and fade in of views

    -
      -
    • paramters: - -
        -
      • view: The view which will be animated, can be used to control its properties inside a UIView.animate block
      • -
      • animationDuration: The duration which we should animate for, value is grabbed from emptyStateViewAnimationDuration
      • -
      • completion: The completion block for the emptyStateView, if implementing this pass this to the UIView.animate completion block in order for the delegate to work properly
      • -
    • -
    -

    Default Implementation

    @@ -783,10 +781,56 @@

    Default Implementation

    Declaration

    Swift

    -
    func emptyStateViewAnimation(forView view: UIView, animationDuration: TimeInterval, completion: ((Bool) -> Void)?) -> Void
    +
    func emptyStateViewAnimation(for view: UIView, animationDuration: TimeInterval,
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + view + + +
    +

    The view which will be animated, can be used to control its properties inside a UIView.animate block

    +
    +
    + + animationDuration + + +
    +

    The duration which we should animate for, + value is grabbed from emptyStateViewAnimationDuration

    +
    +
    + + completion + + +
    +

    The completion block for the emptyStateView, + if implementing this pass this to the UIView.animate completion block + in order for the delegate to work properly

    +
    +
    +
  • @@ -798,8 +842,8 @@

    Declaration

    diff --git a/docs/Protocols/UIEmptyStateDelegate.html b/docs/Protocols/UIEmptyStateDelegate.html index 300c47b..cc5a9ae 100644 --- a/docs/Protocols/UIEmptyStateDelegate.html +++ b/docs/Protocols/UIEmptyStateDelegate.html @@ -98,8 +98,10 @@

    UIEmptyStateDelegate

  • The delegate for UIEmptyStateView

    -

    Important: this delegate and its functions are only used when using UIEmptyStateView. -If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState you must handle how this delegate operates

    +

    Important: +This delegate and its functions are only used when using UIEmptyStateView. +If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState +you must handle how this delegate operates

  • @@ -111,9 +113,48 @@

    UIEmptyStateDelegate

  • - + + + emptyStateViewWillShow(view:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    The call back for when the emptyStateView will be shown on screen

    + +
      +
    • view: The view that is will show
    • +
    + +
    +

    Default Implementation

    +
    +

    Default empty implementation of emptyStateViewWillShow

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func emptyStateViewWillShow(view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + - emptyStateViewDidShow(view:) + emptyStateViewDidShow(view:) Default implementation @@ -153,7 +194,6 @@

    Parameters

    The view that is now shown

    -
    @@ -166,9 +206,40 @@

    Parameters

  • - + + + emptyStateViewWillHide(view:) + +
    +
    +
    +
    +
    +
    +

    The call back for when the emptyStateView will be hidden

    + +
      +
    • view: The view that will be hidden
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func emptyStateViewWillHide(view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + - emptyStatebuttonWasTapped(button:) + emptyStatebuttonWasTapped(button:) Default implementation @@ -208,7 +279,6 @@

    Parameters

    The button that was tapped

    -
    @@ -221,9 +291,9 @@

    Parameters

  • - + - emptyStateViewWasTapped(view:) + emptyStateViewWasTapped(view:) Default implementation @@ -263,7 +333,6 @@

    Parameters

    The view that was tapped

    -
    @@ -276,9 +345,9 @@

    Parameters

  • - - - emptyStateViewAnimationCompleted(forEmptyStateView:didFinish:) + + + emptyStateViewAnimationCompleted(for:didFinish:) Default implementation @@ -289,10 +358,16 @@

    Parameters

    -

    The call back for when the animation of the emptyStateView is done -- paramaters: - - view: The view which finished animating - - didFinish: Whether the animation finished completely, i.e not interrupted

    +

    The call back for when the animation of the emptyStateView is done

    + +
      +
    • paramaters: + +
        +
      • view: The view which finished animating
      • +
      • didFinish: Whether the animation finished completely, i.e not interrupted
      • +
    • +

    Default Implementation

    @@ -304,7 +379,7 @@

    Default Implementation

    Declaration

    Swift

    -
    func emptyStateViewAnimationCompleted(forEmptyStateView view: UIView, didFinish: Bool)
    +
    func emptyStateViewAnimationCompleted(for view: UIView, didFinish: Bool)
    @@ -319,8 +394,8 @@

    Declaration

    diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes.html index e2f3899..b61ef19 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes.html @@ -101,9 +101,9 @@

    Classes

  • - + - UIEmptyStateView + UIEmptyStateView
    @@ -135,8 +135,8 @@

    Declaration

    diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes/UIEmptyStateView.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes/UIEmptyStateView.html index 8554b86..752082e 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes/UIEmptyStateView.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Classes/UIEmptyStateView.html @@ -116,9 +116,9 @@

    Properties

  • - + - delegate + delegate
    @@ -143,9 +143,9 @@

    Declaration

  • - + - title + title
    @@ -170,9 +170,9 @@

    Declaration

  • - + - image + image
    @@ -197,9 +197,9 @@

    Declaration

  • - + - imageSize + imageSize
    @@ -224,9 +224,9 @@

    Declaration

  • - + - buttonTitle + buttonTitle
    @@ -251,9 +251,9 @@

    Declaration

  • - + - buttonImage + buttonImage
    @@ -278,9 +278,9 @@

    Declaration

  • - + - buttonSize + buttonSize
    @@ -305,9 +305,9 @@

    Declaration

  • - + - detailMessage + detailMessage
    @@ -332,9 +332,9 @@

    Declaration

  • - + - spacing + spacing
    @@ -370,9 +370,9 @@

    Initializers

  • - + - init(frame:title:) + init(frame:title:)
    @@ -380,7 +380,8 @@

    Initializers

    -

    Initializer for UIEmptyStateView, requires a frame and an NSAttributedString which will be used as it’s title

    +

    Initializer for UIEmptyStateView, +requires a frame and an NSAttributedString which will be used as it’s title

    @@ -397,9 +398,9 @@

    Declaration

  • @@ -435,9 +436,9 @@

    Overrides

  • @@ -447,7 +448,9 @@

    Overrides

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    -

    ** IMPORTANT: ** This method will remove all constraints that a part of the contentView so do not add constraints to these views.

    +

    ** IMPORTANT: ** +This method will remove all constraints that a part of the contentView so do not add +constraints to these views.

    @@ -475,9 +478,9 @@

    Subviews

  • @@ -502,9 +505,9 @@

    Declaration

  • @@ -512,7 +515,7 @@

    Declaration

    -

    The title view which displays the value of title, place below the image view

    +

    The title view which displays the value of title, place below the image view

    @@ -529,9 +532,9 @@

    Declaration

  • @@ -539,7 +542,7 @@

    Declaration

    -

    The image view which displays the value of image, placed above the title label

    +

    The image view which displays the value of image, placed above the title label

    @@ -556,9 +559,9 @@

    Declaration

  • - + - button + button
    @@ -566,7 +569,7 @@

    Declaration

    -

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    +

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    @@ -583,9 +586,9 @@

    Declaration

  • @@ -615,8 +618,8 @@

    Declaration

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions.html index c89c050..985e784 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions.html @@ -111,7 +111,7 @@

    Extensions

    -

    Undocumented

    +

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    See more
    @@ -131,7 +131,7 @@

    Extensions

    -

    Undocumented

    +

    A convenience extension for UITableViewController which defaults the tableView

    See more
    @@ -151,7 +151,7 @@

    Extensions

    -

    Undocumented

    +

    A convenience extension for UICollectionViewController which defaults the collectionView

    See more
    @@ -166,8 +166,8 @@

    Extensions

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UICollectionViewController.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UICollectionViewController.html index eb4af6e..137d782 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UICollectionViewController.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UICollectionViewController.html @@ -90,7 +90,7 @@

    UICollectionViewController

    -

    Undocumented

    +

    A convenience extension for UICollectionViewController which defaults the collectionView

    @@ -102,9 +102,9 @@

    UICollectionViewController

  • @@ -134,8 +134,8 @@

    Declaration

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UITableViewController.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UITableViewController.html index 49fb6d1..885dc76 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UITableViewController.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UITableViewController.html @@ -90,7 +90,7 @@

    UITableViewController

    -

    Undocumented

    +

    A convenience extension for UITableViewController which defaults the tableView

    @@ -102,9 +102,9 @@

    UITableViewController

  • @@ -134,8 +134,8 @@

    Declaration

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UIViewController.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UIViewController.html index 48e949a..1ba1351 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UIViewController.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Extensions/UIViewController.html @@ -90,7 +90,7 @@

    UIViewController

    -

    Undocumented

    +

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    @@ -102,9 +102,9 @@

    UIViewController

  • @@ -132,9 +132,9 @@

    Declaration

  • @@ -162,9 +162,9 @@

    Declaration

  • @@ -174,7 +174,9 @@

    Declaration

    The empty state view associated to the ViewController

    -

    Note: this view corresponds and is created from the UIEmptyDataSource method: func viewForEmptyState() -> UIView

    +

    Note: +This view corresponds and is created from +the UIEmptyDataSource method: func viewForEmptyState() -> UIView

    By default this view is of type UIEmptyStateView

    @@ -193,9 +195,9 @@

    Declaration

  • @@ -205,16 +207,17 @@

    Declaration

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    -

    Important: This should be called whenever changes are made to the tableView data source or after reloading the tableview

    +

    Important: +This should be called whenever changes are made to the tableView data source or after reloading the tableview

    -

    DO NOT override this method/implement it unless you need custom behavior.

    +

    Do NOT override this method/implement it unless you need custom behavior and know what you are doing.

    Declaration

    Swift

    -
    public func reloadEmptyState(forTableView tableView: UITableView)
    +
    public func reloadEmptyState(for tableView: UITableView)
    @@ -224,9 +227,9 @@

    Declaration

  • @@ -236,14 +239,17 @@

    Declaration

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    -

    Important: This should be called whenever changes are made to the collectionView data source or after reloading the tableview

    +

    Important: +This should be called whenever changes are made to the collection view data source or after reloading the collection view.

    + +

    Do NOT override this method/implement it unless you need custom behavior and know what you are doing.

    Declaration

    Swift

    -
    public func reloadEmptyState(forCollectionView collectionView: UICollectionView)
    +
    public func reloadEmptyState(for collectionView: UICollectionView)
    @@ -258,8 +264,8 @@

    Declaration

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols.html index f471ffe..f31a6d8 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols.html @@ -101,9 +101,9 @@

    Protocols

  • @@ -136,9 +136,9 @@

    Declaration

  • @@ -148,8 +148,10 @@

    Declaration

    The delegate for UIEmptyStateView

    -

    Important: this delegate and its functions are only used when using UIEmptyStateView. -If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState you must handle how this delegate operates

    +

    Important: +This delegate and its functions are only used when using UIEmptyStateView. +If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState +you must handle how this delegate operates

    See more
    @@ -172,8 +174,8 @@

    Declaration

  • diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDataSource.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDataSource.html index 1b32780..71a6cc6 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDataSource.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDataSource.html @@ -111,9 +111,9 @@

    UIEmptyStateDataSource

  • - - - shouldShowEmptyStateView(forTableView:) + + + shouldShowEmptyStateView(for:) Default implementation @@ -124,7 +124,8 @@

    UIEmptyStateDataSource

    -

    Determines whether should or should not show the empty view for a specific tableView, by default it will count tableView rows to determine

    +

    Determines whether should or should not show the empty view for a specific tableView, +by default it will count tableView rows to determine

    • paramaters: @@ -137,21 +138,23 @@

      UIEmptyStateDataSource

    Default Implementation

    -

    Default implementation for UIViewController tableView determining if should show the emptystate view, counts number of rows in the tableView

    +

    Default implementation for UIViewController tableView determining if should show the emptystate view, +counts number of rows in the tableView

    +

    Default implementation for UIViewController collectionView determining if should show the emptystate view, +counts number of items in the collectionView

    Declaration

    Swift

    -
    func shouldShowEmptyStateView(forTableView tableView: UITableView) -> Bool
    +
    func shouldShowEmptyStateView(for tableView: UITableView) -> Bool

    Return Value

    Boolean value of whether view should or should not be displayed

    -
    @@ -159,20 +162,18 @@

    Return Value

  • -

    Determines whether should or should not show the empty view for a specific collectionView, by default it will count collectionView items to determine

    +

    Determines whether should or should not show the empty view for a specific collectionView, +by default it will count collectionView items to determine

    • paramaters: @@ -182,24 +183,18 @@

      Return Value

  • -
    -

    Default Implementation

    -
    -

    Default implementation for UIViewController collectionView determining if should show the emptystate view, counts number of items in the collectionView

    -

    Declaration

    Swift

    -
    func shouldShowEmptyStateView(forCollectionView collectionView: UICollectionView) -> Bool
    +
    func shouldShowEmptyStateView(for collectionView: UICollectionView) -> Bool

    Return Value

    Boolean value of whether view should or should not be displayed

    -
    @@ -207,9 +202,9 @@

    Return Value

  • - + - emptyStateView + emptyStateView Default implementation @@ -223,7 +218,8 @@

    Return Value

    Determines the view to use for the empty state, by default this is a nice stack view

    Important: By default this will return a UIEmptyStateView, implementing this method will -cause the delegation of button and view touches to no longer work, unless you implement those yourself as well.

    +cause the delegation of button and view touches to no longer work, +unless you implement those yourself as well.

    Default Implementation

    @@ -245,9 +241,9 @@

    Declaration

  • - + - emptyStateViewAdjustsToFitBars + emptyStateViewAdjustsToFitBars Default implementation @@ -258,8 +254,8 @@

    Declaration

    -

    Determines whether the emptyStateView should adjust to be shown properly inside by not extending the view -past the navigation bar and tab bar of a navigation controller.

    +

    Determines whether the emptyStateView should adjust to be shown properly inside by +not extending the view past the navigation bar and tab bar of a navigation controller.

    Default Implementation

    @@ -281,9 +277,9 @@

    Declaration

  • - + - emptyStateTitle + emptyStateTitle Default implementation @@ -294,7 +290,8 @@

    Declaration

    -

    Determines the title for the Empty View, by default this just returns an intro message, override for custom title

    +

    Determines the title for the Empty View, by default this just returns an intro message, +override for custom title

    Default Implementation

    @@ -316,9 +313,9 @@

    Declaration

  • - + - emptyStateImage + emptyStateImage Default implementation @@ -351,9 +348,9 @@

    Declaration

  • - + - emptyStateImageSize + emptyStateImageSize Default implementation @@ -364,7 +361,8 @@

    Declaration

    -

    Determines the size of the image view, by default this will return nil which means that the imageview size will just be 100x100

    +

    Determines the size of the image view, by default this will return nil which means +that the imageview size will just be 100x100

    Default Implementation

    @@ -386,9 +384,9 @@

    Declaration

  • - + - emptyStateButtonTitle + emptyStateButtonTitle Default implementation @@ -421,9 +419,9 @@

    Declaration

  • - + - emptyStateButtonImage + emptyStateButtonImage Default implementation @@ -456,9 +454,9 @@

    Declaration

  • - + - emptyStateButtonSize + emptyStateButtonSize Default implementation @@ -469,13 +467,17 @@

    Declaration

    -

    Determines the size of the button, by default it will constrain the view to the size of the title plus some padding. -Implement this method to send a custom size for the button, useful when adding a buttonImage to the button

    +

    Determines the size of the button, by default it will constrain the view to the size +of the title plus some padding.

    + +

    Implement this method to send a custom size for the button, +useful when adding a buttonImage to the button

    Default Implementation

    -

    Default implementation of emptyStateButtonSize, returns nil, thus size will be calculated using size of buttonTitle

    +

    Default implementation of emptyStateButtonSize, returns nil, +thus size will be calculated using size of buttonTitle

    @@ -492,9 +494,9 @@

    Declaration

  • - + - emptyStateDetailMessage + emptyStateDetailMessage Default implementation @@ -505,7 +507,8 @@

    Declaration

    -

    Determines the message which will be displayed in the detail view of the empty state view, by default this will return an intro message

    +

    Determines the message which will be displayed in the detail view of the empty state view, +by default this will return an intro message

    Default Implementation

    @@ -527,9 +530,9 @@

    Declaration

  • - + - emptyStateViewSpacing + emptyStateViewSpacing Default implementation @@ -562,9 +565,9 @@

    Declaration

  • - + - emptyStateBackgroundColor + emptyStateBackgroundColor Default implementation @@ -597,9 +600,9 @@

    Declaration

  • - + - emptyStateViewCanScroll + emptyStateViewCanScroll Default implementation @@ -634,9 +637,9 @@

    Declaration

  • - + - emptyStateViewCanAnimate + emptyStateViewCanAnimate Default implementation @@ -649,7 +652,8 @@

    Declaration

    Whether the empty state view should animate or not

    -

    Note: This is called whenever the empty state view will show, if false; no animation will occur. Default = true

    +

    Note: +This is called whenever the empty state view will show, if false; no animation will occur. Default = true

    Default Implementation

    @@ -671,9 +675,9 @@

    Declaration

  • - + - emptyStateViewAnimatesEverytime + emptyStateViewAnimatesEverytime Default implementation @@ -686,8 +690,11 @@

    Declaration

    Whether the empty state view animates every time it is shown

    -

    Note: This is called whenever the empty state view will show, returning true means that an animation from emptyStateViewAnimation will be performed everytime the view is shown - returning false means that only the inital animation is shown. To turn off animation in general use emptyStateViewCanAnimate

    +

    Note: +This is called whenever the empty state view will show, returning true means that an animation +from emptyStateViewAnimation will be performed everytime the view is shown +returning false means that only the inital animation is shown. +To turn off animation in general use emptyStateViewCanAnimate

    Default Implementation

    @@ -709,9 +716,9 @@

    Declaration

  • - + - emptyStateViewAnimationDuration + emptyStateViewAnimationDuration Default implementation @@ -724,7 +731,8 @@

    Declaration

    The amount of time the empty state view should animate for

    -

    Note: This is called whenever the empty state view will show, Default = 0.5

    +

    Note: +This is called whenever the empty state view will show, Default = 0.5

    Default Implementation

    @@ -746,9 +754,9 @@

    Declaration

  • - - - emptyStateViewAnimation(forView:animationDuration:completion:) + + + emptyStateViewAnimation(for:animationDuration:completion:) Default implementation @@ -763,16 +771,6 @@

    Declaration

    Note: This is called whenever the empty state view will show, Default = pop in and fade in of views

    -
      -
    • paramters: - -
        -
      • view: The view which will be animated, can be used to control its properties inside a UIView.animate block
      • -
      • animationDuration: The duration which we should animate for, value is grabbed from emptyStateViewAnimationDuration
      • -
      • completion: The completion block for the emptyStateView, if implementing this pass this to the UIView.animate completion block in order for the delegate to work properly
      • -
    • -
    -

    Default Implementation

    @@ -783,10 +781,56 @@

    Default Implementation

    Declaration

    Swift

    -
    func emptyStateViewAnimation(forView view: UIView, animationDuration: TimeInterval, completion: ((Bool) -> Void)?) -> Void
    +
    func emptyStateViewAnimation(for view: UIView, animationDuration: TimeInterval,
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + view + + +
    +

    The view which will be animated, can be used to control its properties inside a UIView.animate block

    +
    +
    + + animationDuration + + +
    +

    The duration which we should animate for, + value is grabbed from emptyStateViewAnimationDuration

    +
    +
    + + completion + + +
    +

    The completion block for the emptyStateView, + if implementing this pass this to the UIView.animate completion block + in order for the delegate to work properly

    +
    +
    +
  • @@ -798,8 +842,8 @@

    Declaration

    diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDelegate.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDelegate.html index 300c47b..cc5a9ae 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDelegate.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/Protocols/UIEmptyStateDelegate.html @@ -98,8 +98,10 @@

    UIEmptyStateDelegate

  • The delegate for UIEmptyStateView

    -

    Important: this delegate and its functions are only used when using UIEmptyStateView. -If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState you must handle how this delegate operates

    +

    Important: +This delegate and its functions are only used when using UIEmptyStateView. +If you will provide a custom view in the UIEmptyStateDataSource viewForEmptyState +you must handle how this delegate operates

  • @@ -111,9 +113,48 @@

    UIEmptyStateDelegate

  • - + + + emptyStateViewWillShow(view:) + + + Default implementation + +
    +
    +
    +
    +
    +
    +

    The call back for when the emptyStateView will be shown on screen

    + +
      +
    • view: The view that is will show
    • +
    + +
    +

    Default Implementation

    +
    +

    Default empty implementation of emptyStateViewWillShow

    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func emptyStateViewWillShow(view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + - emptyStateViewDidShow(view:) + emptyStateViewDidShow(view:) Default implementation @@ -153,7 +194,6 @@

    Parameters

    The view that is now shown

    -
    @@ -166,9 +206,40 @@

    Parameters

  • - + + + emptyStateViewWillHide(view:) + +
    +
    +
    +
    +
    +
    +

    The call back for when the emptyStateView will be hidden

    + +
      +
    • view: The view that will be hidden
    • +
    + +
    +
    +

    Declaration

    +
    +

    Swift

    +
    func emptyStateViewWillHide(view: UIView)
    + +
    +
    +
    +
    +
  • +
  • +
    + + - emptyStatebuttonWasTapped(button:) + emptyStatebuttonWasTapped(button:) Default implementation @@ -208,7 +279,6 @@

    Parameters

    The button that was tapped

    -
    @@ -221,9 +291,9 @@

    Parameters

  • - + - emptyStateViewWasTapped(view:) + emptyStateViewWasTapped(view:) Default implementation @@ -263,7 +333,6 @@

    Parameters

    The view that was tapped

    -
    @@ -276,9 +345,9 @@

    Parameters

  • - - - emptyStateViewAnimationCompleted(forEmptyStateView:didFinish:) + + + emptyStateViewAnimationCompleted(for:didFinish:) Default implementation @@ -289,10 +358,16 @@

    Parameters

    -

    The call back for when the animation of the emptyStateView is done -- paramaters: - - view: The view which finished animating - - didFinish: Whether the animation finished completely, i.e not interrupted

    +

    The call back for when the animation of the emptyStateView is done

    + +
      +
    • paramaters: + +
        +
      • view: The view which finished animating
      • +
      • didFinish: Whether the animation finished completely, i.e not interrupted
      • +
    • +

    Default Implementation

    @@ -304,7 +379,7 @@

    Default Implementation

    Declaration

    Swift

    -
    func emptyStateViewAnimationCompleted(forEmptyStateView view: UIView, didFinish: Bool)
    +
    func emptyStateViewAnimationCompleted(for view: UIView, didFinish: Bool)
    @@ -319,8 +394,8 @@

    Declaration

    diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/index.html b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/index.html index a803cba..4e464ba 100644 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/index.html @@ -92,13 +92,13 @@

    banner

    -

    Requirements

    +

    Requirements

    • iOS 9.0 or greater
    -

    Installation

    -

    CocoaPods

    +

    Installation

    +

    CocoaPods

    1. Install CocoaPods
    2. @@ -116,7 +116,7 @@
    3. Open up the new .xcworkspace that CocoaPods generated
    4. Whenever you want to use the library: import UIEmptyState
    -

    Carthage

    +

    Carthage

    1. Make sure Carthage is install

      @@ -126,12 +126,12 @@

      github "luispadron/UIEmptyState"

    -

    Manually

    +

    Manually

    1. Simply download the UIEmptyState source files and import them into your project.
    -

    Usage

    +

    Usage

    As long as you are using a UIViewController subclass you will get default conformance as well as the reloadEmptyState method.

    // No subclassing required, simply conform to the two protocols
    @@ -178,64 +178,11 @@
     

    If you need more help take a look at the example project here (Pokemon nerds, will like it): Example

    -

    Documentation

    - -

    Quick overview of available UIEmptyStateDataSource properties

    -
    ///////////// METHODS /////////////
    -// If empty view should show, implemented by default
    -func shouldShowEmptyStateView(forTableView:) -> Bool
    -// If empty view should show, implemented by default
    -func shouldShowEmptyStateView(forCollectionView:) -> Bool
    -// The block for the animation code, basic animation by default
    -func emptyStateViewAnimation(forView,animationDuration:completion) -> Bool
    -
    -///////////// COMPUTED PROPERTIES /////////////
    -// The view to show, implemented by default
    -var emptyStateView: UIView
    -// Whether the view adjusts and resizes to fit and be centered when inside a nav controller 
    -var emptyStateViewAdjustsToFitBars: Bool
    -// The text for the title view, implemented by default
    -var emptyStateTitle: NSAttributedString
    -// The image for the image view, nil by default
    -var emptyStateImage: UIImage?
    -// The size of the image view, nil by default
    -var emptyStateImageSize: CGSize?
    -// The text for the button title, nil by default
    -var emptyStateButtonTitle: NSAttributedString?
    -// The image for the button, nil by default
    -var emptyStateButtonImage: UIImage?
    -// The size of the button, nil by default
    -var emptyStateButtonSize: CGSize?
    -// The detail message for the view, nil by default
    -var emptyStateDetailMessage: NSAttributedString?
    -// The spacing inbetween views, 12 by default
    -var emptyStateViewSpacing: CGFloat
    -// The background color for the view, UIColor.clear by default
    -var emptyStateBackgroundColor: UIColor
    -// Whether view can scroll when showing, false by default
    -var emptyStateViewCanScroll: Bool
    -// Whether view can animate, true by default
    -var emptyStateViewCanAnimate: Bool
    -// Whether view animates everytime it appears, true by default
    -var emptyStateViewAnimatesEverytime: Bool
    -// The animation duration for the view animation, 0.5 by default
    -var emptyStateViewAnimationDuration: TimeInterval
    -
    -

    Read the full documentation here

    -

    Example Project

    -

    Clone this repo and run the UIEmptyStateExample project

    -

    Roadmap

    - -
      -
    • [x] Add support for any UIViewController subclass, i.e UICollectionView etc.
    • -
    • [ ] Figure out nicer method for reloading emptystate with out explicitly calling for a reload, maybe method swizzling
    • -
    • [x] Add animation to view appearance
    • -
    • [ ] Add nicer animation to button taps, or view taps
    • -
    • [ ] Add tests
    • -
    • [ ] Clean up and continue to work on UIEmptyStateView, i.e add better constraints and more customization options
    • -
    • [ ] If requested, remove stack view and figure out clean solution to allow for easy view stacking without requiring iOS 9+
    • -
    -

    License (MIT)

    +

    Documentation

    +

    Read the full documentation here

    +

    Example Project

    +

    Clone this repo and run the UIEmptyStateExample project

    +

    License (MIT)

    Copyright (c) 2017 Luis Padron
     
     Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    @@ -252,8 +199,8 @@
           
         
         
       
     
    diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/search.json b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/search.json
    index 0b46138..c25dc12 100644
    --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/search.json
    +++ b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/search.json
    @@ -1 +1 @@
    -{"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate21emptyStateViewDidShowFT4viewCSo6UIView_T_":{"name":"emptyStateViewDidShow(view:)","abstract":"

    The call back for when the emptyStateView is now shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate25emptyStatebuttonWasTappedFT6buttonCSo8UIButton_T_":{"name":"emptyStatebuttonWasTapped(button:)","abstract":"

    The call back for when the button inside the emptyStateView is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate23emptyStateViewWasTappedFT4viewCSo6UIView_T_":{"name":"emptyStateViewWasTapped(view:)","abstract":"

    The call back for when the emptyStateView itself is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate32emptyStateViewAnimationCompletedFT17forEmptyStateViewCSo6UIView9didFinishSb_T_":{"name":"emptyStateViewAnimationCompleted(forEmptyStateView:didFinish:)","abstract":"

    The call back for when the animation of the emptyStateView is done","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource24shouldShowEmptyStateViewFT12forTableViewCSo11UITableView_Sb":{"name":"shouldShowEmptyStateView(forTableView:)","abstract":"

    Determines whether should or should not show the empty view for a specific tableView, by default it will count tableView rows to determine

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource24shouldShowEmptyStateViewFT17forCollectionViewCSo16UICollectionView_Sb":{"name":"shouldShowEmptyStateView(forCollectionView:)","abstract":"

    Determines whether should or should not show the empty view for a specific collectionView, by default it will count collectionView items to determine

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource14emptyStateViewCSo6UIView":{"name":"emptyStateView","abstract":"

    Determines the view to use for the empty state, by default this is a nice stack view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource30emptyStateViewAdjustsToFitBarsSb":{"name":"emptyStateViewAdjustsToFitBars","abstract":"

    Determines whether the emptyStateView should adjust to be shown properly inside by not extending the view","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource15emptyStateTitleCSo18NSAttributedString":{"name":"emptyStateTitle","abstract":"

    Determines the title for the Empty View, by default this just returns an intro message, override for custom title

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource15emptyStateImageGSqCSo7UIImage_":{"name":"emptyStateImage","abstract":"

    Determines the image which will be used inside the Empty State View’s image view, default value is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource19emptyStateImageSizeGSqVSC6CGSize_":{"name":"emptyStateImageSize","abstract":"

    Determines the size of the image view, by default this will return nil which means that the imageview size will just be 100x100

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateButtonTitleGSqCSo18NSAttributedString_":{"name":"emptyStateButtonTitle","abstract":"

    Determines the title for the button of the Empty State View, by default this is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateButtonImageGSqCSo7UIImage_":{"name":"emptyStateButtonImage","abstract":"

    Determines the image for the button, by default this will return nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource20emptyStateButtonSizeGSqVSC6CGSize_":{"name":"emptyStateButtonSize","abstract":"

    Determines the size of the button, by default it will constrain the view to the size of the title plus some padding.","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource23emptyStateDetailMessageGSqCSo18NSAttributedString_":{"name":"emptyStateDetailMessage","abstract":"

    Determines the message which will be displayed in the detail view of the empty state view, by default this will return an intro message

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateViewSpacingV12CoreGraphics7CGFloat":{"name":"emptyStateViewSpacing","abstract":"

    Determines the amount of spacing between the views, by default this is 12

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource25emptyStateBackgroundColorCSo7UIColor":{"name":"emptyStateBackgroundColor","abstract":"

    Determines the background color for the emptyStateView, by default this value is UIColor.clear

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource23emptyStateViewCanScrollSb":{"name":"emptyStateViewCanScroll","abstract":"

    Whether the empty state view allows scrolling or not, by default this is false

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource24emptyStateViewCanAnimateSb":{"name":"emptyStateViewCanAnimate","abstract":"

    Whether the empty state view should animate or not

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource31emptyStateViewAnimatesEverytimeSb":{"name":"emptyStateViewAnimatesEverytime","abstract":"

    Whether the empty state view animates every time it is shown

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource31emptyStateViewAnimationDurationSd":{"name":"emptyStateViewAnimationDuration","abstract":"

    The amount of time the empty state view should animate for

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource23emptyStateViewAnimationFT7forViewCSo6UIView17animationDurationSd10completionGSqFSbT___T_":{"name":"emptyStateViewAnimation(forView:animationDuration:completion:)","abstract":"

    The animation function for the views in the empty state view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html":{"name":"UIEmptyStateDataSource","abstract":"

    The data source for the Empty View

    "},"Protocols/UIEmptyStateDelegate.html":{"name":"UIEmptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    "},"Extensions/UICollectionViewController.html#/s:FE12UIEmptyStateCSo26UICollectionViewController16reloadEmptyStateFT_T_":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the collectionView to self.collectionView

    ","parent_name":"UICollectionViewController"},"Extensions/UITableViewController.html#/s:FE12UIEmptyStateCSo21UITableViewController16reloadEmptyStateFT_T_":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the tableView to self.tableView

    ","parent_name":"UITableViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController20emptyStateDataSourceXwGSqPS_22UIEmptyStateDataSource__":{"name":"emptyStateDataSource","abstract":"

    The data source for the Empty View

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController18emptyStateDelegateXwGSqPS_20UIEmptyStateDelegate__":{"name":"emptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController14emptyStateViewGSqCSo6UIView_":{"name":"emptyStateView","abstract":"

    The empty state view associated to the ViewController

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:FE12UIEmptyStateCSo16UIViewController16reloadEmptyStateFT12forTableViewCSo11UITableView_T_":{"name":"reloadEmptyState(forTableView:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:FE12UIEmptyStateCSo16UIViewController16reloadEmptyStateFT17forCollectionViewCSo16UICollectionView_T_":{"name":"reloadEmptyState(forCollectionView:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html":{"name":"UIViewController","abstract":"Undocumented"},"Extensions/UITableViewController.html":{"name":"UITableViewController","abstract":"Undocumented"},"Extensions/UICollectionViewController.html":{"name":"UICollectionViewController","abstract":"Undocumented"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView8delegateXwGSqPS_20UIEmptyStateDelegate__":{"name":"delegate","abstract":"

    The delegate for the view, gets called when user taps button or self

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView5titleCSo18NSAttributedString":{"name":"title","abstract":"

    The title for the titleView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView5imageGSqCSo7UIImage_":{"name":"image","abstract":"

    The image for the imageView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9imageSizeGSqVSC6CGSize_":{"name":"imageSize","abstract":"

    The size for image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11buttonTitleGSqCSo18NSAttributedString_":{"name":"buttonTitle","abstract":"

    The button title for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11buttonImageGSqCSo7UIImage_":{"name":"buttonImage","abstract":"

    The image for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView10buttonSizeGSqVSC6CGSize_":{"name":"buttonSize","abstract":"

    The size of the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView13detailMessageGSqCSo18NSAttributedString_":{"name":"detailMessage","abstract":"

    The detail message for the detail label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView7spacingGSqV12CoreGraphics7CGFloat_":{"name":"spacing","abstract":"

    The spacing in between each of the views

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateViewcFT5frameVSC6CGRect5titleCSo18NSAttributedString_S0_":{"name":"init(frame:title:)","abstract":"

    Initializer for UIEmptyStateView, requires a frame and an NSAttributedString which will be used as it’s title

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateViewcFT5coderCSo7NSCoder_S0_":{"name":"init(coder:)","abstract":"

    Unused initializer currently

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateView17updateConstraintsFT_T_":{"name":"updateConstraints()","abstract":"

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11contentViewCSo11UIStackView":{"name":"contentView","abstract":"

    The content view which encloses the rest of the subviews, of type UIStackView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9titleViewCSo7UILabel":{"name":"titleView","abstract":"

    The title view which displays the value of title, place below the image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9imageViewCSo11UIImageView":{"name":"imageView","abstract":"

    The image view which displays the value of image, placed above the title label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView6buttonCSo8UIButton":{"name":"button","abstract":"

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView10detailViewCSo7UILabel":{"name":"detailView","abstract":"

    The optional detail view, placed under title view, only displayed if detailMessage has a value

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html":{"name":"UIEmptyStateView","abstract":"

    A UIView which has a stack view and inside the stackview are 1-4 other views"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally."},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally."},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally."}} \ No newline at end of file +{"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB12ViewWillShowySo6UIViewC4view_tF":{"name":"emptyStateViewWillShow(view:)","abstract":"

    The call back for when the emptyStateView will be shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB11ViewDidShowySo6UIViewC4view_tF":{"name":"emptyStateViewDidShow(view:)","abstract":"

    The call back for when the emptyStateView is now shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB12ViewWillHideySo6UIViewC4view_tF":{"name":"emptyStateViewWillHide(view:)","abstract":"

    The call back for when the emptyStateView will be hidden

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP25emptyStatebuttonWasTappedySo8UIButtonC6button_tF":{"name":"emptyStatebuttonWasTapped(button:)","abstract":"

    The call back for when the button inside the emptyStateView is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB13ViewWasTappedySo6UIViewC4view_tF":{"name":"emptyStateViewWasTapped(view:)","abstract":"

    The call back for when the emptyStateView itself is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB22ViewAnimationCompletedySo6UIViewC3for_Sb9didFinishtF":{"name":"emptyStateViewAnimationCompleted(for:didFinish:)","abstract":"

    The call back for when the animation of the emptyStateView is done

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP015shouldShowEmptyB4ViewSbSo07UITableH0C3for_tF":{"name":"shouldShowEmptyStateView(for:)","abstract":"

    Determines whether should or should not show the empty view for a specific tableView,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP015shouldShowEmptyB4ViewSbSo012UICollectionH0C3for_tF":{"name":"shouldShowEmptyStateView(for:)","abstract":"

    Determines whether should or should not show the empty view for a specific collectionView,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB4ViewSo6UIViewCv":{"name":"emptyStateView","abstract":"

    Determines the view to use for the empty state, by default this is a nice stack view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB20ViewAdjustsToFitBarsSbv":{"name":"emptyStateViewAdjustsToFitBars","abstract":"

    Determines whether the emptyStateView should adjust to be shown properly inside by","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB5TitleSo18NSAttributedStringCv":{"name":"emptyStateTitle","abstract":"

    Determines the title for the Empty View, by default this just returns an intro message,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB5ImageSo7UIImageCSgv":{"name":"emptyStateImage","abstract":"

    Determines the image which will be used inside the Empty State View’s image view, default value is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB9ImageSizeSC6CGSizeVSgv":{"name":"emptyStateImageSize","abstract":"

    Determines the size of the image view, by default this will return nil which means","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ButtonTitleSo18NSAttributedStringCSgv":{"name":"emptyStateButtonTitle","abstract":"

    Determines the title for the button of the Empty State View, by default this is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ButtonImageSo7UIImageCSgv":{"name":"emptyStateButtonImage","abstract":"

    Determines the image for the button, by default this will return nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB10ButtonSizeSC6CGSizeVSgv":{"name":"emptyStateButtonSize","abstract":"

    Determines the size of the button, by default it will constrain the view to the size","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13DetailMessageSo18NSAttributedStringCSgv":{"name":"emptyStateDetailMessage","abstract":"

    Determines the message which will be displayed in the detail view of the empty state view,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ViewSpacing12CoreGraphics7CGFloatVv":{"name":"emptyStateViewSpacing","abstract":"

    Determines the amount of spacing between the views, by default this is 12

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB15BackgroundColorSo7UIColorCv":{"name":"emptyStateBackgroundColor","abstract":"

    Determines the background color for the emptyStateView, by default this value is UIColor.clear

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13ViewCanScrollSbv":{"name":"emptyStateViewCanScroll","abstract":"

    Whether the empty state view allows scrolling or not, by default this is false

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB14ViewCanAnimateSbv":{"name":"emptyStateViewCanAnimate","abstract":"

    Whether the empty state view should animate or not

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB21ViewAnimatesEverytimeSbv":{"name":"emptyStateViewAnimatesEverytime","abstract":"

    Whether the empty state view animates every time it is shown

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB21ViewAnimationDurationSdv":{"name":"emptyStateViewAnimationDuration","abstract":"

    The amount of time the empty state view should animate for

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13ViewAnimationySo6UIViewC3for_Sd17animationDurationySbcSg10completiontF":{"name":"emptyStateViewAnimation(for:animationDuration:completion:)","abstract":"

    The animation function for the views in the empty state view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html":{"name":"UIEmptyStateDataSource","abstract":"

    The data source for the Empty View

    "},"Protocols/UIEmptyStateDelegate.html":{"name":"UIEmptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    "},"Extensions/UICollectionViewController.html#/s:So26UICollectionViewControllerC12UIEmptyStateE011reloadEmptyE0yyF":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the collectionView to self.collectionView

    ","parent_name":"UICollectionViewController"},"Extensions/UITableViewController.html#/s:So21UITableViewControllerC12UIEmptyStateE011reloadEmptyE0yyF":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the tableView to self.tableView

    ","parent_name":"UITableViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD10DataSourceAC0cdfG0_pSgXwv":{"name":"emptyStateDataSource","abstract":"

    The data source for the Empty View

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD8DelegateAC0cdF0_pSgXwv":{"name":"emptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD4ViewSo0A0CSgv":{"name":"emptyStateView","abstract":"

    The empty state view associated to the ViewController

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE011reloadEmptyD0ySo11UITableViewC3for_tF":{"name":"reloadEmptyState(for:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE011reloadEmptyD0ySo16UICollectionViewC3for_tF":{"name":"reloadEmptyState(for:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html":{"name":"UIViewController","abstract":"

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    "},"Extensions/UITableViewController.html":{"name":"UITableViewController","abstract":"

    A convenience extension for UITableViewController which defaults the tableView

    "},"Extensions/UICollectionViewController.html":{"name":"UICollectionViewController","abstract":"

    A convenience extension for UICollectionViewController which defaults the collectionView

    "},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC8delegateAA0aB8Delegate_pSgXwv":{"name":"delegate","abstract":"

    The delegate for the view, gets called when user taps button or self

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC5titleSo18NSAttributedStringCv":{"name":"title","abstract":"

    The title for the titleView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC5imageSo7UIImageCSgv":{"name":"image","abstract":"

    The image for the imageView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC9imageSizeSC6CGSizeVSgv":{"name":"imageSize","abstract":"

    The size for image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC11buttonTitleSo18NSAttributedStringCSgv":{"name":"buttonTitle","abstract":"

    The button title for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC11buttonImageSo7UIImageCSgv":{"name":"buttonImage","abstract":"

    The image for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC10buttonSizeSC6CGSizeVSgv":{"name":"buttonSize","abstract":"

    The size of the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC13detailMessageSo18NSAttributedStringCSgv":{"name":"detailMessage","abstract":"

    The detail message for the detail label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC7spacing12CoreGraphics7CGFloatVSgv":{"name":"spacing","abstract":"

    The spacing in between each of the views

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewCACSC6CGRectV5frame_So18NSAttributedStringC5titletcfc":{"name":"init(frame:title:)","abstract":"

    Initializer for UIEmptyStateView,","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/c:@M@UIEmptyState@objc(cs)UIEmptyStateView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

    Unused initializer currently

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/c:@M@UIEmptyState@objc(cs)UIEmptyStateView(im)updateConstraints":{"name":"updateConstraints()","abstract":"

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC07contentC0So07UIStackC0Cv":{"name":"contentView","abstract":"

    The content view which encloses the rest of the subviews, of type UIStackView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC05titleC0So7UILabelCv":{"name":"titleView","abstract":"

    The title view which displays the value of title, place below the image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC05imageC0So07UIImageC0Cv":{"name":"imageView","abstract":"

    The image view which displays the value of image, placed above the title label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC6buttonSo8UIButtonCv":{"name":"button","abstract":"

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC06detailC0So7UILabelCv":{"name":"detailView","abstract":"

    The optional detail view, placed under title view, only displayed if detailMessage has a value

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html":{"name":"UIEmptyStateView","abstract":"

    A UIView which has a stack view and inside the stackview are 1-4 other views"},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/undocumented.json b/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/undocumented.json deleted file mode 100644 index 6fe9f48..0000000 --- a/docs/docsets/UIEmptyState.docset/Contents/Resources/Documents/undocumented.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "warnings": [ - - ], - "source_directory": "/Users/Luis/Desktop/UIEmptyState" -} \ No newline at end of file diff --git a/docs/docsets/UIEmptyState.docset/Contents/Resources/docSet.dsidx b/docs/docsets/UIEmptyState.docset/Contents/Resources/docSet.dsidx index c676ea77c6a5f17788ce9b45eba18b6c97fde606..9a87de650119a67854abb751e2b4da744daa5258 100644 GIT binary patch literal 28672 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 diff --git a/docs/docsets/UIEmptyState.tgz b/docs/docsets/UIEmptyState.tgz index ee5e0fe01150a527f870fc6f86c2fb77debacf1a..b0514bd48f55b3956a08c41394548819b3b992fe 100644 GIT binary patch delta 77394 zcmYg%bx_~H7B24Y?!_I7I}|BUDDLj=4#A~(ad&rjr?|VjLvgp?>%H&3nfFg-lg-() zlT9XPKl$8+n%{&1NF(9EO5rUv!5}ZXwC$;+l39mH%IG2pWEwge_$#s&>C@(F8U9of zvTQ2VB@l6q+Bufk&zn@3Cl@w)R+Lj!uvc(2j1;%?fGyi|T}Z7XKEK)YUI)1&53s=4 z;B7x$uL}3V2o0b<26a6qAQQ57=74+ej`O0&r^Rcg{h{Xq>^H~Ke>TwXyX_4|I7edA zVj~ko6m#NUV934a7K2d*Yr==ADt5T&?YUbu<^v>MJ3}Qum z`ehqLm`BqDag7SgcdED|maa_pih`wTHK?@acW|I?>YNg~^PatxZp*hVP4xbgbKuU* zluI8J`HTeUfLuE+6Zx3N@ANH^dWR?5+9n=q)OHPRKFsOw?rK2{=A6R;Ii%08+j?HJ zcJOb-=bAB9;fqS&u;jGek;d(4_vR-%{;>Qh`V+C9P!X%f1-yC4lO2!=_<0?FzWyS^ z89zMyQDT}rUXfAJzyEelm;rJBletC^3%c&~ElUe%^Ko!cRH{>xabMGzWe|4DiaC7^ zd&+B|;H1UxChuo$e8S_2#0+#;uXQ2q>0K7Qb8tMo%&N9+oN$FaSt!>o_U?$9mO(Dv ze_`(Jfg4D2TfFKKW^`r39NiFS@6k2;^YJ05vTkOj@XjS;*>iS6SPW_{dUYMP-Bw*! zJ7)!&axiylJ5?90tAE?#*u(}$pMKA}25kj>lgUCp7$_+bE#5oBLf39>P5{yqM0L2TY%yALxUelacL znhpE0yZv2TVSxt!g|pM+-dZjk2--UG(&w{g}n?erj6i^J4ABbx%Xpw(GPtyR4n>;ZJwdt%hQ6wupIml zR$<+PZo#xWD;`imhh@`bI~EA61OWWy+llYiSML`bCmk0B49OMaz8~m>2F@>2A78tB z0!@1zGOVALvf*NLDup%tZnbySt$UK7i6mEa-X^JuBYppXkE);YO`NSsf&3G^j|+h3 zo$dD<(9^ztHz<}G`1IS`=>mOrMZ1H>-LJauxUb$vpL@JMfUfSFM`2Iz%PIg=mGgeG zv)1GH_p|Ay?qh!M<~b-QHda+wXv=vrxqu)Zv7Ahh^`qFhvg=x&a2l-hcK!joWRcyK z)X&#A4fZ6<=_W#!Xgw#XYb}(+nWJOvyKCr^Q!07;VsKJF6fZ4096`HWZwjzi9#9r&ey7VnJ4Y zNEJJU$+i_$dq{|`!&PN{HH+1{(%W7)OZLZvl2JG)DWflPoPdI?(^Uk2ETl$ro_4k@VmA`Op=5?qUnM60o0*OM4gL z$d#!b49IJ5%PZuFw+xco+{O9Phr;(pu(@Ms`wct)E>H&VC-{ zxdwLkiR}bCx={(|Uq3heD(%({GIO3R&$(ef#_;hcm% z<9eM_gU#n}wU3ce@r`@?yYBj)S1xFVd!h{rICy$o-{^_Rx~+_bNk}t34?HNrM|nlr za+(z}uQ1UF(BY2TB<_Ni%s|g2nES@(bpX>hs;Ij42OsQEjB%Y`7 zr=j6Og%|)k>?|{v41;k_8M$X)OimDzCNkg8MEY~}@W-Cr!2MzW? z@cXAjWxjOsVyU|v$OD8G5a94Wyl?SIGvf?>0ooS+mN{Q;t{<+UDP zDtO5OJHPk~u$pZ9O`ZaKQY=Hk)>lzoAmMIMP7mnH_nuV8+u?846Da3==mB&+40;~0 z7kbtgdS?;Bd$YI+dW^O2{!l1$-;o-&pN1w0Z23&+m5N&jwS5Tx`j=ums!M9Z2FQg{ zeDTD=7{H%}HCl+1fn3ZO?e9)1Y0x+gY52SY2!c(R}_{QSf*J zK3=O7;+fDE>4bLCezHXssT6`S1G+4JuRB^8)~8v8jkwNl!Y!cx9)O)kVcJ~K?D@Y} z!s%n4?Nkd+<~bzlW3gnJX1KWKTc_}=6OM6%0B{Yx)Nge#2LviBZ&P6>}qO61-+w{ zPu($^AhU)Kra{|N*$t@v`ngIoylBnWb?Zm1-1diWpe=V8>eoY8(%6{agT*@xNd}%J z`%~k9s(JKoa7AZiq?*~t0qMqQB}kjd&Hl zi?ct_yp_D)6BJ^40s-jgik=eU$MM{PL({Dx^R-JBu4)#bTyLDqW&WWzVCn8SHS#ca zJDvEg^kx@$+8u%g-3Ltr?=_vErz?Q}CMU*TAN1B@wk_oM2Fi@vdUM}?F~7pv`smsA zb^FjK0MXcgXxoEM7HB~KN`%g>oTKNG93tEr%@JTq!e9bOsD^M9eIW>s)Wn2scbt@> zcHx4Iuij&KJ96J|ASJEQKX*eaMZD;{(_O6hWpVhE#hR}7b{M38Yue+|sN0q6tyC}C zXC>=fpz?mB@8i?yG+EEolgl59Pp@ar$Lt20xXoZN31+uAQN4dn_<3Hv#$^rlRXipu zV)qc60yYN#>-jLtzJJpVz0Z~1J$LO|!2dVT;qm2851(F3(bhxcC~&YcRU0y0d1VM8 zM8O>fhD9uf_rvFDMel|wvCnxy4BU5aH%I@P6By4!@OM$Og@qf^Sm5F2Mzm)jodbJn z;vCyqu|^HWvLKkuoU8xfhLp_YuWV4|*jojjVn1;1;PA3W1kn>caklDU{w1wi+)GYL zzKU%Sel$m~2{U7P-{-#Mz~{cJHDe#c*w2#o7F)2Xt6u6xojdy~5T$()9byx3am^R6 zQ5?KbMRp(B@DV0mCw&`vz0Ltj51v48%|mdJZ4YnWoG*j^o^x-19^1EUW&6JE zw|uf#Wd5f}Y_rM{{y2LDR!WSOBv*EFd_8?_oNV|wY_4PNbxGe|R#@ixVeIut89pzz zP7H${UT)Z;2nDWc`+717Ne5c{?hpxWCSqa@(MH;a{qZFG6>8~Y%MhfgsDj-*pS`nZClOH}Dc z#TwRL{~1IOetCagxh*+M8$tj+Rv+rLbAi#~f0c-=`Gi}dLr<(7&7`@)7asm$C4m=`-omvye^M^@WZ~Am5ej2}pY$ zN+f7J+{zqveO~;Zgsb_yT71{s17klwr_)}nK0lujU!poc13C!|qh^*$SQD^ zerZ@{3#=CDp7i#nF>Nu=YvIeot!OqWXEe4q^UvY&7-Qq+4uTOO^Su7bjgo8`?;G1% zBHDLwGzxqyL@;5)t^=~Zorvg~Jk&OwBJeFKNxaG;ZNqLy;9|L!e38(P{1bx+lje=b zMFu&XL52<$Nz^r#ZA}g*0K)K>_55iMXQ5G}2vn)~k>f>0r-fqqYhF5xC!x62ousuJ z6T(~EWQ{`5YWdUtGW)3*A&T}6)5!0Jw6>nSdHPC(A1PK+bY?bh*{AWVRdg-H;CF(Y z2CpJ{BssYQS|WPzpQtpXIw;F|K12NU?(G|^L#Kh;4Be_i{=e)_Q!!SpF~l53#=d(C z>p-+bPjXBHB@|-Fp=85C9ib8L7RpzxzPb?aWRR=+e&4||w~*)e6_LMDisAwm%mT}s zcG`CoVybVl^Wn^rmPGrAc{}E%71d|X&Xhf)_rVT+A05^dnFt?d8gGVSD%7~BIs$Qr z&1qGkt~(Wrxts%r#p`=xk$4SDH+$!s^}wqY)=ih;D7MOc#h;TPb<{x-#laRM7{zb; z509OLsrWO7i{0s`Xhw^iaP!2>H>N|wzP0-ZO_hT_W1DJ7MG*w%zxD=2qg(L=Tb05| zwi<#prpsBeKBoy^8P5s973exJSk3*t5u{lX+xJTn_l%z3zRx}?_Nh6VVPNawcmhc1 zYQMqKu(QCEu8Ug6!Az+9bhqcU&A3fPz4d8|urgKc#krRiYKSeJGZwt*YgWX`6cNM|s5?6)QwF>} zs}5gB%P}ENwxMT3>wFsI`5fiN~&Cu=eJuDtQSc&ipOn7NfuAvx=QpAQ`-3&#) z?_wFNxOB+r#@T%MgQL0Mn|2IuKTnSw3!m7KI!4V-gUrksUS6(3d?fXNsbSU&yb>Nz z7q4(m%|EK86t5+G3GCbG`=D!SR{C>9Khiv zDD1h)3551$0D8%%yZBZ6`G3#&1Ao0~lbN^O$Em||_>+7?ab57r9~7*aUuxis?6?-p z&S&m=l~g#tzi{`aKN+C+@54BF^Sf6>_4nOwWa5mc6qVa!Q>vTx07u-)jVJO`{L4wm zulzCX?r!96uIX6Q{fEO_=*>4ggIKwZl7Z#pQE}zcMVr&jFDnMsa0zB)K{SC$?1PZ z749vs>bukh8fPq+X9J}OI}U#=c*N_pvB)i6oO%TK=!y~MuFpw}0Kx&$l-M0@oB#q< zEW~I5AaY9^N9uqjO>{d&fxaVQ0;?5ML6TTnJpUk<^1v>AO4p(~&ArLKsFo}``a_fai}i(%kow8|Mva%87@i!L6VpNyO0`Q@@21!JwZr@zofR z?AO-(-sh6&7Sto7VI2@24<�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 delta 77932 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 X{?woPQ-A8ufbanner

    -

    Requirements

    +

    Requirements

    • iOS 9.0 or greater
    -

    Installation

    -

    CocoaPods

    +

    Installation

    +

    CocoaPods

    1. Install CocoaPods
    2. @@ -116,7 +116,7 @@
    3. Open up the new .xcworkspace that CocoaPods generated
    4. Whenever you want to use the library: import UIEmptyState
    -

    Carthage

    +

    Carthage

    1. Make sure Carthage is install

      @@ -126,12 +126,12 @@

      github "luispadron/UIEmptyState"

    -

    Manually

    +

    Manually

    1. Simply download the UIEmptyState source files and import them into your project.
    -

    Usage

    +

    Usage

    As long as you are using a UIViewController subclass you will get default conformance as well as the reloadEmptyState method.

    // No subclassing required, simply conform to the two protocols
    @@ -178,64 +178,11 @@
     

    If you need more help take a look at the example project here (Pokemon nerds, will like it): Example

    -

    Documentation

    - -

    Quick overview of available UIEmptyStateDataSource properties

    -
    ///////////// METHODS /////////////
    -// If empty view should show, implemented by default
    -func shouldShowEmptyStateView(forTableView:) -> Bool
    -// If empty view should show, implemented by default
    -func shouldShowEmptyStateView(forCollectionView:) -> Bool
    -// The block for the animation code, basic animation by default
    -func emptyStateViewAnimation(forView,animationDuration:completion) -> Bool
    -
    -///////////// COMPUTED PROPERTIES /////////////
    -// The view to show, implemented by default
    -var emptyStateView: UIView
    -// Whether the view adjusts and resizes to fit and be centered when inside a nav controller 
    -var emptyStateViewAdjustsToFitBars: Bool
    -// The text for the title view, implemented by default
    -var emptyStateTitle: NSAttributedString
    -// The image for the image view, nil by default
    -var emptyStateImage: UIImage?
    -// The size of the image view, nil by default
    -var emptyStateImageSize: CGSize?
    -// The text for the button title, nil by default
    -var emptyStateButtonTitle: NSAttributedString?
    -// The image for the button, nil by default
    -var emptyStateButtonImage: UIImage?
    -// The size of the button, nil by default
    -var emptyStateButtonSize: CGSize?
    -// The detail message for the view, nil by default
    -var emptyStateDetailMessage: NSAttributedString?
    -// The spacing inbetween views, 12 by default
    -var emptyStateViewSpacing: CGFloat
    -// The background color for the view, UIColor.clear by default
    -var emptyStateBackgroundColor: UIColor
    -// Whether view can scroll when showing, false by default
    -var emptyStateViewCanScroll: Bool
    -// Whether view can animate, true by default
    -var emptyStateViewCanAnimate: Bool
    -// Whether view animates everytime it appears, true by default
    -var emptyStateViewAnimatesEverytime: Bool
    -// The animation duration for the view animation, 0.5 by default
    -var emptyStateViewAnimationDuration: TimeInterval
    -
    -

    Read the full documentation here

    -

    Example Project

    -

    Clone this repo and run the UIEmptyStateExample project

    -

    Roadmap

    - -
      -
    • [x] Add support for any UIViewController subclass, i.e UICollectionView etc.
    • -
    • [ ] Figure out nicer method for reloading emptystate with out explicitly calling for a reload, maybe method swizzling
    • -
    • [x] Add animation to view appearance
    • -
    • [ ] Add nicer animation to button taps, or view taps
    • -
    • [ ] Add tests
    • -
    • [ ] Clean up and continue to work on UIEmptyStateView, i.e add better constraints and more customization options
    • -
    • [ ] If requested, remove stack view and figure out clean solution to allow for easy view stacking without requiring iOS 9+
    • -
    -

    License (MIT)

    +

    Documentation

    +

    Read the full documentation here

    +

    Example Project

    +

    Clone this repo and run the UIEmptyStateExample project

    +

    License (MIT)

    Copyright (c) 2017 Luis Padron
     
     Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
    @@ -252,8 +199,8 @@
           
         
         
       
     
    diff --git a/docs/search.json b/docs/search.json
    index 0b46138..c25dc12 100644
    --- a/docs/search.json
    +++ b/docs/search.json
    @@ -1 +1 @@
    -{"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate21emptyStateViewDidShowFT4viewCSo6UIView_T_":{"name":"emptyStateViewDidShow(view:)","abstract":"

    The call back for when the emptyStateView is now shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate25emptyStatebuttonWasTappedFT6buttonCSo8UIButton_T_":{"name":"emptyStatebuttonWasTapped(button:)","abstract":"

    The call back for when the button inside the emptyStateView is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate23emptyStateViewWasTappedFT4viewCSo6UIView_T_":{"name":"emptyStateViewWasTapped(view:)","abstract":"

    The call back for when the emptyStateView itself is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:FP12UIEmptyState20UIEmptyStateDelegate32emptyStateViewAnimationCompletedFT17forEmptyStateViewCSo6UIView9didFinishSb_T_":{"name":"emptyStateViewAnimationCompleted(forEmptyStateView:didFinish:)","abstract":"

    The call back for when the animation of the emptyStateView is done","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource24shouldShowEmptyStateViewFT12forTableViewCSo11UITableView_Sb":{"name":"shouldShowEmptyStateView(forTableView:)","abstract":"

    Determines whether should or should not show the empty view for a specific tableView, by default it will count tableView rows to determine

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource24shouldShowEmptyStateViewFT17forCollectionViewCSo16UICollectionView_Sb":{"name":"shouldShowEmptyStateView(forCollectionView:)","abstract":"

    Determines whether should or should not show the empty view for a specific collectionView, by default it will count collectionView items to determine

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource14emptyStateViewCSo6UIView":{"name":"emptyStateView","abstract":"

    Determines the view to use for the empty state, by default this is a nice stack view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource30emptyStateViewAdjustsToFitBarsSb":{"name":"emptyStateViewAdjustsToFitBars","abstract":"

    Determines whether the emptyStateView should adjust to be shown properly inside by not extending the view","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource15emptyStateTitleCSo18NSAttributedString":{"name":"emptyStateTitle","abstract":"

    Determines the title for the Empty View, by default this just returns an intro message, override for custom title

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource15emptyStateImageGSqCSo7UIImage_":{"name":"emptyStateImage","abstract":"

    Determines the image which will be used inside the Empty State View’s image view, default value is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource19emptyStateImageSizeGSqVSC6CGSize_":{"name":"emptyStateImageSize","abstract":"

    Determines the size of the image view, by default this will return nil which means that the imageview size will just be 100x100

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateButtonTitleGSqCSo18NSAttributedString_":{"name":"emptyStateButtonTitle","abstract":"

    Determines the title for the button of the Empty State View, by default this is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateButtonImageGSqCSo7UIImage_":{"name":"emptyStateButtonImage","abstract":"

    Determines the image for the button, by default this will return nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource20emptyStateButtonSizeGSqVSC6CGSize_":{"name":"emptyStateButtonSize","abstract":"

    Determines the size of the button, by default it will constrain the view to the size of the title plus some padding.","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource23emptyStateDetailMessageGSqCSo18NSAttributedString_":{"name":"emptyStateDetailMessage","abstract":"

    Determines the message which will be displayed in the detail view of the empty state view, by default this will return an intro message

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource21emptyStateViewSpacingV12CoreGraphics7CGFloat":{"name":"emptyStateViewSpacing","abstract":"

    Determines the amount of spacing between the views, by default this is 12

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource25emptyStateBackgroundColorCSo7UIColor":{"name":"emptyStateBackgroundColor","abstract":"

    Determines the background color for the emptyStateView, by default this value is UIColor.clear

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource23emptyStateViewCanScrollSb":{"name":"emptyStateViewCanScroll","abstract":"

    Whether the empty state view allows scrolling or not, by default this is false

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource24emptyStateViewCanAnimateSb":{"name":"emptyStateViewCanAnimate","abstract":"

    Whether the empty state view should animate or not

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource31emptyStateViewAnimatesEverytimeSb":{"name":"emptyStateViewAnimatesEverytime","abstract":"

    Whether the empty state view animates every time it is shown

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:vP12UIEmptyState22UIEmptyStateDataSource31emptyStateViewAnimationDurationSd":{"name":"emptyStateViewAnimationDuration","abstract":"

    The amount of time the empty state view should animate for

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:FP12UIEmptyState22UIEmptyStateDataSource23emptyStateViewAnimationFT7forViewCSo6UIView17animationDurationSd10completionGSqFSbT___T_":{"name":"emptyStateViewAnimation(forView:animationDuration:completion:)","abstract":"

    The animation function for the views in the empty state view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html":{"name":"UIEmptyStateDataSource","abstract":"

    The data source for the Empty View

    "},"Protocols/UIEmptyStateDelegate.html":{"name":"UIEmptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    "},"Extensions/UICollectionViewController.html#/s:FE12UIEmptyStateCSo26UICollectionViewController16reloadEmptyStateFT_T_":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the collectionView to self.collectionView

    ","parent_name":"UICollectionViewController"},"Extensions/UITableViewController.html#/s:FE12UIEmptyStateCSo21UITableViewController16reloadEmptyStateFT_T_":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the tableView to self.tableView

    ","parent_name":"UITableViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController20emptyStateDataSourceXwGSqPS_22UIEmptyStateDataSource__":{"name":"emptyStateDataSource","abstract":"

    The data source for the Empty View

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController18emptyStateDelegateXwGSqPS_20UIEmptyStateDelegate__":{"name":"emptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:vE12UIEmptyStateCSo16UIViewController14emptyStateViewGSqCSo6UIView_":{"name":"emptyStateView","abstract":"

    The empty state view associated to the ViewController

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:FE12UIEmptyStateCSo16UIViewController16reloadEmptyStateFT12forTableViewCSo11UITableView_T_":{"name":"reloadEmptyState(forTableView:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:FE12UIEmptyStateCSo16UIViewController16reloadEmptyStateFT17forCollectionViewCSo16UICollectionView_T_":{"name":"reloadEmptyState(forCollectionView:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html":{"name":"UIViewController","abstract":"Undocumented"},"Extensions/UITableViewController.html":{"name":"UITableViewController","abstract":"Undocumented"},"Extensions/UICollectionViewController.html":{"name":"UICollectionViewController","abstract":"Undocumented"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView8delegateXwGSqPS_20UIEmptyStateDelegate__":{"name":"delegate","abstract":"

    The delegate for the view, gets called when user taps button or self

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView5titleCSo18NSAttributedString":{"name":"title","abstract":"

    The title for the titleView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView5imageGSqCSo7UIImage_":{"name":"image","abstract":"

    The image for the imageView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9imageSizeGSqVSC6CGSize_":{"name":"imageSize","abstract":"

    The size for image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11buttonTitleGSqCSo18NSAttributedString_":{"name":"buttonTitle","abstract":"

    The button title for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11buttonImageGSqCSo7UIImage_":{"name":"buttonImage","abstract":"

    The image for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView10buttonSizeGSqVSC6CGSize_":{"name":"buttonSize","abstract":"

    The size of the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView13detailMessageGSqCSo18NSAttributedString_":{"name":"detailMessage","abstract":"

    The detail message for the detail label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView7spacingGSqV12CoreGraphics7CGFloat_":{"name":"spacing","abstract":"

    The spacing in between each of the views

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateViewcFT5frameVSC6CGRect5titleCSo18NSAttributedString_S0_":{"name":"init(frame:title:)","abstract":"

    Initializer for UIEmptyStateView, requires a frame and an NSAttributedString which will be used as it’s title

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateViewcFT5coderCSo7NSCoder_S0_":{"name":"init(coder:)","abstract":"

    Unused initializer currently

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:FC12UIEmptyState16UIEmptyStateView17updateConstraintsFT_T_":{"name":"updateConstraints()","abstract":"

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView11contentViewCSo11UIStackView":{"name":"contentView","abstract":"

    The content view which encloses the rest of the subviews, of type UIStackView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9titleViewCSo7UILabel":{"name":"titleView","abstract":"

    The title view which displays the value of title, place below the image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView9imageViewCSo11UIImageView":{"name":"imageView","abstract":"

    The image view which displays the value of image, placed above the title label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView6buttonCSo8UIButton":{"name":"button","abstract":"

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:vC12UIEmptyState16UIEmptyStateView10detailViewCSo7UILabel":{"name":"detailView","abstract":"

    The optional detail view, placed under title view, only displayed if detailMessage has a value

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html":{"name":"UIEmptyStateView","abstract":"

    A UIView which has a stack view and inside the stackview are 1-4 other views"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally."},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally."},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally."}} \ No newline at end of file +{"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB12ViewWillShowySo6UIViewC4view_tF":{"name":"emptyStateViewWillShow(view:)","abstract":"

    The call back for when the emptyStateView will be shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB11ViewDidShowySo6UIViewC4view_tF":{"name":"emptyStateViewDidShow(view:)","abstract":"

    The call back for when the emptyStateView is now shown on screen

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB12ViewWillHideySo6UIViewC4view_tF":{"name":"emptyStateViewWillHide(view:)","abstract":"

    The call back for when the emptyStateView will be hidden

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP25emptyStatebuttonWasTappedySo8UIButtonC6button_tF":{"name":"emptyStatebuttonWasTapped(button:)","abstract":"

    The call back for when the button inside the emptyStateView is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB13ViewWasTappedySo6UIViewC4view_tF":{"name":"emptyStateViewWasTapped(view:)","abstract":"

    The call back for when the emptyStateView itself is tapped

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDelegate.html#/s:12UIEmptyState0aB8DelegateP05emptyB22ViewAnimationCompletedySo6UIViewC3for_Sb9didFinishtF":{"name":"emptyStateViewAnimationCompleted(for:didFinish:)","abstract":"

    The call back for when the animation of the emptyStateView is done

    ","parent_name":"UIEmptyStateDelegate"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP015shouldShowEmptyB4ViewSbSo07UITableH0C3for_tF":{"name":"shouldShowEmptyStateView(for:)","abstract":"

    Determines whether should or should not show the empty view for a specific tableView,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP015shouldShowEmptyB4ViewSbSo012UICollectionH0C3for_tF":{"name":"shouldShowEmptyStateView(for:)","abstract":"

    Determines whether should or should not show the empty view for a specific collectionView,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB4ViewSo6UIViewCv":{"name":"emptyStateView","abstract":"

    Determines the view to use for the empty state, by default this is a nice stack view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB20ViewAdjustsToFitBarsSbv":{"name":"emptyStateViewAdjustsToFitBars","abstract":"

    Determines whether the emptyStateView should adjust to be shown properly inside by","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB5TitleSo18NSAttributedStringCv":{"name":"emptyStateTitle","abstract":"

    Determines the title for the Empty View, by default this just returns an intro message,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB5ImageSo7UIImageCSgv":{"name":"emptyStateImage","abstract":"

    Determines the image which will be used inside the Empty State View’s image view, default value is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB9ImageSizeSC6CGSizeVSgv":{"name":"emptyStateImageSize","abstract":"

    Determines the size of the image view, by default this will return nil which means","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ButtonTitleSo18NSAttributedStringCSgv":{"name":"emptyStateButtonTitle","abstract":"

    Determines the title for the button of the Empty State View, by default this is nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ButtonImageSo7UIImageCSgv":{"name":"emptyStateButtonImage","abstract":"

    Determines the image for the button, by default this will return nil

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB10ButtonSizeSC6CGSizeVSgv":{"name":"emptyStateButtonSize","abstract":"

    Determines the size of the button, by default it will constrain the view to the size","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13DetailMessageSo18NSAttributedStringCSgv":{"name":"emptyStateDetailMessage","abstract":"

    Determines the message which will be displayed in the detail view of the empty state view,","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB11ViewSpacing12CoreGraphics7CGFloatVv":{"name":"emptyStateViewSpacing","abstract":"

    Determines the amount of spacing between the views, by default this is 12

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB15BackgroundColorSo7UIColorCv":{"name":"emptyStateBackgroundColor","abstract":"

    Determines the background color for the emptyStateView, by default this value is UIColor.clear

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13ViewCanScrollSbv":{"name":"emptyStateViewCanScroll","abstract":"

    Whether the empty state view allows scrolling or not, by default this is false

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB14ViewCanAnimateSbv":{"name":"emptyStateViewCanAnimate","abstract":"

    Whether the empty state view should animate or not

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB21ViewAnimatesEverytimeSbv":{"name":"emptyStateViewAnimatesEverytime","abstract":"

    Whether the empty state view animates every time it is shown

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB21ViewAnimationDurationSdv":{"name":"emptyStateViewAnimationDuration","abstract":"

    The amount of time the empty state view should animate for

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html#/s:12UIEmptyState0aB10DataSourceP05emptyB13ViewAnimationySo6UIViewC3for_Sd17animationDurationySbcSg10completiontF":{"name":"emptyStateViewAnimation(for:animationDuration:completion:)","abstract":"

    The animation function for the views in the empty state view

    ","parent_name":"UIEmptyStateDataSource"},"Protocols/UIEmptyStateDataSource.html":{"name":"UIEmptyStateDataSource","abstract":"

    The data source for the Empty View

    "},"Protocols/UIEmptyStateDelegate.html":{"name":"UIEmptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    "},"Extensions/UICollectionViewController.html#/s:So26UICollectionViewControllerC12UIEmptyStateE011reloadEmptyE0yyF":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the collectionView to self.collectionView

    ","parent_name":"UICollectionViewController"},"Extensions/UITableViewController.html#/s:So21UITableViewControllerC12UIEmptyStateE011reloadEmptyE0yyF":{"name":"reloadEmptyState()","abstract":"

    Reloads the empty state, defaults the tableView to self.tableView

    ","parent_name":"UITableViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD10DataSourceAC0cdfG0_pSgXwv":{"name":"emptyStateDataSource","abstract":"

    The data source for the Empty View

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD8DelegateAC0cdF0_pSgXwv":{"name":"emptyStateDelegate","abstract":"

    The delegate for UIEmptyStateView

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE05emptyD4ViewSo0A0CSgv":{"name":"emptyStateView","abstract":"

    The empty state view associated to the ViewController

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE011reloadEmptyD0ySo11UITableViewC3for_tF":{"name":"reloadEmptyState(for:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html#/s:So16UIViewControllerC12UIEmptyStateE011reloadEmptyD0ySo16UICollectionViewC3for_tF":{"name":"reloadEmptyState(for:)","abstract":"

    The method responsible for show and hiding the UIEmptyStateDataSource.viewForEmptyState view

    ","parent_name":"UIViewController"},"Extensions/UIViewController.html":{"name":"UIViewController","abstract":"

    Extension on UIViewController which adds method and computed properties in order to allow empty view creation

    "},"Extensions/UITableViewController.html":{"name":"UITableViewController","abstract":"

    A convenience extension for UITableViewController which defaults the tableView

    "},"Extensions/UICollectionViewController.html":{"name":"UICollectionViewController","abstract":"

    A convenience extension for UICollectionViewController which defaults the collectionView

    "},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC8delegateAA0aB8Delegate_pSgXwv":{"name":"delegate","abstract":"

    The delegate for the view, gets called when user taps button or self

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC5titleSo18NSAttributedStringCv":{"name":"title","abstract":"

    The title for the titleView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC5imageSo7UIImageCSgv":{"name":"image","abstract":"

    The image for the imageView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC9imageSizeSC6CGSizeVSgv":{"name":"imageSize","abstract":"

    The size for image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC11buttonTitleSo18NSAttributedStringCSgv":{"name":"buttonTitle","abstract":"

    The button title for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC11buttonImageSo7UIImageCSgv":{"name":"buttonImage","abstract":"

    The image for the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC10buttonSizeSC6CGSizeVSgv":{"name":"buttonSize","abstract":"

    The size of the button

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC13detailMessageSo18NSAttributedStringCSgv":{"name":"detailMessage","abstract":"

    The detail message for the detail label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC7spacing12CoreGraphics7CGFloatVSgv":{"name":"spacing","abstract":"

    The spacing in between each of the views

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewCACSC6CGRectV5frame_So18NSAttributedStringC5titletcfc":{"name":"init(frame:title:)","abstract":"

    Initializer for UIEmptyStateView,","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/c:@M@UIEmptyState@objc(cs)UIEmptyStateView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

    Unused initializer currently

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/c:@M@UIEmptyState@objc(cs)UIEmptyStateView(im)updateConstraints":{"name":"updateConstraints()","abstract":"

    Override for update constraints, adds the auto layout constraints for the stackviews subviews.

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC07contentC0So07UIStackC0Cv":{"name":"contentView","abstract":"

    The content view which encloses the rest of the subviews, of type UIStackView

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC05titleC0So7UILabelCv":{"name":"titleView","abstract":"

    The title view which displays the value of title, place below the image view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC05imageC0So07UIImageC0Cv":{"name":"imageView","abstract":"

    The image view which displays the value of image, placed above the title label

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC6buttonSo8UIButtonCv":{"name":"button","abstract":"

    The button for the empty state view, title is set to the value of buttonTitle, placed at the bottom of the view

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html#/s:12UIEmptyState0aB4ViewC06detailC0So7UILabelCv":{"name":"detailView","abstract":"

    The optional detail view, placed under title view, only displayed if detailMessage has a value

    ","parent_name":"UIEmptyStateView"},"Classes/UIEmptyStateView.html":{"name":"UIEmptyStateView","abstract":"

    A UIView which has a stack view and inside the stackview are 1-4 other views"},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Extensions.html":{"name":"Extensions","abstract":"

    The following extensions are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json index 6fe9f48..391dd4f 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/Luis/Desktop/UIEmptyState" + "source_directory": "/Users/luis/Programming/iOS/UIEmptyState" } \ No newline at end of file diff --git a/run-jazzy.sh b/run-jazzy.sh index 34e9a44..1255699 100755 --- a/run-jazzy.sh +++ b/run-jazzy.sh @@ -1,3 +1,3 @@ #!/bin/bash -jazzy --clean -a Luis Padron -u https://luispadron.com -m UIEmptyState --module-version 0.1.0 --readme README.md -g https://github.com/luispadron/UIEmptyState --theme fullwidth +jazzy --clean -a Luis Padron -u https://luispadron.com -m UIEmptyState --module-version 1.0.0 --readme README.md -g https://github.com/luispadron/UIEmptyState --theme fullwidth