苹果开发 笔记(45)UILabel

原创 2015年07月07日 21:16:23

这段时间除了使用一些组件干事,大部分时候在熟悉一些组件配搭组合使用,当中遇到的一些问题,采用的方案还没到一个好阶段。不过在使用的过程当中 慢慢熟悉了一些。能处理一些动画和绘图方面使用,也能组合一些类,相比前几个月懵懂自己进步了一点。只是最近有点懒,精力不是特别集中,因此停止了几天的代码工作,身边事情比较多。
了解不同的app对ios处理的方案相当要集中熟悉度要求比较多一点。新闻类方面,注重一些文字排版方面技巧和经验。图片类app会注重图片效果方面处理技巧和经验。这两个方面对我而言还是相对使用较小。文字类的排版还是经常碰到的。比如一些阅读类的应用app 腾讯、网易的新闻客户端这些都是涉及到文字类方面,因此对排版要求类似coreText,ios7后续TextKit 等(暂时还缺乏对这些了解)。
例如 UILable 的用法涉及内容有如下
1.创建与显示
2.文本内容和字体设置
3.背景颜色指定
4.计算高度。
5.行数指定和计算

UIlabel可以显示指定的行数,设置numberOfLines =0 则为不限制行数,因为UIlabel不是Icontrol的方面,没有addTarget和block等方法处理相应的行为机制,但支持扩展手势触控等方法处理点击,不过对于html 超链接响应情况,在之前看过是需要采用第三方处理机制处理。

在日常使用过程,对于文本方法计算高度的用法很常用,ios提供相应计算方法。如属于NSString的类别(NSStringDrawing.h)该类为此提供相应处理解决方案,提供计算高度和文本大小的方法。
注意到 过去ios6的版本 提供sizeWithFont方法 在ios 7.0 已经不生效,需要改成其他方法处理。boundingRectWithSize 后续推荐的方式。

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs NS_AVAILABLE_IOS(7_0);
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);
self.label = [[UILabel alloc]initWithFrame:CGRectMake(85, 0, self.view.frame.size.width-85, 70)];
    [self.panel addSubview:self.label];
    self.label.text = @"这个人很懒,什么都没留下";
    self.label.numberOfLines = 3;
    self.label.lineBreakMode = NSLineBreakByCharWrapping;
    self.label.font =[UIFont systemFontOfSize:14];
   // self.label.userInteractionEnabled = YES; 需要的时候才打开
    [self.view addSubview:self.panel];

下面计算一下高度,当采用默认字体的时候,字体号为17,其高度约为20, 字体为14的时候,高度约为16~17之间

字体号:17 ,文本高:20
字体号:16 ,文本高:19
字体号:15 ,文本高:17~18 之间
字体号:14, 文本高:16~17 之间

这些字体是默认字体,要是采用其他字体或者设置粗体 ,估计值会受到一些浮动影响。

[self getTextHeight:17 width:self.view.frame.size.width-85];   
-(void) getTextHeight:(CGFloat) fontSize width:(CGFloat) textWidth
{

    NSDictionary *dic =@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]};
    CGSize curSize = CGSizeMake(textWidth, MAXFLOAT);
    CGRect rect =   [self.label.text boundingRectWithSize:curSize
                                                  options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
                                               attributes:dic context:nil];

    NSString *str = NSStringFromCGRect(rect);
    NSLog(@"%@",str);

}

不过这个方法使用不算直观,很想了解一下底层是怎样计算获取到文本的大小。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

苹果开发之路--Swift之UILabel

好久没有更新博客了,作为初学者,k

苹果开发 笔记(61)recursiveDescription 方法

最近一直在疑惑为什么有NavigationBar的情况, 我在view里面添加了一个UIlabel, 希望这个UIlable 的偏移的位置是离NavigationBar 底部 20 点即可。  我初...

苹果开发的一点小总结(1)

在苹果下面开发了近乎一个月的时间了,项目的目标很明确,就是把前面安卓下面的程序移植到iOS下面。本来以为iOS是基于unix的系统,而unix又和c有天然的亲和关系,想着能够避免安卓系统java平台下...

苹果开发技术: Cocoa 框架概述

这篇文章转载自CSDN,只是可惜CSDN并未标明作者。如果您是这篇文章的作者请联系本站,本站会将您的大名加入。本文比较清楚地说明了Cocoa开发的大致情况,是篇较好的入门教材。建议初学者阅读。 Coc...

App发布系列--苹果开发证书运行机制(二) Code Signing

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作...

注册99美元苹果开发帐号

谈到苹果开发者账号,我们需要区分一下个人账号、公司账号和企业账号这三种,还有一种是教育账号,这个就不多说了。     个人账号:个人申请用于开发苹果app所使用的账号,仅限于个人使用,申请比较容...

关于苹果开发证书失效的解决方案(2016年2月14日Failed to locate or generate matching signing assets)

原文地址:http://m.blog.csdn.net/article/details?id=50673092&from=timeline&isappinstalled=0 前言: ...

关于苹果开发证书失效的解决方案(2016年2月14日Failed to locate or generate matching signing assets)

感谢原作者:http://blog.csdn.net/mr_lp/article/details/50673092 前言: 从2月14日开始,上传程序的同学可能会遇到提示上传失败的提示. ...

Xcode-苹果开发软件熟练使用之代码块

写在前面: Xocde8.0之后,苹果屏蔽了8.0以前可以使用的一款注释插件。原想找到那个插件重新安装继续使用,突然又让我想起了Xcode自带的“代码块”。 犹记得当初第一次接触iOS开发的...

第三方苹果开发库之ASIHTTPRequest

来自:http://www.dreamingwish.com/dream-2011/apples-third-party-development-libraries-asihttprequest.ht...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)