Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712428
  • 博文数量: 102
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1748
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-23 15:42
个人简介

寻找严肃、沉默和专注的力量。

文章分类

全部博文(102)

文章存档

2015年(26)

2014年(8)

2013年(68)

分类: iOS平台

2015-06-16 15:57:19

NSStringDrawingOptions

文本绘制选项。

enum {

   NSStringDrawingTruncatesLastVisibleLine= 1 << 5,

   NSStringDrawingUsesLineFragmentOrigin= 1 << 0,

   NSStringDrawingUsesFontLeading= 1 << 1,

   NSStringDrawingUsesDeviceMetrics= 1 << 3,

};

typedef NSInteger NSStringDrawingOptions;

常量

NSStringDrawingTruncatesLastVisibleLine

如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果指定了NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。

NSStringDrawingUsesLineFragmentOrigin

绘制文本时使用 line fragement origin 而不是 baseline origin。

Theorigin specified when drawing the string is the line fragment origin and notthe baseline origin.

NSStringDrawingUsesFontLeading

计算行高时使用行间距。(译者注:字体大小+行间距=行高)

NSStringDrawingUsesDeviceMetrics

计算布局时使用图元字形(而不是印刷字体)。

Usethe image glyph bounds (instead of the typographic bounds) when computinglayout.

点击(此处)折叠或打开

  1. // 获取字符串的大小 ios7
  2.  
  3. - (CGSize)getStringRect:(NSString*)aString
  4. {
  5.     CGSize size;
  6.     
  7.     NSAttributedString* atrString = [[NSAttributedStringalloc] initWithString:aString];
  8.     
  9.     NSRange range = NSMakeRange(0, atrString.length);
  10.     
  11.     NSDictionary* dic = [atrString attributesAtIndex:0 effectiveRange:&range];
  12.     
  13.     size = [aString boundingRectWithSize:CGSizeMake(237, 200) options:NSStringDrawingUsesLineFragmentOriginattributes:diccontext:nil].size;
  14.     
  15.     return size;
  16.     
  17. }
  18.  
  19.  
  20. // 获取字符串的大小 ios6
  21. - (CGSize)getStringRect_:(NSString*)aString
  22. {
  23.     CGSize size;
  24.     
  25.     UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13];
  26.     size=[aString sizeWithFont:nameFont constrainedToSize:CGSizeMake(237, 200) lineBreakMode:NSLineBreakByCharWrapping];
  27.     return size;
  28. }

分类的方式

点击(此处)折叠或打开

  1. #import "UILabel+StringFrame.h"

  2. @implementation UILabel (StringFrame)

  3. - (CGSize)boundingRectWithSize:(CGSize)size
  4. {
  5.     NSDictionary *attribute = @{NSFontAttributeName: self.font};
  6.     
  7.     CGSize retSize = [self.text boundingRectWithSize:size
  8.                                              options:\
  9.                       NSStringDrawingTruncatesLastVisibleLine |
  10.                       NSStringDrawingUsesLineFragmentOrigin |
  11.                       NSStringDrawingUsesFontLeading
  12.                                           attributes:attribute
  13.                                              context:nil].size;
  14.     
  15.     return retSize;
  16. }


  17. @end


点击(此处)折叠或打开

  1. // 字符串
  2.     NSString *str = @"日落时分,沏上一杯山茶,听一曲意境空远的《禅》,心神随此天籁,沉溺于玄妙的幻境里。仿佛我就是那穿梭于葳蕤山林中的一只飞鸟,时而盘旋穿梭,时而引吭高歌;仿佛我就是那潺潺流泻于山涧的一汪清泉,涟漪轻盈,浩淼长流;仿佛我就是那竦峙在天地间的一座山峦,伟岸高耸,从容绵延。我不相信佛,只是喜欢玄冥空灵的梵音经贝,与慈悲淡然的佛境禅心,在清欢中,从容幽静,自在安然。一直向往走进青的山,碧的水,体悟山水的绚丽多姿,领略草木的兴衰荣枯,倾听黄天厚土之声,探寻宇宙自然的妙趣。走进了山水,也就走出了喧嚣,给身心以清凉,给精神以沉淀,给灵魂以升华。";
  3.     
  4.     // 初始化label
  5.     UILabel *label = [UILabel new];
  6.     label.backgroundColor = [UIColor whiteColor];
  7.     [self.view addSubview:label];
  8.     
  9.     // label获取字符串
  10.     label.text = str;
  11.     

  12.     // label获取字体
  13.     label.font = [UIFont fontWithName:nil size:18];
  14.     
  15.     // 根据获取到的字符串以及字体计算label需要的size
  16.     CGSize size = [label boundingRectWithSize:CGSizeMake(320, 0)];
  17.     
  18.     // 设置无限换行
  19.     label.numberOfLines = 0;
  20.     
  21.     // 设置label的frame
  22.     label.frame = CGRectMake(0.0f, 50.0f, size.width, size.height)




阅读(2345) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~