自定义cell
import “MainViewController.h”
import “MyCell.h”
import “BetterCell.h”
import “Student.h”
define WIDTH self.view.frame.size.width
define HEIGHT self.view.frame.size.height
@interface MainViewController ()
import “MyCell.h”
define WIDTH self.contentView.frame.size.width
define HEIGHT self.contentView.frame.size.height
@implementation MyCell
pragma mark 重写cell初始化方法
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self=[super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// 完成对属性视图的创建,但是一般创建之后不给属性视图frame
[self createView];
}
return self;
}
pragma mark 属性视图进行创建
-(void)createView{
// 先创建左imageView
self.leftImageView=[[UIImageView alloc] init];
self.leftImageView.backgroundColor=[UIColor redColor];
// 添加
// cell上有一个专门用来显示空间的视图,叫contentView,我们把视图就放到contentView上进行显示
[self.contentView addSubview:self.leftImageView];
[self.leftImageView release];
// 上label
self.upLabel=[[UILabel alloc] init];
self.upLabel.backgroundColor=[UIColor orangeColor];
[self.contentView addSubview:self.upLabel];
self.upLabel.textColor=[UIColor blackColor];
self.upLabel.font=[UIFont systemFontOfSize:20];
self.upLabel.layer.borderWidth=1;
self.upLabel.layer.cornerRadius=10;
self.upLabel.layer.masksToBounds=YES;
self.upLabel.textAlignment=NSTextAlignmentCenter;
[self.upLabel release];
// 下label
self.downLabel=[[UILabel alloc] init];
self.downLabel.backgroundColor=[UIColor greenColor];
[self.contentView addSubview:self.downLabel];
self.downLabel.textColor=[UIColor blackColor];
self.downLabel.font=[UIFont systemFontOfSize:20];
self.downLabel.layer.borderWidth=1;
self.downLabel.layer.cornerRadius=10;
self.upLabel.layer.masksToBounds=YES;
self.downLabel.textAlignment=NSTextAlignmentCenter;
[self.downLabel release];
// 右imageView
self.rightImageView=[[UIImageView alloc] init];
self.rightImageView.backgroundColor=[UIColor yellowColor];
[self.contentView addSubview:self.rightImageView];
[self.rightImageView release];
}
pragma mark 这个方法是cell显示之前走得最后的一个方法,一般会在这个方法里设置所有的属性视图的大小和尺寸,这个方法会用在图片文字的自适应的设置上
-(void)layoutSubviews{
// 重写了父类的layoutSubviews方法,如果想要这个方法发挥正常的功能,别忘了[super layoutSubviews]
[super layoutSubviews];
// 对所有属性视图的位置和大小设置
self.leftImageView.frame=CGRectMake(0,0,WIDTH/3,HEIGHT);
self.upLabel.frame=CGRectMake(WIDTH/3,0,WIDTH/3,HEIGHT/2);
self.downLabel.frame=CGRectMake(WIDTH/3,HEIGHT/2,WIDTH/3,HEIGHT/2);
self.rightImageView.frame=CGRectMake(WIDTH/3*2,0,WIDTH/3,HEIGHT);
}
(void)dealloc
{
[_downLabel release];
[_upLabel release];
[_leftImageView release];
[_rightImageView release];
[super dealloc];
}(void)awakeFromNib {
// Initialization code
}(void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];// Configure the view for the selected state
}
import “BetterCell.h”
define WIDTH self.contentView.frame.size.width
define HEIGHT self.contentView.frame.size.height
@implementation BetterCell
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self=[super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self createView];
}
return self;
}
-(void)createView{
self.oneImageView=[[UIImageView alloc] init];
[self.contentView addSubview:self.oneImageView];
[self.oneImageView release];
self.twoImageView=[[UIImageView alloc] init];
[self.contentView addSubview:self.twoImageView];
[self.twoImageView release];
self.threeImageView=[[UIImageView alloc] init];
[self.contentView addSubview:self.threeImageView];
[self.threeImageView release];
self.leftLabel=[[UILabel alloc] init];
[self.contentView addSubview:self.leftLabel];
self.leftLabel.layer.borderWidth=1;
self.leftLabel.layer.cornerRadius=10;
self.leftLabel.layer.masksToBounds=YES;
self.leftLabel.font=[UIFont systemFontOfSize:20];
self.leftLabel.textAlignment=NSTextAlignmentCenter;
self.leftLabel.backgroundColor=[UIColor redColor];
[self.leftLabel release];
self.rightLabel=[[UILabel alloc] init];
[self.contentView addSubview:self.rightLabel];
self.rightLabel.layer.borderWidth=1;
self.rightLabel.layer.cornerRadius=10;
self.rightLabel.layer.masksToBounds=YES;
self.rightLabel.font=[UIFont systemFontOfSize:20];
self.rightLabel.textAlignment=NSTextAlignmentCenter;
self.rightLabel.backgroundColor=[UIColor greenColor];
[self.rightLabel release];
}
-(void)layoutSubviews{
self.oneImageView.frame=CGRectMake(0,0,WIDTH/3,HEIGHT/2);
self.twoImageView.frame=CGRectMake(WIDTH/3, 0, WIDTH/3, HEIGHT/2);
self.threeImageView.frame=CGRectMake(WIDTH/3*2, 0, WIDTH/3, HEIGHT/2);
self.leftLabel.frame=CGRectMake(0, HEIGHT/2, WIDTH/2, HEIGHT/2);
self.rightLabel.frame=CGRectMake(WIDTH/2, HEIGHT/2, WIDTH/2, HEIGHT/2);
}
- (void)dealloc
{
[_leftLabel release];
[_rightLabel release];
[_oneImageView release];
[_threeImageView release];
[_twoImageView release];
[super dealloc];
}
@end
Student
import
import “Student.h”
@implementation Student
- (void)dealloc
{
[_hobby release];
[_name release];
[_sex release];
[_phone release];
[super dealloc];
}
// 如果使用KVC,这个方法一定要写,避免了因为Key和属性名不匹配造成不必要的崩溃!使用KVC进行筛选,写属性的都是我想要的属性,走这个方法的不是我要的
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
}