@implementation HPMailDirectDrawCell
-(instancetype)init {
self = [super init];
if(self) {
[self setup];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self) {
[self setup];
}
return self;
}
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self) {
[self setup];
}
return self;
}
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self) {
[self setup];
}
return self;
}
-(void)setup {
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cellTapped:)];
[self addGestureRecognizer:gesture];
}
-(IBAction)cellTapped:(UIGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:self];
if(location.x >= 0 && location.x <= 20 && location.y >= 30) {
self.isMailSelected = !self.isMailSelected;
[self setNeedsDisplayInRect:CGRectMake(0, 30, 20, self.frame.size.height)];
//[self setNeedsDisplay];
}
}
- (void)awakeFromNib {
}
-(void)drawRect:(CGRect)rect {
{
UIImage *statusImage = nil;
switch(self.mailStatus) {
case HPMailDirectDrawCellStatusRead:
statusImage = [UIImage imageNamed:@"bolt"];
break;
case HPMailDirectDrawCellStatusReplied:
statusImage = [UIImage imageNamed:@"second"];
break;
case HPMailDirectDrawCellStatusUnread:
default:
statusImage = [UIImage imageNamed:@"bolt_selected"];
break;
}
CGRect statusRect = CGRectMake(8, 4, 12, 12);
[statusImage drawInRect:statusRect];
}
{
UIImage *attachmentImage = nil;
if(self.hasAttachment) {
attachmentImage = [UIImage imageNamed:@"mail_attachment"];
}
CGRect statusRect = CGRectMake(8, 20, 12, 12);
[attachmentImage drawInRect:statusRect];
}
{
UIImage *selectedImage = [UIImage imageNamed:(self.isMailSelected ? @"mail_selected": @"mail_unselected")];
CGRect selectedRect = CGRectMake(8, 36, 12, 12);
[selectedImage drawInRect:selectedRect];
}
float fontSize = 13;
CGFloat width = rect.size.width;
CGFloat remainderWidth = width - 28;
{
CGFloat emailWidth = remainderWidth - 72;
UIFont *emailFont=[UIFont boldSystemFontOfSize:fontSize];
NSDictionary *attrs = @{ NSFontAttributeName: emailFont };
[self.email drawInRect:CGRectMake(28, 4, emailWidth, 16) withAttributes:attrs];
}
{
UIFont *stdFont = [UIFont systemFontOfSize:fontSize];
NSDictionary *attrs = @{ NSFontAttributeName: stdFont };
[self.subject drawInRect:CGRectMake(28, 24, remainderWidth, 16) withAttributes:attrs];
[self.snippet drawInRect:CGRectMake(28, 44, remainderWidth, 16) withAttributes:attrs];
}
{
UIFont *verdana = [UIFont fontWithName:@"Verdana" size:10];
NSDictionary *attrs = @{ NSFontAttributeName: verdana };
[self.date drawInRect:CGRectMake(width - 60, 4, 60, 16) withAttributes:attrs];
}
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
//self.isMailSelected = selected;
//[self setNeedsDisplayInRect:CGRectMake(8, 36, 12, 12)];
}
绘制自定义控件代码笔记
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- UIView+SGFrame.h #import @interface UIView (SGFrame) @pro...
- 前言 最近忙完项目比较闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助。博主非科班出身,一些...
- 前言 之前在windows下搭建过一次Jenkins,后来由于一直没用就慢慢遗忘了。一起搭建Jenkins+pyt...
