IOS之自定义Cell

当系统提供的单元格样式不能满足需求时,常常自定义单元格。
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控件到单元格内部,调整好它们的位置。
IOS之自定义Cell_第1张图片
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;
IOS之自定义Cell_第2张图片
contentLabel的Lines设置为2
4.创建自定义单元格类ZiDingYiViewCell,具体操作为:右击工程名,在弹出的快捷菜单中选择New File...,选择Cocoa Touch Class文件模板,点击Next,在Subclass of中选择UITableviewCell为其父类,输入自定义单元格名,点击Next。
IOS之自定义Cell_第3张图片
IOS之自定义Cell_第4张图片

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

IOS之自定义Cell_第5张图片




你可能感兴趣的:(ios,tableview,界面)