|
@@ -0,0 +1,280 @@
|
|
|
+//
|
|
|
+// UIScrollView+EmptyDataSet.h
|
|
|
+// DZNEmptyDataSet
|
|
|
+// https://github.com/dzenbot/DZNEmptyDataSet
|
|
|
+//
|
|
|
+// Created by Ignacio Romero Zurbuchen on 6/20/14.
|
|
|
+// Copyright (c) 2016 DZN Labs. All rights reserved.
|
|
|
+// Licence: MIT-Licence
|
|
|
+//
|
|
|
+
|
|
|
+#import <UIKit/UIKit.h>
|
|
|
+
|
|
|
+@protocol DZNEmptyDataSetSource;
|
|
|
+@protocol DZNEmptyDataSetDelegate;
|
|
|
+
|
|
|
+#define DZNEmptyDataSetDeprecated(instead) DEPRECATED_MSG_ATTRIBUTE(" Use " # instead " instead")
|
|
|
+
|
|
|
+/**
|
|
|
+ A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display.
|
|
|
+ @discussion It will work automatically, by just conforming to DZNEmptyDataSetSource, and returning the data you want to show.
|
|
|
+ */
|
|
|
+@interface UIScrollView (EmptyDataSet)
|
|
|
+
|
|
|
+/** The empty datasets data source. */
|
|
|
+@property (nonatomic, weak) IBOutlet id <DZNEmptyDataSetSource> emptyDataSetSource;
|
|
|
+/** The empty datasets delegate. */
|
|
|
+@property (nonatomic, weak) IBOutlet id <DZNEmptyDataSetDelegate> emptyDataSetDelegate;
|
|
|
+/** YES if any empty dataset is visible. */
|
|
|
+@property (nonatomic, readonly, getter = isEmptyDataSetVisible) BOOL emptyDataSetVisible;
|
|
|
+
|
|
|
+/**
|
|
|
+ Reloads the empty dataset content receiver.
|
|
|
+ @discussion Call this method to force all the data to refresh. Calling -reloadData is similar, but this forces only the empty dataset to reload, not the entire table view or collection view.
|
|
|
+ */
|
|
|
+- (void)reloadEmptyDataSet;
|
|
|
+
|
|
|
+@end
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ The object that acts as the data source of the empty datasets.
|
|
|
+ @discussion The data source must adopt the DZNEmptyDataSetSource protocol. The data source is not retained. All data source methods are optional.
|
|
|
+ */
|
|
|
+@protocol DZNEmptyDataSetSource <NSObject>
|
|
|
+@optional
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the title of the dataset.
|
|
|
+ The dataset uses a fixed font style by default, if no attributes are set. If you want a different font style, return a attributed string.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the data source.
|
|
|
+ @return An attributed string for the dataset title, combining font, text color, text pararaph style, etc.
|
|
|
+ */
|
|
|
+- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the description of the dataset.
|
|
|
+ The dataset uses a fixed font style by default, if no attributes are set. If you want a different font style, return a attributed string.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the data source.
|
|
|
+ @return An attributed string for the dataset description text, combining font, text color, text pararaph style, etc.
|
|
|
+ */
|
|
|
+- (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the image of the dataset.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the data source.
|
|
|
+ @return An image for the dataset.
|
|
|
+ */
|
|
|
+- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for a tint color of the image dataset. Default is nil.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the data source.
|
|
|
+ @return A color to tint the image of the dataset.
|
|
|
+ */
|
|
|
+- (UIColor *)imageTintColorForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Asks the data source for the image animation of the dataset.
|
|
|
+ *
|
|
|
+ * @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ *
|
|
|
+ * @return image animation
|
|
|
+ */
|
|
|
+- (CAAnimation *) imageAnimationForEmptyDataSet:(UIScrollView *) scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the title to be used for the specified button state.
|
|
|
+ The dataset uses a fixed font style by default, if no attributes are set. If you want a different font style, return a attributed string.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the data source.
|
|
|
+ @param state The state that uses the specified title. The possible values are described in UIControlState.
|
|
|
+ @return An attributed string for the dataset button title, combining font, text color, text pararaph style, etc.
|
|
|
+ */
|
|
|
+- (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the image to be used for the specified button state.
|
|
|
+ This method will override buttonTitleForEmptyDataSet:forState: and present the image only without any text.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the data source.
|
|
|
+ @param state The state that uses the specified title. The possible values are described in UIControlState.
|
|
|
+ @return An image for the dataset button imageview.
|
|
|
+ */
|
|
|
+- (UIImage *)buttonImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for a background image to be used for the specified button state.
|
|
|
+ There is no default style for this call.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the data source.
|
|
|
+ @param state The state that uses the specified image. The values are described in UIControlState.
|
|
|
+ @return An attributed string for the dataset button title, combining font, text color, text pararaph style, etc.
|
|
|
+ */
|
|
|
+- (UIImage *)buttonBackgroundImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for the background color of the dataset. Default is clear color.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the data source.
|
|
|
+ @return A color to be applied to the dataset background view.
|
|
|
+ */
|
|
|
+- (UIColor *)backgroundColorForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for a custom view to be displayed instead of the default views such as labels, imageview and button. Default is nil.
|
|
|
+ Use this method to show an activity view indicator for loading feedback, or for complete custom empty data set.
|
|
|
+ Returning a custom view will ignore -offsetForEmptyDataSet and -spaceHeightForEmptyDataSet configurations.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return The custom view.
|
|
|
+ */
|
|
|
+- (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for a offset for vertical and horizontal alignment of the content. Default is CGPointZero.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return The offset for vertical and horizontal alignment.
|
|
|
+ */
|
|
|
+- (CGPoint)offsetForEmptyDataSet:(UIScrollView *)scrollView DZNEmptyDataSetDeprecated(-verticalOffsetForEmptyDataSet:);
|
|
|
+- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the data source for a vertical space between elements. Default is 11 pts.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return The space height between elements.
|
|
|
+ */
|
|
|
+- (CGFloat)spaceHeightForEmptyDataSet:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+@end
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ The object that acts as the delegate of the empty datasets.
|
|
|
+ @discussion The delegate can adopt the DZNEmptyDataSetDelegate protocol. The delegate is not retained. All delegate methods are optional.
|
|
|
+
|
|
|
+ @discussion All delegate methods are optional. Use this delegate for receiving action callbacks.
|
|
|
+ */
|
|
|
+@protocol DZNEmptyDataSetDelegate <NSObject>
|
|
|
+@optional
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate to know if the empty dataset should fade in when displayed. Default is YES.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if the empty dataset should fade in.
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldFadeIn:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate to know if the empty dataset should still be displayed when the amount of items is more than 0. Default is NO
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if empty dataset should be forced to display
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldBeForcedToDisplay:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate to know if the empty dataset should be rendered and displayed. Default is YES.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if the empty dataset should show.
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate for touch permission. Default is YES.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if the empty dataset receives touch gestures.
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldAllowTouch:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate for scroll permission. Default is NO.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if the empty dataset is allowed to be scrollable.
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Asks the delegate for image view animation permission. Default is NO.
|
|
|
+ Make sure to return a valid CAAnimation object from imageAnimationForEmptyDataSet:
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass object informing the delegate.
|
|
|
+ @return YES if the empty dataset is allowed to animate
|
|
|
+ */
|
|
|
+- (BOOL)emptyDataSetShouldAnimateImageView:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty dataset view was tapped.
|
|
|
+ Use this method either to resignFirstResponder of a textfield or searchBar.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetDidTapView:(UIScrollView *)scrollView DZNEmptyDataSetDeprecated(-emptyDataSet:didTapView:);
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the action button was tapped.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetDidTapButton:(UIScrollView *)scrollView DZNEmptyDataSetDeprecated(-emptyDataSet:didTapButton:);
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty dataset view was tapped.
|
|
|
+ Use this method either to resignFirstResponder of a textfield or searchBar.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ @param view the view tapped by the user
|
|
|
+ */
|
|
|
+- (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the action button was tapped.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ @param button the button tapped by the user
|
|
|
+ */
|
|
|
+- (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty data set will appear.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetWillAppear:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty data set did appear.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetDidAppear:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty data set will disappear.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetWillDisappear:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+/**
|
|
|
+ Tells the delegate that the empty data set did disappear.
|
|
|
+
|
|
|
+ @param scrollView A scrollView subclass informing the delegate.
|
|
|
+ */
|
|
|
+- (void)emptyDataSetDidDisappear:(UIScrollView *)scrollView;
|
|
|
+
|
|
|
+@end
|
|
|
+
|
|
|
+#undef DZNEmptyDataSetDeprecated
|
|
|
+
|