DZN 占位图
来源:互联网 发布:php 记log日志 编辑:程序博客网 时间:2024/05/12 15:33
#import "Team9EmptyTool.h"
#import "Team9Header.h"
#import <MJRefresh.h>
#import <UIScrollView+EmptyDataSet.h>
//#import "AppDelegate.h"
#import <AFNetworking.h>
@interface Team9EmptyTool ()<DZNEmptyDataSetDelegate,DZNEmptyDataSetSource>
@end
@implementation Team9EmptyTool
- (instancetype)initWithScrollView:(UIScrollView *)scrollView{
self = [super init];
if (self) {
scrollView.emptyDataSetDelegate = self;
scrollView.emptyDataSetSource = self;
self.scrollView = scrollView;
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
self.loading = manger.networkReachabilityStatus;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeNet) name:@"changeNet" object:nil];
}
return self;
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)changeNet{
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
self.loading = manger.networkReachabilityStatus;
[self.scrollView reloadEmptyDataSet];
if (self.loading) {
[self.scrollView.header beginRefreshing];
[self.scrollView.footer resetNoMoreData];
} else [self.scrollView.header endRefreshing];
[self.scrollView reloadEmptyDataSet];
}
+ (Team9EmptyTool *)toolWithScrollView:(UIScrollView *)scrollView{
Team9EmptyTool *tool = [[Team9EmptyTool alloc]initWithScrollView:scrollView];
return tool;
}
/*
初始化工具类之后有一个loading 这个是刷新的动画是否播放
afn 监听网络状态改变loading
刷新的block 把loading 改变
重写loading set方法, loading yes的时候刷新scrollview的emptyset
需要刷新数据的地方调用 header
调用header的时候调用 loading的set方法
让占位图和刷新状态一致
header -> setLoading
setLoading -> reloadEmptySet ->header
注意不要产生递归现象
方法需要自己看demo
*/
- (void)setLoading:(BOOL)loading
{
if (self.isLoading == loading) {
return;
}
_loading = loading;
if (loading == YES) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.loading = NO;
});
}
[self.scrollView reloadEmptyDataSet];
}
#pragma mark 背景字
- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView
{
NSString *text = nil;
UIFont *font = nil;
NSMutableDictionary *attributes = [NSMutableDictionary new];
NSMutableParagraphStyle *paragraph = [NSMutableParagraphStyle new];
paragraph.lineBreakMode = NSLineBreakByWordWrapping;
paragraph.alignment = NSTextAlignmentCenter;
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
switch (manger.networkReachabilityStatus) {
case AFNetworkReachabilityStatusUnknown:
text = @"未知网络";
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
text = @"蜂窝网络";
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
text = @"wifi";
break;
case AFNetworkReachabilityStatusNotReachable:
default:
text = @"没有网络";
break;
}
font = [UIFont boldSystemFontOfSize:20.0];
if (font) [attributes setObject:font forKey:NSFontAttributeName];
if (paragraph) [attributes setObject:paragraph forKey:NSParagraphStyleAttributeName];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes];
return attributedString;
}
#pragma mark 背景button
- (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView
{
NSString *text = nil;
UIFont *font = nil;
NSMutableDictionary *attributes = [NSMutableDictionary new];
NSMutableParagraphStyle *paragraph = [NSMutableParagraphStyle new];
paragraph.lineBreakMode = NSLineBreakByWordWrapping;
paragraph.alignment = NSTextAlignmentCenter;
text = @"点击或下拉刷新";
font = [UIFont boldSystemFontOfSize:15.0];
if (font) [attributes setObject:font forKey:NSFontAttributeName];
if (paragraph) [attributes setObject:paragraph forKey:NSParagraphStyleAttributeName];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes];
return attributedString;
}
#pragma mark 背景图
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView
{
if (self.isLoading) {
return [UIImage imageNamed:@"loading_imgBlue_78x78"];
}
else {
return [UIImage imageNamed:@"placeholder_remote"];
}
}
#pragma mark 背景色
- (UIColor *)backgroundColorForEmptyDataSet:(UIScrollView *)scrollView
{
if ([Team9EveningType shareEvening].eveningFailling) {
return [UIColor colorWithWhite:0.15 alpha:1];
} else return [UIColor colorWithWhite:0.95 alpha:1];
}
#pragma mark 未用背景button 图
- (UIImage *)buttonBackgroundImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state
{
NSString *imageName;
if (state == UIControlStateNormal) imageName =@"button_normal";
if (state == UIControlStateHighlighted) imageName =@"button_highlight";
UIEdgeInsets capInsets = UIEdgeInsetsMake(10.0,10.0, 10.0,10.0);
UIEdgeInsets rectInsets = UIEdgeInsetsZero;
return [[[UIImage imageNamed:imageName] resizableImageWithCapInsets:capInsets resizingMode:UIImageResizingModeStretch] imageWithAlignmentRectInsets:rectInsets];
}
#pragma mark 背景动画
- (CAAnimation *)imageAnimationForEmptyDataSet:(UIScrollView *)scrollView
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
animation.toValue = [NSValue valueWithCATransform3D: CATransform3DMakeRotation(M_PI_2,0.0, 0.0, 1.0) ];
animation.duration = 0.25;
animation.cumulative = YES;
animation.repeatCount = MAXFLOAT;
return animation;
}
#pragma mark 展示emptySet
- (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView
{
return YES;
}
#pragma mark 可点
- (BOOL)emptyDataSetShouldAllowTouch:(UIScrollView *)scrollView
{
return YES;
}
#pragma mark 可滚
- (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView
{
return YES;
}
#pragma mark 是否有动画这个可改变 刷新就变
- (BOOL)emptyDataSetShouldAnimateImageView:(UIScrollView *)scrollView
{
return self.isLoading;
}
#pragma mark 点击
- (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view
{
self.loading = YES;
[self.scrollView.header beginRefreshing];
}
#pragma mark 滚动
- (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button
{
self.loading = YES;
[self.scrollView.header beginRefreshing];
}
#pragma mark - View Auto-Rotation
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
- (BOOL)shouldAutorotate
{
return NO;
}
@end
- DZN 占位图
- 两种好用的占位图
- RN设置占位图
- html占位图img placeholder
- glide:占位图 & 渐变动画
- imageloader图片大小与占位图大小
- Glide-占位图以及加载动画
- 占位图在线生成.自定义文字 颜色 背景图等等
- Glide加载圆形image第一次显示占位图的原因
- Glide入门教程——4. 占位图& 淡入淡出动画
- iOS项目中瀑布流占位图问题
- 零行代码为App添加异常加载占位图
- 零行代码为 App 添加异常加载占位图
- 零行代码为 App 添加异常加载占位图
- Glide加载圆形image第一次显示占位图的解决办法
- Glide加载圆形image第一次显示占位图的原因
- [问题解决]Fresco设置占位图不显示的问题
- Glide-使用动态图作为正在加载占位图
- 第九周 项目四 广义表
- Java日志性能那些事
- 第七周 项目2-建立链队算法库
- 设置界面的显示时间
- 第六周项目二建立链栈算法库
- DZN 占位图
- 第9周 项目2-对称矩阵压缩存储的实现与应用(1)
- tinyxml的使用和字符编码转换
- java 代理模式 详解(奶粉代购例子)
- 3D Touch 第二弹
- SQ 数据库归档
- eclipse快捷键
- Windows 10 专业版关闭自动更新
- 第八周项目5—计数的模式匹配