TableView 展开和折叠
2017-11-06 09:42
681 查看
最近有一个小伙伴问我关于tableview的展开和折叠问题,相信很多人都写过。 还是自己随便实现了一遍。
基本的思路就是,用一个Model类来计算和控制tableview的高度。
实现效果:cell内容五行或者不足五行的时候,没有折叠功能,内容超过五行的时候,可以折叠和展开。
首先可以根据需求把cell的状态获取到为三个 不可展开、折叠状态和展开状态。 在Model里面可以用枚举来定义typedef NS_OPTIONS(NSUInteger, TYCellType) {
TYCellTypeNone, //不可展开
TYCellTypeFold, //折叠状态
TYCellTypeUnfold, //展开状态
};然后用一个属性来记录状态,并在内容的setter方法里面可以判断出初始的状态未不可展开或者折叠状态。此处我用NSString的分类自己实现了一个计算字符串高度的方法
- (CGFloat)textHeightInWidth:(CGFloat)width font:(UIFont *)font{
NSDictionary *attributesDict = @{NSFontAttributeName:font};
CGSize maxSize = CGSizeMake(width, MAXFLOAT);
CGRect subviewRect = [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDict context:nil];
return subviewRect.size.height;
}此方法传入宽度和字体,用于判断基本label这些控件的显示,若要用到富文本,可以自己相应作出调整。
最主要的就是在Model中写一个计算方法,此方法根据cell的状态和内容计算出cell的高度,并返回给代理。
然后在cell中实现一个BLOCK用于展开或折叠点击之后回调,并且通过状态判断cell的显示情况。
此demo有一些地方的封装还不是很好,左右字体都用的是系统17号,有兴趣的小伙伴可以自己把字体封装进入写接口。
***以上 项目名称T_yunDemoTableUnfold
(欢迎随手给一颗星星哦~)本篇博客Demo地址https://github.com/xmy0010/DemoForCSDN
本人邮箱18144200589@163.com欢迎小伙伴一起讨论,学习,进步。
基本的思路就是,用一个Model类来计算和控制tableview的高度。
实现效果:cell内容五行或者不足五行的时候,没有折叠功能,内容超过五行的时候,可以折叠和展开。
首先可以根据需求把cell的状态获取到为三个 不可展开、折叠状态和展开状态。 在Model里面可以用枚举来定义typedef NS_OPTIONS(NSUInteger, TYCellType) {
TYCellTypeNone, //不可展开
TYCellTypeFold, //折叠状态
TYCellTypeUnfold, //展开状态
};然后用一个属性来记录状态,并在内容的setter方法里面可以判断出初始的状态未不可展开或者折叠状态。此处我用NSString的分类自己实现了一个计算字符串高度的方法
- (CGFloat)textHeightInWidth:(CGFloat)width font:(UIFont *)font{
NSDictionary *attributesDict = @{NSFontAttributeName:font};
CGSize maxSize = CGSizeMake(width, MAXFLOAT);
CGRect subviewRect = [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDict context:nil];
return subviewRect.size.height;
}此方法传入宽度和字体,用于判断基本label这些控件的显示,若要用到富文本,可以自己相应作出调整。
最主要的就是在Model中写一个计算方法,此方法根据cell的状态和内容计算出cell的高度,并返回给代理。
然后在cell中实现一个BLOCK用于展开或折叠点击之后回调,并且通过状态判断cell的显示情况。
此demo有一些地方的封装还不是很好,左右字体都用的是系统17号,有兴趣的小伙伴可以自己把字体封装进入写接口。
***以上 项目名称T_yunDemoTableUnfold
(欢迎随手给一颗星星哦~)本篇博客Demo地址https://github.com/xmy0010/DemoForCSDN
本人邮箱18144200589@163.com欢迎小伙伴一起讨论,学习,进步。
相关文章推荐
- TableView类似QQ分组的折叠与展开
- tableview的展开和折叠
- iOS开发中TableView类似QQ分组的折叠与展开效果
- iOS实现类似QQ的好友列表,自由展开折叠(在原来TableView的基础上添加一个字典,一个Button)
- 基于省市区展示的tableView多层展开和折叠
- iOS tableView无限展开(配Demo下载)
- iOS tableview cell的展开收缩
- iOS中tableview 两级cell的展开与收回的示例代码
- iOS中tableview 两级cell的展开与收回(二)
- 可展开/折叠的Android TextView:ExpandableTextView
- 在iOS中怎样创建可展开的Table View?(上)
- 5, Swift tableView点击收起展开的效果
- 源码推荐:长按拖拽排序,TableviewGroup阴影加圆角,图片浏览器,tableView展开收缩列表的功能,下拉放大,上推渐变隐藏
- 一种可展开伸缩的tableView实现
- android textView 折叠 展开 ExpandableTextView
- 在iOS中怎样创建可展开的Table View?(下)
- TextView的折叠展开(动画效果)
- TextView的折叠展开(动画效果)
- TextView显示文字时的折叠和展开
- C# threeView 静态添加,动态添加,全部展开,全部折叠