自定义UITableView折叠效果
来源:互联网 发布:淘宝开店注册在哪里 编辑:程序博客网 时间:2024/05/16 04:46
类似于QQ的那种折叠效果。只刷新点击的折叠行。不加载所有数据源。 测试环境Xcode4.3.3+SDK5.1兼容ios6 目测管用//// MyTableViewController.m// TableSectionStatistics//// Created by rlf on 12-11-23.// Copyright (c) 2012年 __rlf__. All rights reserved.// #import "MyTableViewController.h"#define originalHeight 25.0f#define newHeight 85.0f#define isOpen @"85.0f" @interface MyTableViewController () @end @implementation MyTableViewController{ NSMutableDictionary *dicClicked; NSInteger count; CGFloat mHeight; NSInteger sectionIndex;} - (id)initWithStyle:(UITableViewStyle)style{ self = [super initWithStyle:style]; if (self) { // Custom initialization } return self;} - (void)viewDidLoad{ [super viewDidLoad]; count = 0; mHeight = originalHeight; sectionIndex = 0; dicClicked = [NSMutableDictionary dictionaryWithCapacity:3];} - (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;} #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ // Return the number of sections. return 50;} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 2;} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *contentIndentifer = @"Container"; if (indexPath.row == 0) { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:contentIndentifer]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:contentIndentifer]; } NSString *statisticsContent = [[NSString alloc] initWithString:@"rlf:岁月流芳,花开几度,走在岁月里,醉在流香里,总在时光里辗转徘徊。花开几许,落花几度,岁月寒香,飘进谁的诗行,一抹幽香,掺入几许愁伤,流年似花,春来秋往,睁开迷离的双眼,回首张望,随风的尘烟荡漾着迷忙,昨日的光阴已逝去,留下无尽的回忆让人留恋与追忆"]; cell.textLabel.font = [UIFont systemFontOfSize:12.0f]; cell.textLabel.text = statisticsContent; cell.textLabel.textColor = [UIColor brownColor] ; cell.textLabel.opaque = NO; // 选中Opaque表示视图后面的任何内容都不应该绘制 cell.textLabel.numberOfLines = 8; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.imageView.image = [UIImage imageNamed:@"ic_milestone_heart.png"]; cell.textLabel.text = [NSString stringWithFormat:@"%d",count]; count++; return cell;} //Section的标题栏高度-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ if (section == 0) return 46; else return 30.0f;} -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ CGRect headerFrame = CGRectMake(0, 0, 300, 30); CGFloat y = 2; if (section == 0) { headerFrame = CGRectMake(0, 0, 300, 100); y = 18; } UIView *headerView = [[UIView alloc] initWithFrame:headerFrame]; UILabel *dateLabel=[[UILabel alloc] initWithFrame:CGRectMake(20, y, 240, 24)];//日期标签 dateLabel.font=[UIFont boldSystemFontOfSize:16.0f]; dateLabel.textColor = [UIColor darkGrayColor]; dateLabel.backgroundColor=[UIColor clearColor]; UILabel *ageLabel=[[UILabel alloc] initWithFrame:CGRectMake(216, y, 88, 24)];//年龄标签 ageLabel.font=[UIFont systemFontOfSize:14.0]; ageLabel.textAlignment=UITextAlignmentRight; ageLabel.textColor = [UIColor darkGrayColor]; ageLabel.backgroundColor=[UIColor clearColor]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"MM dd,yyyy"; dateLabel.text = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:[NSDate date]]]; ageLabel.text = @"1岁 2天"; [headerView addSubview:dateLabel]; [headerView addSubview:ageLabel]; return headerView;} #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row == 0) { UITableViewCell *targetCell = [tableView cellForRowAtIndexPath:indexPath]; if (targetCell.frame.size.height == originalHeight+1){ [dicClicked setObject:isOpen forKey:indexPath]; } else{ [dicClicked removeObjectForKey:indexPath]; } [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } NSLog(@"indexPath=%@",indexPath); NSLog(@"dicClicked=%@",dicClicked);} -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row == 0) { if ([[dicClicked objectForKey:indexPath] isEqualToString: isOpen]) return [[dicClicked objectForKey:indexPath] floatValue]; else return originalHeight; } else { return 45.0f; }} @end
0 0
- 自定义UITableView折叠效果
- 自定义UITableView折叠效果
- UITableView的折叠效果
- UITableView 折叠效果 masksToBounds
- UITableView的折叠效果
- 自定义UITableView折叠效果类似于QQ的那种折叠效果。只刷新点击的折叠行。不加载所有数据源。 测试环境Xcode4.3.3+SDK5.1兼容ios6
- 自己写的UITableView的折叠效果
- ios 自定义折叠控件 ——UITableView
- UITableView的折叠收缩和QQ好友分组效果
- UITableView的折叠收缩和QQ好友分组效果
- UITableView的折叠收缩和QQ好友分组效果
- UItableview点击后的折叠效果的简单实现
- UITableView 的折叠状态
- 使用AppBarLayout+CollapsingToolbarLayout实现自定义工具栏折叠效果
- 使用AppBarLayout+CollapsingToolbarLayout实现自定义工具栏折叠效果
- UITableView的折叠与展开
- 自定义UITableView索引动画,实现饿了么菜单效果
- 选择屏幕折叠效果
- PAT (Advanced Level) Practise 1002 A+B for Polynomials (25)
- 认识——转化的力量
- Codeforces Round #138 (Div. 2)
- 多线程问题锦集
- 【从源码看Android】01从Looper说起
- 自定义UITableView折叠效果
- mysql server has gone away的原因
- Linux开发之守护进程
- Codeforces Round #139 (Div. 2)
- Codeforces Round #147 (Div. 2) B. Young Table
- 解决get传值乱码问题
- 第6周作业1-闰年之循环判断LeapYearFor
- leetcode: Remove Element
- Codeforces Round #140 (Div. 2)