读书频道 > 移动开发 > ios开发 > iOS软件开发揭秘:iPhone&iPad企业应用和游戏开发(第2版)
3.16 使用UILabel管理界面文本
2012-10-18 13:21:25     我来说两句 
收藏    我要投稿   
本书以严密的体系性提供了iPhone和iPad软件开发从入门到专家的系统性知识,并提供来源于真实项目的可重用商业代码。书中的每个实例都是项目经验的提炼,深入浅出地讲解iPhone和iPad软件开发的核心技术要点,基本...  立即去当当网订购

UILabel是iPhone用户界面最基本的控件,主要用来显示文本信息。在多数情况下,只需要使用UILabel显示一行信息,但有时也需要使用UILabel来显示多行信息,并且需要将文本的内容限定在一个指定的区域,这样就需要动态计算文本在指定的字体下占有的空间大小,如图3-32所示,文本在文字达到指定的宽度以后就自动折行显示。


 

程序将UILabel的numberOfLines设置为0,这样就可以显示多行文本,再通过调用textWidthByFontSize()函数获取文本在指定字体下具有的长度,再将这个长度重新赋值给UILabel的frame属性,接着调用sizeToFit()方法调整文本,代码如下。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWith Options:(NSDictionary *)launchOptions {   
   
 [window makeKeyAndVisible];
   label.lineBreakMode = UILineBreakModeWordWrap;
 label.numberOfLines = 0;

 NSString *ourText = @"Your life can be what you want it to be,Take it one day at a time."
 "Focus on your blessings,not your troubles."
 "Persist,have courage,be strong."
 "Live a life of serenity,not a life of regrets."
 "Your dreams are waiting to be realized.";
    CGFloat fitWidth = [self textWidthByFontSize:ourText FontName:@"Arial" FontSize:28];
   
 label.font = [UIFont systemFontOfSize:17.0f];
 CGSize labelSize;  
 labelSize = label.frame.size;
 blabel.text = [NSString stringWithFormat:@"Before resizing,width:%.2f, height:%.2f",
                labelSize.width,labelSize.height];
  
 CGRect labelFrame = label.frame;
 labelFrame.size.width = MIN(fitWidth,REQUIRED_WIDTH);
 label.frame = labelFrame;
 [label sizeToFit]; 
 labelSize = label.frame.size;
 alabel.text = [NSString stringWithFormat:@"After resizing,width:%.2f, height:%.2f",
       labelSize.width,labelSize.height];
    
 return YES;
}

- (CGFloat)textWidthByFontSize:(NSString *)text FontName:(NSString *)fontName FontSize:(int)fontSize{
   //[UIFont systemFontOfSize:fontSize]
 CGSize constraint = CGSizeMake(20000.0f,80);
 CGSize size = [text sizeWithFont:[UIFont fontWithName:fontName size: fontSize]
       constrainedToSize:constraint lineBreakMode:UILineBreakModeClip];
 CGFloat width = MAX(size.width,120.0f);
 return width;
}

一般创建UILabel是在Interface Builder中可视化地创建,但多数时候需要在程序中通过代码直接创建UILabel,代码如下。

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,120,30)];
myLabel.text = @"This Label Text";
myLabel.textColor = [UIColor whiteColor];
myLabel.backgroundColor = [UIColor clearColor];
myLabel.font = [UIFont fontWithName:@"Arial" size: 16];
[myLabel sizeToFit]; 
myLabel.frame = CGRectMake(self.view.frame.origin.x+2,
      (self.view.frame.origin.y-myLabel.bounds.size.height)/2+10,
                             120,30);
[self.view addSubview:myLabel];
[myLabel release];

本节相关的完整Xcode工程源代码文件请参考本书附带的光盘中的MultiLineText工程。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.15 管理界面字体
下一篇:3.17 管理界面颜色
相关文章
图文推荐
1.3.5 有限的屏幕尺
1.2 必备条件
精通iOS开发 : 第7版
3.5 iFunBox
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站