UILabel的一些小问题

问题1:UILabel 的 lineBreakMode
当我们在给UILabel赋值字符串的时候,如果字符串是中英文组合,那么就可能出现中文和英文“断截”换行的情况,解决方法就是设置 lineBreakMode,下面是这个属性的解释:

NSLineBreakByWordWrapping = 0,      // 默认根据“单词”来换行,也就是label会默认认为一串连续的英文是一个单词,大家可以在上面string中字母部分中间插入一个空格,会发现界面就会发生改变
     NSLineBreakByCharWrapping,     // 只根据换行符换行,所有字符会依次排满label整行后才会另起一行
     NSLineBreakByClipping,     // 当文字过多的时候,label 会直接切除多余的文字不显示省略号
     NSLineBreakByTruncatingHead,   // 当文字过多的时候,label 会省略最前面的部分作为 省略号
     NSLineBreakByTruncatingTail,   // 当文字过多的时候,label 会省略最后面的部分作为 省略号
     NSLineBreakByTruncatingMiddle

具体效果见demo

问题2:UILabel计算文字高度
UILabel中的文字高度计算在iOS7.0之后系统提供了一个方法boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context,其实文字高度计算不准确大多是因为options参数设置不准确导致的,正确的设置方法应该是这样的:NSStringDrawingOptions option = NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;,顺便附上计算高度的方法实现,这里是写在NSString的分类中的:

- (CGSize)textSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
{
    CGSize textSize;
    if (CGSizeEqualToSize(size, CGSizeZero))
    {
        NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
        
        textSize = [self sizeWithAttributes:attributes];
    }
    else
    {
        NSStringDrawingOptions option = NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;
        
        //NSStringDrawingTruncatesLastVisibleLine如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。 如果指定了NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略 NSStringDrawingUsesFontLeading计算行高时使用行间距。(字体大小+行间距=行高)
        NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
        CGRect rect = [self boundingRectWithSize:size
                                         options:option
                                      attributes:attributes
                                         context:nil];
        
        textSize = rect.size;
    }
    return textSize;
}

经过测试,就算是文字中含有换行符,中英文组合也可以准确的计算高度,【具体效果见demo

问题3:UILabel设置了富文本 之后对齐方式失效
一次偶然的机会,我在做富文本效果的时候,设置了行间距,发现之前设置的UILabel的对齐方式不起作用了,于是我在设置富文本之后再次设置了一遍对齐方式,这才将页面效果显示正确,不过这种情况,在不设置行间距的情况下是不会出现的,也就是说,先设置对齐方式,在设置没有行间距富文本,对齐方式依然有效,具体原因我暂时不清楚,文档上也没有相关的说明
具体效果见demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • 这是森雅,收到的第169封信。 森雅: 又到星期五,每次我们都是在星期五写信,。这样,即使我们之...
    梵释阅读 316评论 1 3
  • 前些日子霸屏的白百合出轨,据说2015年就已经离婚了,戏里忙着演戏,戏外还忙着加戏(出轨前还在秀恩爱),明星光彩照...
    吴羡好阅读 1,341评论 0 3
  • 关羽这个英雄在满蓝的情况下,会有一个冲锋的姿态行进速度特别快,在冲锋姿态时用平A撞到敌人以后能够造成12%的物理伤...
    一叶茶阅读 333评论 0 1
  • 姐姐说:远远,你不可以这样,危险!给我下来,快点。 远远说:我不!再说我就打你了! 姐姐说:你给我下来! 妈妈看到...
    写作星阅读 872评论 3 5