iOS开发总结之自定义非等高cell-storyboard
来源:互联网 发布:软件需求工程师转行 编辑:程序博客网 时间:2024/05/23 11:36
1.storyboard中的结构:
2.代码
#import "XMGStatusCell.h"#import "XMGStatus.h"@interface XMGStatusCell()@property (weak, nonatomic) IBOutlet UIImageView *iconView;@property (weak, nonatomic) IBOutlet UILabel *nameLabel;@property (weak, nonatomic) IBOutlet UIImageView *vipView;@property (weak, nonatomic) IBOutlet UILabel *contentLabel;@property (weak, nonatomic) IBOutlet UIImageView *pictureView;@end@implementation XMGStatusCell+ (instancetype)cellWithTableView:(UITableView *)tableView{ return [tableView dequeueReusableCellWithIdentifier:@"status"];}- (void)awakeFromNib{ // 设置label每一行文字的最大宽度 // 为了保证计算出来的数值 跟 真正显示出来的效果 一致 self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;}- (void)setStatus:(XMGStatus *)status{ _status = status; if (status.isVip) { self.nameLabel.textColor = [UIColor orangeColor]; self.vipView.hidden = NO; } else { self.nameLabel.textColor = [UIColor blackColor]; self.vipView.hidden = YES; } self.nameLabel.text = status.name; self.iconView.image = [UIImage imageNamed:status.icon]; if (status.picture) { self.pictureView.hidden = NO; self.pictureView.image = [UIImage imageNamed:status.picture]; } else { self.pictureView.hidden = YES; } self.contentLabel.text = status.text; // 强制布局 [self layoutIfNeeded]; // 计算cell的高度 if (self.pictureView.hidden) { // 没有配图 status.cellHeight = CGRectGetMaxY(self.contentLabel.frame) + 10; } else { // 有配图 status.cellHeight = CGRectGetMaxY(self.pictureView.frame) + 10; }}@end
#import "XMGStatusesViewController.h"#import "XMGStatus.h"#import "XMGStatusCell.h"@interface XMGStatusesViewController ()@property (strong, nonatomic) NSArray *statuses;@end@implementation XMGStatusesViewController- (NSArray *)statuses{ if (_statuses == nil) { // 加载plist中的字典数组 NSString *path = [[NSBundle mainBundle] pathForResource:@"statuses.plist" ofType:nil]; NSArray *dictArray = [NSArray arrayWithContentsOfFile:path]; // 字典数组 -> 模型数组 NSMutableArray *statusArray = [NSMutableArray array]; for (NSDictionary *dict in dictArray) { XMGStatus *status = [XMGStatus statusWithDict:dict]; [statusArray addObject:status]; } _statuses = statusArray; } return _statuses;}- (void)viewDidLoad { [super viewDidLoad]; }#pragma mark - Table view data source- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.statuses.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ XMGStatusCell *cell = [XMGStatusCell cellWithTableView:tableView]; cell.status = self.statuses[indexPath.row]; return cell;}#pragma mark - 代理方法/** * 返回每一行的高度 */- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ XMGStatus *staus = self.statuses[indexPath.row]; return staus.cellHeight;}/** * 返回每一行的估计高度 * 只要返回了估计高度,那么就会先调用tableView:cellForRowAtIndexPath:方法创建cell,再调用tableView:heightForRowAtIndexPath:方法获取cell的真实高度 */- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 200;}@end
#import <UIKit/UIKit.h>@interface XMGStatus : NSObject@property (strong, nonatomic) NSString *name;@property (strong, nonatomic) NSString *text;@property (strong, nonatomic) NSString *icon;@property (strong, nonatomic) NSString *picture;@property (assign, nonatomic, getter=isVip) BOOL vip;/** cell的高度 */@property (assign, nonatomic) CGFloat cellHeight;+ (instancetype)statusWithDict:(NSDictionary *)dict;@end
3.效果:
0 0
- iOS开发总结之自定义非等高cell-storyboard
- iOS开发总结之自定义等高cell-storyboard
- iOS开发总结之自定义非等高cell-xib(方法一)
- storyboard自定义非等高的Cell
- iOS 自定义cell高度(非等高)
- iOS开发总结之自定义等高cell02-storyboard(封装)
- tableView - 自定义等高cell-storyBoard方式
- 自定义等高的cell(storyboard)
- IOS开发-15.自定义cell(等高cell)
- iOS 自定义等高cell
- iOS开发总结之自定义等高cell03-xib
- tableView-自定义非等高cell(1)
- tableView-自定义非等高cell(2)
- xib自定义非等高的cell
- UI 一一 自定义等高cell (storyboard方式)
- ios 开发自定义 cell 行高
- 自定义不等高cell的storyboard方法
- 自定义等高的cell
- iOS,Android调用手机QQ与指定用户或公众号聊天界面
- LeetCode - Majority Element
- Facebook: Pop
- 理解汉诺塔
- iOS RunLoop 初识
- iOS开发总结之自定义非等高cell-storyboard
- 制作html源文件查看器
- LeetCode 01 Two Sum
- Python Module_os_操作系统
- Jmeter使用流程及简单分析监控
- 解决 composer 镜像不能访问的问题
- C++ STL之 vector的capacity和size属性区别
- 蓝桥杯9题
- 使用Nexus搭建Eclipse p2仓库镜像