Skip to content

Commit

Permalink
添加自动放大头视图API
Browse files Browse the repository at this point in the history
  • Loading branch information
CodeWicky committed Jan 11, 2018
1 parent c46c34e commit 3a552e5
Showing 5 changed files with 141 additions and 32 deletions.
4 changes: 4 additions & 0 deletions DEMO/a.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@
objects = {

/* Begin PBXBuildFile section */
211A4B2C2000CA3900DC30B2 /* timg.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 211A4B2B2000CA3800DC30B2 /* timg.jpg */; };
55DFF9CE75F8617875976FB9 /* libPods-a.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A49CC5042F54C0481E0F48D /* libPods-a.a */; };
9B4926C21EBD77C700EF58DE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4926C11EBD77C700EF58DE /* main.m */; };
9B4926C51EBD77C700EF58DE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4926C41EBD77C700EF58DE /* AppDelegate.m */; };
@@ -27,6 +28,7 @@
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
211A4B2B2000CA3800DC30B2 /* timg.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = timg.jpg; sourceTree = "<group>"; };
25EA7A883D9FC3853A5D027E /* Pods-a.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-a.release.xcconfig"; path = "Pods/Target Support Files/Pods-a/Pods-a.release.xcconfig"; sourceTree = "<group>"; };
9A49CC5042F54C0481E0F48D /* libPods-a.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-a.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9B4926BD1EBD77C700EF58DE /* a.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = a.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -114,6 +116,7 @@
9B9DAC701EBED80C00196BC7 /* ACell.m */,
9B9DAC711EBED80C00196BC7 /* AModel.h */,
9B9DAC721EBED80C00196BC7 /* AModel.m */,
211A4B2B2000CA3800DC30B2 /* timg.jpg */,
9B9DAC7C1EBEEE6A00196BC7 /* CCell.h */,
9B9DAC7D1EBEEE6A00196BC7 /* CCell.m */,
9B9DAC7E1EBEEE6A00196BC7 /* CCell.xib */,
@@ -232,6 +235,7 @@
9B4926D01EBD77C700EF58DE /* LaunchScreen.storyboard in Resources */,
9B9DAC801EBEEE6B00196BC7 /* CCell.xib in Resources */,
9B4926CD1EBD77C700EF58DE /* Assets.xcassets in Resources */,
211A4B2C2000CA3900DC30B2 /* timg.jpg in Resources */,
9B4926CB1EBD77C700EF58DE /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
59 changes: 35 additions & 24 deletions DEMO/a/ViewController.m
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
#import "BCell.h"


@interface ViewController ()<DWTableViewHelperDelegate>
@interface ViewController ()<DWTableViewHelperDelegate,UITableViewDataSource,UITableViewDelegate>

@property (nonatomic ,strong) UITableView * tabV;

@@ -29,11 +29,17 @@ - (void)viewDidLoad {
[super viewDidLoad];
[self initDataArr];
[self.view addSubview:self.tabV];
UIImageView * v = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 414, 221)];
v.image = [UIImage imageNamed:@"timg.jpg"];
[self.helper setAutoZoomHeader:v scrollHandler:^(CGFloat contentoffset) {
NSLog(@"%f",contentoffset);
}];
}

-(void)initDataArr {

NSArray * temp = @[@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjklasdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",@"asdf",@"sdfgfdfgsdfsdfgsdfd",@"asdfgfrfvcfsdkmnfgs,nmn,dfj;Zjsflvnkjdskfmfdlasjknmf,mdfkkjdslfdkkl;dfkvflksmndfflk,,skdfklfkkjlkfjdkjelkfjdklkkjkl",@"afda",];
// NSArray * temp = @[@"asd"];
for (NSString * str in temp) {
AModel * model = [AModel new];
model.title = str;
@@ -53,43 +59,48 @@ -(void)initDataArr {
[self.dataArr addObject:newM];
}

-(id)dw_TableView:(UITableView *)tableView showAnimationWithCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
return [[DWAnimation alloc] initAnimationWithLayer:nil animationKey:@"animation" animationCreater:^(DWAnimationMaker *maker) {
maker.scaleFrom(0).scaleTo(1).duration(0.4).install();
}];
}
//-(id)dw_TableView:(UITableView *)tableView showAnimationWithCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// return [[DWAnimation alloc] initAnimationWithLayer:nil animationKey:@"animation" animationCreater:^(DWAnimationMaker *maker) {
// maker.scaleFrom(0).scaleTo(1).duration(0.4).install();
// }];
//}

-(UITableView *)tabV {
if (!_tabV) {
_tabV = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 414, 500) style:(UITableViewStyleGrouped)
_tabV = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, 414, 500) style:(UITableViewStylePlain)
];
self.helper = [[DWTableViewHelper alloc] initWithTabV:_tabV dataSource:self.dataArr];
self.helper.useAutoRowHeight = YES;
// self.helper.useAutoRowHeight = YES;
[self.helper setTheSeperatorToZero];
self.helper.minAutoRowHeight = 55;
// self.helper.minAutoRowHeight = 55;
self.helper.helperDelegate = self;
self.helper.loadDataMode = DWTableViewHelperLoadDataIgnoreHighSpeedWithSnapMode;
self.helper.ignoreCount = 1;
[self.helper enableTableViewContentInsetAutoAdjust:NO inViewController:nil];

// self.helper.loadDataMode = DWTableViewHelperLoadDataIgnoreHighSpeedWithSnapMode;
// self.helper.ignoreCount = 1;
// [_tabV registerClass:[ACell class] forCellReuseIdentifier:@"cellID"];
}
return _tabV;
}

-(BOOL)dw_TableView:(UITableView *)tableView selectModeWillSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.helper setSelect:YES indexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0],[NSIndexPath indexPathForRow:1 inSection:0]]];
return YES;
}
//-(BOOL)dw_TableView:(UITableView *)tableView selectModeWillSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// [self.helper setSelect:YES indexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0],[NSIndexPath indexPathForRow:1 inSection:0]]];
// return YES;
//}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ACell * cell = [tableView dequeueReusableCellWithIdentifier:@"cellID" forIndexPath:indexPath];
cell.label.text = @"as";
return cell;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
//
//
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// static int i = 0;
// if (i == 0) {
// self.helper.selectEnable = !self.helper.selectEnable;
// } else if (i == 1) {
// [self.helper setSelect:YES indexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0],[NSIndexPath indexPathForRow:3 inSection:0]]];
// } else if (i == 2) {
// [self.helper setSelect:NO indexPaths:@[[NSIndexPath indexPathForRow:2 inSection:0],[NSIndexPath indexPathForRow:1 inSection:0]]];
// }
// i ++;
[self.helper setAutoZoomHeader:nil scrollHandler:nil];
}

-(NSMutableArray *)dataArr {
Binary file added DEMO/a/timg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions DWTableViewHelper/DWTableViewHelper.h
Original file line number Diff line number Diff line change
@@ -393,6 +393,15 @@ typedef NS_ENUM(NSUInteger, DWTableViewHelperLoadDataMode) {///数据加载优

///修复iOS11后refreshControl位置错误
-(void)fixRefreshControlInsets;


/**
这只自动放大的头视图,与tableHeaderView相互冲突
@param header 设置的headerView
@param handler 当滚动时的触发回调,可在此处处理导航透明度
*/
-(void)setAutoZoomHeader:(UIView *)header scrollHandler:(void(^)(CGFloat contentoffset))handler;
@end

#pragma mark --- DWTableViewHelperModel 数据模型基类 ---
101 changes: 93 additions & 8 deletions DWTableViewHelper/DWTableViewHelper.m
Original file line number Diff line number Diff line change
@@ -98,6 +98,16 @@ @interface DWTableViewHelper ()<UITableViewDelegate,UITableViewDataSource,UITabl
///进程打断工具类
@property (nonatomic ,strong) DWOperationCancelFlag * flag;

///自动缩放头视图回调
@property (nonatomic ,copy) void(^autoZoomHeaderHandler)(CGFloat contentoffset);

//自动缩放头视图模式
@property (nonatomic ,assign) BOOL autoZoomHeaderMode;

@property (nonatomic ,strong) UIView * autoZoomHeader;

@property (nonatomic ,assign) CGRect autoZoomOriFrm;

@end

@interface DWTableViewHelperModel ()
@@ -191,18 +201,15 @@ -(void)reloadDataWithCompletion:(dispatch_block_t)completion
});
}

-(void)showPlaceHolderView
{
-(void)showPlaceHolderView {
handlePlaceHolderView(self.placeHolderView, self.tabV, YES, &hasPlaceHolderView);
}

-(void)hidePlaceHolderView
{
-(void)hidePlaceHolderView {
handlePlaceHolderView(self.placeHolderView, self.tabV, NO, &hasPlaceHolderView);
}

-(void)setAllSelect:(BOOL)select
{
-(void)setAllSelect:(BOOL)select {
NSUInteger count = self.tabV.numberOfSections;
if (select) {
for (int i = 0; i < count; i++) {
@@ -215,8 +222,7 @@ -(void)setAllSelect:(BOOL)select
}
}

-(void)setSection:(NSUInteger)section allSelect:(BOOL)select
{
-(void)setSection:(NSUInteger)section allSelect:(BOOL)select {
NSUInteger count = self.tabV.numberOfSections;
if (section >= count) {
return;
@@ -322,6 +328,62 @@ -(void)fixRefreshControlInsets {
}
}

-(void)setAutoZoomHeader:(UIView *)header scrollHandler:(void (^)(CGFloat))handler {

if (header == nil) {
[self removeAutoZoomHeader];
return;
}

///添加容器层,保证header在边缘处被剪切
UIView * container = [[UIView alloc] initWithFrame:_tabV.frame];
container.backgroundColor = _tabV.backgroundColor;
container.clipsToBounds = YES;
UIView * superView = _tabV.superview;
[superView insertSubview:container belowSubview:_tabV];
_tabV.frame = _tabV.bounds;
[container addSubview:_tabV];

///添加占位视图
CGRect headerBounds = header.bounds;
headerBounds.size.width = _tabV.bounds.size.width;
UIView * placeHolder = [[UIView alloc] initWithFrame:headerBounds];
_tabV.tableHeaderView = placeHolder;
_tabV.backgroundColor = [UIColor clearColor];

///添加头视图
header.frame = header.bounds;
[container insertSubview:header belowSubview:_tabV];

///设置相关值
self.autoZoomHeader = header;
self.autoZoomHeaderHandler = handler;
self.autoZoomOriFrm = header.bounds;
self.autoZoomHeaderMode = YES;
}

-(void)removeAutoZoomHeader {
if (self.autoZoomHeaderMode) {

///放回原父视图
UIView * container = _tabV.superview;
UIView * superView = container.superview;
CGRect containerFrm = _tabV.superview.frame;
_tabV.frame = containerFrm;
[superView insertSubview:_tabV belowSubview:container];

///移除容器层及头视图
[container removeFromSuperview];
_tabV.tableHeaderView = nil;

///恢复默认值
self.autoZoomHeaderMode = NO;
self.autoZoomHeader = nil;
self.autoZoomHeaderHandler = nil;
self.autoZoomOriFrm = CGRectNull;
}
}

#pragma mark --- delegate Map Start ---
///display
-(void)tableView:(UITableView *)tableView willDisplayCell:(DWTableViewHelperCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
@@ -730,6 +792,29 @@ - (void)tableView:(UITableView *)tableView cancelPrefetchingForRowsAtIndexPaths:
///scroll
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
///自动缩放模式
if (self.autoZoomHeaderMode && self.autoZoomHeader) {
CGFloat offsetY = scrollView.contentOffset.y;
CGRect desFrm = self.autoZoomOriFrm;
if (offsetY >= 0) {
if (desFrm.size.height - offsetY >= 0) {
desFrm.origin.y = -offsetY;
} else {
desFrm.origin.y = -desFrm.size.height;
}
} else {
CGFloat height = desFrm.size.height - offsetY;
CGFloat width = desFrm.size.width * 1.0 / desFrm.size.height * height;
CGFloat originX = (desFrm.size.width - width) / 2.0;
desFrm.size.width = width;
desFrm.size.height = height;
desFrm.origin.x = originX;
}
self.autoZoomHeader.frame = desFrm;
if (self.autoZoomHeaderHandler) {
self.autoZoomHeaderHandler(offsetY);
}
}
DWRespondTo(DWParas(scrollView,nil));
}

0 comments on commit 3a552e5

Please sign in to comment.