UILabel实现自适应宽高需要注意的地方(三)

一、需求图如下所示

  1. UILabel 的高度自适应
  2. UILabel中的段落间距可设置

图片效果如下:

调整段落适应长宽高方式:

需求:

保证“游戏玩法” 章节,UILabel高度自适应,行内距为4px

做法:

UILabel实现自适应宽高(一)中说明了 UILabel 自适应的方法,但是如果加行间距,就要用到  NSMutableAttributedString  富文本的方式实现,来判断行内距然后再通过 sizetofit 进行高度自适应。

自适应方法如下:

Coding:

- (void)setLineSpacing:(CGFloat)spacing label:(UILabel *)label
{
    if(!label.text.length) return;
    NSMutableAttributedString *attributedString = [[NSMutableAttributedStringalloc] initWithString:label.text];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc] init];
    [paragraphStyle setLineSpacing:spacing];
    [attributedString addAttribute:NSParagraphStyleAttributeNamevalue:paragraphStyle range:NSMakeRange(0, [label.textlength])];
    [label setAttributedText:attributedString];
    label.lineBreakMode = NSLineBreakByCharWrapping;
    [label sizeToFit];
}

注意一下label.lineBreakMode = NSLineBreakByCharWrapping;这句话一定要在UILabel设置富文本之后加,不然会不起作用。

sizeToFit 自适应方法也要在最后加,不然会被富文本方法替换掉。

二、需求图如下所示

  1. UILabel 中如果为数字,会显示红色

图片效果如下:

做法: 通过UILabel的富文本来实现此方法,遍历UILabel文本中如果有数字,自动设置为红色.

实现:

NSMutableString * subtitlelabelStr=[NSMutableStringstringWithFormat:@"共参与%ld期,%@", _dataModel.count,_dataModel.last_time];
    _subtitlelabel.text = subtitlelabelStr;

NSString *content = subtitlelabelStr;
    NSArray *number = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
    NSMutableAttributedString *attributeString  = [[NSMutableAttributedStringalloc]initWithString:content];
    for (int i = 0; i < content.length; i ++) {
        NSString *a = [content substringWithRange:NSMakeRange(i, 1)];
        if ([number containsObject:a]) {
            [attributeString setAttributes:@{NSForegroundColorAttributeName:NF_Color_C19,NSFontAttributeName:[UIFontsystemFontOfSize:Near_Final_Font_T9]}range:NSMakeRange(i, 1)];
        }
    }
    _subtitlelabel.attributedText = attributeString;

问题:如果实现UIlabel 内容的文字全部为随机颜色,如何实现?

时间: 2024-12-15 14:19:27

UILabel实现自适应宽高需要注意的地方(三)的相关文章

label 自适应宽 高

//初始化label    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];    //设置自动行数与字符换行    [label setNumberOfLines:0];    // 测试字串    NSString *str = @"\n  一别之后 两地相悬 只说三四月 谁知五六年 七玄琴无心谈 八行书无可传 九连环从中断 十里长亭望眼欲穿 百思想 千系念 万般无奈把郎怨  \n  万言千语说不完 百

OpenGL ES学习笔记(二)&mdash;&mdash;平滑着色、自适应宽高及三维图像生成

首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--OpenGL ES的基本用法.绘制流程与着色器编译>中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项.本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实.首先,物体有各种颜色

页面DIV自适应宽高

代码如下: <html xmlns=" http://www.w3.org/1999/xhtml "> <head runat="server">     <title>窗口大小</title> </head> <body onload="findDimensions();"> <h2 align="center">请调整浏览器窗口大小<

UILabel 自适应宽高

#import <UIKit/UIKit.h> @interface UILabel (UILabel_LabelHeighAndWidth) + (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont*)font; + (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font; @end #import "UIL

两行文字,固定宽高,超出部分以三点隐藏

代码如下: display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 .-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 .text-overflow: ellipsis;,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 .overflow : hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webki

iOS开发 UILabel实现自适应高宽

UILabel是iOS开发常用的控件.UILabel的属性需要了解,UILabel的特殊显示效果也需要我们掌握.UILabel自适应高宽度是很多初学者遇到的技术性难题.比如段文字,要让他完全地分行显示且要让后面的控件不被遮挡.这需要我们的UILabel能够自适应高宽,以便完全显示text的内容,后面的控件可以获取UILabel的起始坐标和宽高来重新设置frame来达到紧贴着UILabel显示而不被遮挡. 工具/原料 Mac OS X操作系统::OS X 10.11.5 编译环境:Xcode 7.

实现宽高自适应

1 <!DOCTYPE html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 4 <title>test</title> 5 <link rel="stylesheet" type="text/css" href="bootstrap.m

css 宽高自适应的div 元素 如何居中 垂直居中

在我们 编写css 样式的时候经常会遇见一个问题 那就是一个 宽高未知的元素 要让他 垂直居中如何实现这个呢 下面是我常用的两种方法 上代码 下面的是 结构代码 <div class="wrap">//此处为父组件 我们会设置父级的宽高并让其居中 <div class="center">//子组件我们要实现它的垂直居中 不设置他的宽高 宽高 都由下面的img引入的图片撑开 <img width="100px" src

img图片自适应宽和高[转]

控制缩略图常见的是JS来控制,还有就是最直接的方法定义img的宽高:下面两种方法自适应宽和高,zhenzhai推荐使用CSS方法:一.CSS方法:主 要是在CSS设置最小值和最大值(max-width: 100px; max- height: 100px; width: expression(this.width >100 && this.height < this.width ? 100: true); height: expression(this.height >