关闭

苹果开发 笔记(45)UILabel

530人阅读 评论(0) 收藏 举报
分类:

这段时间除了使用一些组件干事,大部分时候在熟悉一些组件配搭组合使用,当中遇到的一些问题,采用的方案还没到一个好阶段。不过在使用的过程当中 慢慢熟悉了一些。能处理一些动画和绘图方面使用,也能组合一些类,相比前几个月懵懂自己进步了一点。只是最近有点懒,精力不是特别集中,因此停止了几天的代码工作,身边事情比较多。
了解不同的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);

}

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

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

ios UILabel(label控件)的详细使用及特殊效果

一个UILabel中美化字体的例子,效果如下图:
  • heng615975867
  • heng615975867
  • 2014-08-27 10:28
  • 10817

苹果电脑下开启PHP功能

苹果电脑OS X 10.11已经自带PHP5。通过以下步骤可以启用PHP功能: 首先打开PHP的配置文件 1./etc目录下有php.ini.default的配置文件 2.通过sudo ...
  • hhdsyxwei
  • hhdsyxwei
  • 2016-01-07 23:12
  • 1747

『高效程序员的45个习惯:敏捷开发修炼之道』读书笔记

这是我近些日子的读书笔记。 电子书见:http://www.amazon.cn/mn/detailApp?asin=B00ALPRKJ8&tag=baiduiclickcn-23&ref=p...
  • sharetop
  • sharetop
  • 2014-10-20 15:46
  • 1157

苹果开发之路--Swift之UILabel

好久没有更新博客了,作为初学者,k
  • caishigou
  • caishigou
  • 2014-10-20 14:58
  • 7659

苹果开发 笔记(67)模态弹出和退出窗口

平时在玩QQ或者看优酷的APP的的时候,一直很好奇这种弹出窗口是怎样做。在对比一些应用后,发现很多设置界面都有类似这样效果,弹出后以一个小窗口半透明的形式展示,同时也发现窗口大小也很类似。百度一下,发...
  • hero82748274
  • hero82748274
  • 2015-08-31 20:05
  • 1213

苹果开发 笔记(42)leftBarButtonItem

这几天看了一些App的资料,跟着他们设计模仿一些。在学习过程当中,还遇到很多问题,但也学到一些知识结合使用。 这两天遇到问题是,老的API 对IOS 6的问题,其实IOS6 使用的人很少,所以这...
  • hero82748274
  • hero82748274
  • 2015-06-28 11:47
  • 4104

苹果开发 笔记(12)AVAudioPlayer

昨天晚上尝试了一下AVAudioPlayer ,正当尝试播放一个歌曲的时候,突然就不播放了。很奇怪的事情发生了,查看了资料,修改了一行代码就好。 原来AVAudioPlayer 被莫名地回收了,是弱...
  • hero82748274
  • hero82748274
  • 2015-04-23 10:40
  • 612

苹果开发 笔记(93) UITableView 的编辑模式

昨天碰到两个印象深刻的问题: (1)UIScrollView 和masonry 约束设置的问题导致内容不会滚动: (2)总是记不住UITableView 的编辑模式是如何,有时候要应对滑动删除...
  • hero82748274
  • hero82748274
  • 2015-11-15 08:36
  • 387

苹果开发 笔记(83)CABasicAnimation

CABasicAnimation 是继承了CAAnimation一个子类,用于动画制作和表现形式。它的使用并不会太复杂, 学过动画方面对使用这个类使用并不会是有太多障碍。 今天总算安装好了新系统,...
  • hero82748274
  • hero82748274
  • 2015-10-03 16:51
  • 460

苹果开发 笔记(46)圆角

IOS 提供一个便利的方法呈现圆角的效果,代码量非常少,只要设置layer的cornerRadius 属性 即可。 #import "ViewController.h"@interface ViewC...
  • hero82748274
  • hero82748274
  • 2015-07-09 22:39
  • 568
    个人资料
    • 访问:1964064次
    • 积分:37663
    • 等级:
    • 排名:第126名
    • 原创:1347篇
    • 转载:22篇
    • 译文:0篇
    • 评论:2139条
    公告栏
    是夏天带来了热情,
    还是热情与夏天恋爱了?
    我倾夏天的脚步,
    感受清风的凉意,
    在行云流水之中,
    追求一种人生哲学.
    QQ :877690056

    赞赏在下

    Flag Counter
    文章存档