41.小项目:微博 M部分

---------- CZStatuse.h ----------

#import <Foundation/Foundation.h>

@interface CZStatuse : NSObject

@property (nonatomic, copy) NSString *name;

@property (nonatomic, copy) NSString *icon;

@property (nonatomic, copy) NSString *text;

@property (nonatomic, copy) NSString *picture;

@property (nonatomic, assign) BOOL vip;

- (instancetype)initWithDict:(NSDictionary *)dict;

+ (instancetype)statuseWithDict:(NSDictionary *)dict;

@end

---------- CZStatuse.m ----------

#import "CZStatuse.h"

@implementation CZStatuse

- (instancetype)initWithDict:(NSDictionary *)dict

{

if (self = [super init])

{

[self setValuesForKeysWithDictionary:dict];

}

return self;

}

+ (instancetype)statuseWithDict:(NSDictionary *)dict

{

return [[self alloc] initWithDict:dict];

}

@end

---------- CZStatuseFrame.h ----------

#import <Foundation/Foundation.h>

#define CZNameFont [UIFont systemFontOfSize:14]

#define CZTextFont [UIFont systemFontOfSize:14]

@class CZStatuse;

@interface CZStatuesFrame : NSObject

@property (nonatomic, assign, readonly) CGRect iconF;

@property (nonatomic, assign, readonly) CGRect nameF;

@property (nonatomic, assign, readonly) CGRect textF;

@property (nonatomic, assign, readonly) CGRect pictureF;

@property (nonatomic, assign, readonly) CGRect vipF;

@property (nonatomic, assign) CGFloat cellHeight;

@property (nonatomic, strong) CZStatuse *statuse;

@end

---------- CZStatuseFrame.m ----------

#import "CZStatuesFrame.h"

#import "CZStatuse.h"

@implementation CZStatuesFrame

- (void)setStatuse:(CZStatuse *)statuse

{

_statuse = statuse;

CGFloat padding = 10;

CGFloat iconX = padding;

CGFloat iconY = padding;

CGFloat iconW = 30;

CGFloat iconH = 30;

_iconF = CGRectMake(iconX, iconY, iconW, iconH);

CGSize nameSize = [self sizeWithText:_statuse.name andFont:CZNameFont andMaxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];

CGFloat nameX = CGRectGetMaxX(self.iconF) + padding;

CGFloat nameY = iconY + (iconH - nameSize.height) * 0.5;

_nameF = CGRectMake(nameX, nameY, nameSize.width, nameSize.height);

CGFloat vipX = CGRectGetMaxX(self.nameF) + padding;

CGFloat vipY = nameY;

CGFloat vipW = 14;

CGFloat vipH = 14;

_vipF = CGRectMake(vipX, vipY, vipW, vipH);

CGFloat textX = iconX;

CGFloat textY = CGRectGetMaxY(self.iconF) + padding;

CGSize textSize = [self sizeWithText:_statuse.text andFont:CZTextFont andMaxSize:CGSizeMake(300, MAXFLOAT)];

_textF = CGRectMake(textX, textY, textSize.width, textSize.height);

if (_statuse.picture)

{

CGFloat pictureX = textX;

CGFloat pictureY = CGRectGetMaxY(self.textF) + padding;

CGFloat pictureW = 100;

CGFloat pictureH = 100;

_pictureF = CGRectMake(pictureX, pictureY, pictureW, pictureH);

self.cellHeight = CGRectGetMaxY(self.pictureF) + padding;

}

else

{

self.cellHeight = CGRectGetMaxY(self.textF) + padding;

}

}

- (CGSize)sizeWithText:(NSString *)text andFont:(UIFont *)font andMaxSize:(CGSize)maxSize

{

NSDictionary *attrs = @{NSFontAttributeName : font};

CGSize size = [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;

return size;

}

@end

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

时间: 2024-10-24 10:34:58

41.小项目:微博 M部分的相关文章

Android开发不得不看的11个实战小项目

是不是想学Android开发(http://www.maiziedu.com/course/android-px/)却不知道如何下手?懂得一点点入门基础知识却无法应用到实际开发中?看相关资料觉得都懂了实际动手却发现什么都不懂?本地搭建Android开发环境太麻烦? 如果你有以上的各种问题,那么今天小编推荐的Android开发的这11个小项目,你一定要看!! 因为,这些实战项目都是基于google 官方的API Demos制作而成,而且全部配有Android在线开发环境,你可以随时动手跟着课程操作

盘点三个网络赚零花钱的小项目,傻瓜式操作

今天,写一篇比较特别的日志,咱们来盘点三个赚零花钱的小项目,都是“傻瓜式”操作. 这几个小项目,虽说赚不了太多的钱,但是却是一个可以锻炼执行力的好方法. 每一个项目操作都非常的简单,边锻炼执行力,边收钱,也是一种不错的体验. 废话不多说,咱们直接进入主题啊! 一,支付宝借条,可赚零花钱,也可赚大钱 支付宝有打借条的功能,本来他们开发这个,只是针对于熟人之前借钱的. 不过,无心插柳柳成荫,没成想,这个功能火的一塌糊涂,完全带火了陌生人之间的借贷业务. 如何利用支付宝借条赚钱? 其实就跟放贷是一样的

傻瓜式操作的三个网络赚零花钱的小项目

今天,写一篇比较特别的日志,咱们来盘点三个赚零花钱的小项目,都是"傻瓜式"操作. 这几个小项目,虽说赚不了太多的钱,但是却是一个可以锻炼执行力的好方法. 每一个项目操作都非常的简单,边锻炼执行力,边收钱,也是一种不错的体验. 废话不多说,咱们直接进入主题啊! 一,支付宝借条,可赚零花钱,也可赚大钱 支付宝有打借条的功能,本来他们开发这个,只是针对于熟人之前借钱的. 不过,无心插柳柳成荫,没成想,这个功能火的一塌糊涂,完全带火了陌生人之间的借贷业务. 如何利用支付宝借条赚钱? 其实就跟放

轮播特效小项目总结

首先谈谈关于还原设计稿学到的一些东西,比如说网页设计稿和交互效果做好了,拿给我们在网页上实现,那如何实现呢,我就说说自己的鄙见吧. 第一,思考整个设计图的层次,比如说分别由哪些部分构成,针对这些"块",怎么设计div的结构,怎么把静态页面有条理的编写出来. 第二,思考如何实现设计图的交互效果,在逻辑上分析,比如用JS绑定哪些事件,采用什么样的函数实现怎么样的效果等等. 第三,代码的优化性考虑,怎么让代码简洁明了,方便维护. 以上就是我现在阶段对页面还原的一些看法,也许比较浅显,我也希望

模拟XShell的小项目

不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可以远端操作linux的服务器了,十分方便. 这次这个模拟XShell的小项目就是类似的功能 执行流程: windows客户端输入命令,通过网络传输到linux服务器端上,linux服务器端执行命令,将执行命令产生的结果保存进文件,然后再将文件传输回windows客户端进行展示. 问题思考:真的有必要

小项目特供 贪吃蛇游戏(基于C语言)

C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第二天写了第二版和第三版. 相信C语言写个小游戏或小项目是大多数计算机相关专业的学生都做的事情,但是作为一个数学专业的学生,我们教研室的老师对C语言的要求也就比较低了,大一没有让我们做个小项目实践一次.至今为止用C/C++做过的三个小项目(大作业),一个是外校同学让我帮忙写的学生信息管理系统(天呐,这

【PHP小项目使用MVC架构】

小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目uml图解概述: 在此之前,需要先创建数据库empmanage,同时创建两张表,一张表为admin,令一张表为emp,创建admin表的sql语句: create table admin ( id int primary key, name varchar(32) not null, password

Android的SQLiteDataBase小项目,实现user类登陆注册以及student类增删改查

关于SQLiteDataBase这块,大体有两种主要的实现方式,一种是不使用Helper类的方式,此种方式存在一个弊端,即不能oncreate两次,如果重复使用oncreate的button,则会报错,所以为了避免这种错误,在此项目中使用类继承SQLiteOpenHelper的方式进行SQLite3小型数据库的小项目开发,简单的实现登陆注册,以及对特定vo类的增删改查,中间还夹杂了ListView,ArrayAdapter,以及Intent的散知识点. 以下为正文:首先介绍以下我写的项目的框架,

个人小项目——Java实现WC功能

这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文本实现一次重写,用String类的replace方法将空格用其他字符替换,然后可以实现字母数,单词数和行数的统计.另一种方法没有重新写文本,直接在缓冲区中处理文本,除上面三个之外还统计了空格数,字符总数和标点符号数. 2.优缺点比较 方法一可以统计出空行,而方法二由于是使用bufferedReade