分享一個(gè)小Demo砸狞,滑動TableView的時(shí)候控制導(dǎo)航欄的隱藏與顯示捻勉,實(shí)際并不難,也沒什么技巧刀森,在這里記錄下,希望大家能給些改進(jìn)建議踱启。
那么我們開始看代碼吧,直接用的UITableViewController
@interface TableViewController ()
{
NSMutableArray * dataSource; //數(shù)據(jù)源
CGFloat beginContentY; //開始滑動的位置
CGFloat endContentY; //結(jié)束滑動的位置
CGFloat sectionHeaderHeight; //section的header高度
}
@end
@implementation TableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
sectionHeaderHeight = 40;
dataSource = [[NSMutableArray alloc] init];
for(int i=0;i<100;i++)
{
NSString * name = [NSString stringWithFormat:@"%d",i];
[dataSource addObject:name];
}
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return dataSource.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return sectionHeaderHeight;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return @"this is a demo";
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
NSString * str = [dataSource objectAtIndex:indexPath.row];
cell.textLabel.text = str;
return cell;
}
// 當(dāng)開始滾動視圖時(shí)研底,執(zhí)行該方法埠偿。一次有效滑動(開始滑動,滑動一小段距離榜晦,只要手指不松開冠蒋,只算一次滑動),只執(zhí)行一次乾胶。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
//獲取開始位置
beginContentY = scrollView.contentOffset.y;
}
// 滑動scrollView抖剿,并且手指離開時(shí)執(zhí)行。一次有效滑動识窿,只執(zhí)行一次斩郎。
// 當(dāng)pagingEnabled屬性為YES時(shí),不調(diào)用喻频,該方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
//獲取結(jié)束位置
endContentY = scrollView.contentOffset.y;
if(endContentY-beginContentY > 100)
{
[UIView animateWithDuration:0.25 animations:^{
CGRect rect = self.navigationController.navigationBar.frame;
rect.origin.y = -44;
self.navigationController.navigationBar.frame = rect;
}];
sectionHeaderHeight = 0;
[self.tableView reloadData];
} else if(endContentY-beginContentY < -100) {
[UIView animateWithDuration:0.25 animations:^{
CGRect rect = self.navigationController.navigationBar.frame;
rect.origin.y = 20;
self.navigationController.navigationBar.frame = rect;
} completion:^(BOOL finished) {
sectionHeaderHeight = 40;
[self.tableView reloadData];
}];
}
}
很簡單的缩宜,一點(diǎn)都不復(fù)雜。文中的備注也很少甥温,相信可以看得明白脓恕,希望大家多提意見膜宋。