计算内容的文字的size
来源:互联网 发布:情义知多少 编辑:程序博客网 时间:2024/03/28 17:44
//根据换行方式和字体的大小,以及计算范围来确定字符串的size
- (CGSize)currentSize{
CGFloat version = [[UIDevicecurrentDevice].systemVersionfloatValue];
//计算size 7之后有新的方法
CGSize size;
if(version>=7.0) {
//得到一个设置字体属性的字典
NSDictionary *dic = [NSDictionarydictionaryWithObjectsAndKeys:[UIFontsystemFontOfSize:15],NSFontAttributeName,nil];
//optinos 前两个参数是匹配换行方式去计算,最后一个参数是匹配字体去计算
//attributes 传入使用的字体
//boundingRectWithSize 计算的范围
//_tweetBody是string
size = [_tweetBodyboundingRectWithSize:CGSizeMake(215,999)options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeadingattributes:diccontext:nil].size;
}else{
//ios7以前
//根据字号和限定范围还有换行方式计算字符串的size
//label中的font和linebreak要与此一致
//CGSizeMuibuttke(215,999) 横向最大计算到215纵向max 999
size = [_tweetBodysizeWithFont:[UIFontsystemFontOfSize:15]constrainedToSize:CGSizeMake(215,999)lineBreakMode:NSLineBreakByCharWrapping];
}
returnsize;
}
/***********************************/
#import"RootViewController.h"
#import "TweetCell.h"
#import "TweetModel.h"
#import "UIImageView+WebCache.h"
#import "GDataXMLNode.h"
@interfaceRootViewController()
{
NSMutableArray *_dataArray;
}
@end
@implementationRootViewController
#define kUrlString @"http://www.oschina.net/action/api/tweet_list?uid=0&pageIndex=2&pageSize=20"
- (id)initWithStyle:(UITableViewStyle)style
{
self= [superinitWithStyle:style];
if(self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
_dataArray = [[NSMutableArrayalloc]init];
[selfloadDataWithUrlString:kUrlString];
}
- (void)loadDataWithUrlString:(NSString*)urlString{
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:[NSURLURLWithString:urlString]];
request.delegate= self;
[request startAsynchronous];
}
#pragma mark - asi delegate
- (void)requestFinished:(ASIHTTPRequest*)request{
if(request.responseData) {
GDataXMLDocument *doc = [[GDataXMLDocumentalloc]initWithData:request.responseDataencoding:NSUTF8StringEncodingerror:nil];
NSArray *array = [docnodesForXPath:@"//tweet"error:nil];
for (GDataXMLElement*tweet in array) {
TweetModel *model = [[TweetModelalloc]init];
model.tweetAuthor= [selfgetValueWithElement:tweetchildName:@"author"];//调用函数
model.tweetHeadImageStr= [selfgetValueWithElement:tweetchildName:@"portrait"];//调用函数
model.tweetCommentCount= [selfgetValueWithElement:tweetchildName:@"commentCount"];//调用函数
model.tweetBody= [selfgetValueWithElement:tweetchildName:@"body"];//调用函数
model.tweetImageString= [selfgetValueWithElement:tweetchildName:@"imgSmall"];//调用函数
model.tweetTime =[selfgetValueWithElement:tweetchildName:@"pubDate"];//调用函数
[_dataArrayaddObject:model];
}
[self.tableViewreloadData];
}
}
- (void)requestFailed:(ASIHTTPRequest*)request{
NSLog(@"error:%@",request.error.localizedDescription);
}
- (NSString*)getValueWithElement:(GDataXMLElement*)element childName:(NSString*)name{
NSArray *array = [elementelementsForName:name];
GDataXMLElement *child = [arrayobjectAtIndex:0];
returnchild.stringValue;
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//要依据cell中各个控件的frame来计算每一行所需要的高度
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
TweetModel *model = [_dataArrayobjectAtIndex:indexPath.row];
CGSize size = [modelcurrentSize];
if(model.tweetImageString.length== 0) {
return 35+size.height+ 10 + 18 + 10;
}else
{
return 35+size.height+ 10 +55+ 10 + 18 + 10;
}
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
{
//#warning Potentially incomplete method implementation.
// Return the number of sections.
return1;
}
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
//#warning Incomplete method implementation.
// Return the number of rows in the section.
return_dataArray.count;
}
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
staticNSString*CellIdentifier = @"tweet";
TweetCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell =[[[NSBundlemainBundle]loadNibNamed:@"TweetCell"owner:selfoptions:nil]lastObject];
}
TweetModel *model = [_dataArrayobjectAtIndex:indexPath.row];
cell.tweetBodyLabel.font= [UIFontsystemFontOfSize:15];
cell.tweetBodyLabel.numberOfLines= 0;
cell.tweetBodyLabel.lineBreakMode= NSLineBreakByCharWrapping;
cell.tweetBodyLabel.text= model.tweetBody;
CGSize size = [modelcurrentSize];
if(model.tweetHeadImageStr.length== 0) {
//没有微博图片
cell.tweetHeadImageView.hidden= YES;
cell.tweetBodyLabel.frame= CGRectMake(76,35, size.width, size.height);
cell.tweetTimeLabel.frame= CGRectMake(76,35+size.height+10,184,18);
}else
{
//有微博图片
cell.tweetHeadImageView.hidden= NO;
cell.tweetBodyLabel.frame= CGRectMake(76,35, size.width, size.height);
cell.tweetTimeLabel.frame= CGRectMake(76,35+size.height+10,140,55);
cell.tweetTimeLabel.frame= CGRectMake(76, cell.tweetImageView.frame.origin.y+55+10,184,18);
//为微博图片赋值
[cell.tweetImageViewsetImageWithURL:[NSURLURLWithString:model.tweetImageString]];
}
cell.tweetAuthorLabel.text= model.tweetAuthor;
[cell.tweetHeadImageViewsetImageWithURL:[NSURLURLWithString:model.tweetHeadImageStr]];
cell.tweetTimeLabel.text= model.tweetTime;
returncell;
}
#import "TweetCell.h"
#import "TweetModel.h"
#import "UIImageView+WebCache.h"
#import "GDataXMLNode.h"
@interfaceRootViewController()
{
NSMutableArray *_dataArray;
}
@end
@implementationRootViewController
#define kUrlString @"http://www.oschina.net/action/api/tweet_list?uid=0&pageIndex=2&pageSize=20"
- (id)initWithStyle:(UITableViewStyle)style
{
self= [superinitWithStyle:style];
if(self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
_dataArray = [[NSMutableArrayalloc]init];
[selfloadDataWithUrlString:kUrlString];
}
- (void)loadDataWithUrlString:(NSString*)urlString{
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:[NSURLURLWithString:urlString]];
request.delegate= self;
[request startAsynchronous];
}
#pragma mark - asi delegate
- (void)requestFinished:(ASIHTTPRequest*)request{
if(request.responseData) {
GDataXMLDocument *doc = [[GDataXMLDocumentalloc]initWithData:request.responseDataencoding:NSUTF8StringEncodingerror:nil];
NSArray *array = [docnodesForXPath:@"//tweet"error:nil];
for (GDataXMLElement*tweet in array) {
TweetModel *model = [[TweetModelalloc]init];
model.tweetAuthor= [selfgetValueWithElement:tweetchildName:@"author"];//调用函数
model.tweetHeadImageStr= [selfgetValueWithElement:tweetchildName:@"portrait"];//调用函数
model.tweetCommentCount= [selfgetValueWithElement:tweetchildName:@"commentCount"];//调用函数
model.tweetBody= [selfgetValueWithElement:tweetchildName:@"body"];//调用函数
model.tweetImageString= [selfgetValueWithElement:tweetchildName:@"imgSmall"];//调用函数
model.tweetTime =[selfgetValueWithElement:tweetchildName:@"pubDate"];//调用函数
[_dataArrayaddObject:model];
}
[self.tableViewreloadData];
}
}
- (void)requestFailed:(ASIHTTPRequest*)request{
NSLog(@"error:%@",request.error.localizedDescription);
}
- (NSString*)getValueWithElement:(GDataXMLElement*)element childName:(NSString*)name{
NSArray *array = [elementelementsForName:name];
GDataXMLElement *child = [arrayobjectAtIndex:0];
returnchild.stringValue;
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//要依据cell中各个控件的frame来计算每一行所需要的高度
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
TweetModel *model = [_dataArrayobjectAtIndex:indexPath.row];
CGSize size = [modelcurrentSize];
if(model.tweetImageString.length== 0) {
return 35+size.height+ 10 + 18 + 10;
}else
{
return 35+size.height+ 10 +55+ 10 + 18 + 10;
}
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
{
//#warning Potentially incomplete method implementation.
// Return the number of sections.
return1;
}
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
//#warning Incomplete method implementation.
// Return the number of rows in the section.
return_dataArray.count;
}
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
staticNSString*CellIdentifier = @"tweet";
TweetCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell =[[[NSBundlemainBundle]loadNibNamed:@"TweetCell"owner:selfoptions:nil]lastObject];
}
TweetModel *model = [_dataArrayobjectAtIndex:indexPath.row];
cell.tweetBodyLabel.font= [UIFontsystemFontOfSize:15];
cell.tweetBodyLabel.numberOfLines= 0;
cell.tweetBodyLabel.lineBreakMode= NSLineBreakByCharWrapping;
cell.tweetBodyLabel.text= model.tweetBody;
CGSize size = [modelcurrentSize];
if(model.tweetHeadImageStr.length== 0) {
//没有微博图片
cell.tweetHeadImageView.hidden= YES;
cell.tweetBodyLabel.frame= CGRectMake(76,35, size.width, size.height);
cell.tweetTimeLabel.frame= CGRectMake(76,35+size.height+10,184,18);
}else
{
//有微博图片
cell.tweetHeadImageView.hidden= NO;
cell.tweetBodyLabel.frame= CGRectMake(76,35, size.width, size.height);
cell.tweetTimeLabel.frame= CGRectMake(76,35+size.height+10,140,55);
cell.tweetTimeLabel.frame= CGRectMake(76, cell.tweetImageView.frame.origin.y+55+10,184,18);
//为微博图片赋值
[cell.tweetImageViewsetImageWithURL:[NSURLURLWithString:model.tweetImageString]];
}
cell.tweetAuthorLabel.text= model.tweetAuthor;
[cell.tweetHeadImageViewsetImageWithURL:[NSURLURLWithString:model.tweetHeadImageStr]];
cell.tweetTimeLabel.text= model.tweetTime;
returncell;
}
0 0
- 计算内容的文字的size
- 根据文字内容计算size
- IOS中计算文字的Size大小
- IOS中计算文字的Size大小
- iOS7 计算文字的Size和frame 代码片段
- iOS 计算文字内容的高度
- 计算text的size
- 计算UILabel的size
- 根据Label的文字内容动态计算Label高度
- 计算以指定字体和字号输出指定文字,所需要的size 辅助函数
- 计算对象Size的方法
- iOS计算NSString的size
- 计算Label的Size大小
- 计算文字文字的长度
- 根据文字内容和设定maxSize计算文字的width、height
- 根据文字设置label的size
- 计算文字的尺寸
- 计算文字的高度
- 将图片设置为背景颜色
- 2014后半年计划
- 设置圆角
- leetcode - Median of Two Sorted Arrays
- JFreeChart 使用一 饼图之高级特性
- 计算内容的文字的size
- hdu 5073 Galaxy
- android开发环境搭建及环境变量的配置
- 动态计算行高
- Leetcode: Find Minimum in Rotated Sorted Array
- 黑马程序员——java中的反射
- VC中判断定时器是否已经开启的办法
- SOJ--Zig-Zag
- u-boot-2014.10移植第5天----LED、button和beep裸机程序