当系统提供的单元格样式不能满足需求时,常常自定义单元格。1.采用Single View Application工程模板新建一个工程,打开故事版,在View Controller Scene中删除View Controller,然后再从控件库中拖一个Table View Controller到设计界面,由于初始视图控制器被删除了,我们需要设置表视图控制器为初始视图控制器:选中View Controller,打开右边的属性检查器,选中Is Initial View Controller复选框就可以了。 然后将ViewController的父类从原来的UIViewController修改为UITableViewController。在故事板中选中View Controller,打开右边的标识检查器,在Class下拉列表中选中ViewController,工程就初步创建好了。 2.从对象库中拖一个ImageView和两个Label控件到单元格内部,调整好它们的位置。 3.添加完成之后,需要再添加Auto Layout约束。 (1)imageView 的 autoLayout 约束为: imageView 左边离 contentView 左边 20; imageView 上边离 contentView 上边 20; imageView 的 width 和 height 为 80(cell高度设为固定值120,这样imageView下边离contentView下边也为20); (2)titleLabel 的 autoLayout 约束为: titleLabel 左边离 imageView 右边 20; titleLabel 上边和 imageView 上边在同一只线上,离contentView 上边 20; titleLabel 右边离 contentView 右边 24(防止滚动条遮住title中的文字); titleLabel 的高度等于 28; (3)contentLabel 的约束为: contentLabel 左边和 titleLabel 左边在同一直线上,离 imageView 右边 20; contentLabel 上边里 titleLabel 8; contentLabel 右边离 contentView 右边 24; contentLabel 的高度等于 44;contentLabel的Lines设置为24.创建自定义单元格类ZiDingYiViewCell,具体操作为:右击工程名,在弹出的快捷菜单中选择New File...,选择Cocoa Touch Class文件模板,点击Next,在Subclass of中选择UITableviewCell为其父类,输入自定义单元格名,点击Next。
5.在Storyboard中选择Table View下的ZIDingYiCell,然后打开右边的标识检查器,在Class下拉列表中选择ZiDingYiViewCell。
为Label和ImageView控件连接输出口。
//ZiDingYiViewCell.h #import <UIKit/UIKit.h> @interface ZiDingYiViewCell : UITableViewCel @property (weak, nonatomic) IBOutlet UIImageView *header; @property (weak, nonatomic) IBOutlet UILabel *title; @property (weak, nonatomic) IBOutlet UILabel *content; @end
6.然后打开ViewController.m文件
//ViewController.m #import "ViewController.h" #import "ZiDingYiViewCell.h" @interface ViewController () @property (nonatomic, strong) NSArray *titles; @property (nonatomic, strong) NSArray *contents; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = 18; UIView *headerView = [[UIView alloc] initWithFrame:frame]; [self.tableView setTableHeaderView:headerView]; self.titles = @[@"谈到“创新”,李克强与瑞士联邦主席相谈甚欢", @"中纪委:天涯无净土,各地区各部门没有没问题的", @"51放假安排出炉:网友晒拼假攻略 业界再议恢复7天长假"]; self.contents = @[@"李克强总理4月7日会见瑞士联邦主席施奈德—阿曼。谈到“创新”,两人相谈甚欢,足足谈了近20分钟。", @"中央纪委监察部网站今日在官网刊出《把握运用“五条体会” 推进全面从严治党》系列文章最新一篇。文章指出,三年来,31个省区市都有省部级领导干部受到执纪审查、纪律处分,形成了有力震慑。", @"[51放假安排出炉]马上就到劳动节小长假了,你想好去哪了吗?这个马上=19天,其中还有4天双休。是不是很心动啊"]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 3; } //设置单元格高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 120; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ZiDingYiViewCell *cell = (ZiDingYiViewCell *)[tableView dequeueReusableCellWithIdentifier:@"ZiDingYiCell"]; if (cell == nil) { cell = [[ZiDingYiViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ZiDingYiCell"]; } cell.header.image = [UIImage imageNamed:@"image.jpg"]; cell.title.text = [self.titles objectAtIndex:indexPath.row]; cell.content.text = [self.contents objectAtIndex:indexPath.row]; return cell; } @end