固定UILabel宽度分行显示

这种小伎俩估计都被用烂了,笔者给大家提供一个category文件,供大家简单设置哦.

各种富文本效果哦(普通文本也是可以用的呢):

3行,固定宽度200

2行,固定宽度200

无限行,固定宽度250

无限行,固定宽度250,设置段落样式

源码:

UILabel+SizeToFit.h  与  UILabel+SizeToFit.m

//
// UILabel+SizeToFit.h
// SizeToFit
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import <UIKit/UIKit.h> @interface UILabel (SizeToFit) - (void)fixWidth:(CGFloat)width // 固定宽度
position:(CGPoint)position // 文字起始位置
numberOfLines:(NSInteger)lines // 行数(如果为0则表示为无限行)
lineBreakMode:(NSLineBreakMode)mode; // 文字断开方式 @end
//
// UILabel+SizeToFit.m
// SizeToFit
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import "UILabel+SizeToFit.h" @implementation UILabel (SizeToFit)
- (void)fixWidth:(CGFloat)width
position:(CGPoint)position
numberOfLines:(NSInteger)lines
lineBreakMode:(NSLineBreakMode)mode
{
CGRect newRect = self.frame;
newRect.size.width = width;
newRect.origin = position;
self.frame = newRect; self.numberOfLines = lines;
self.lineBreakMode = mode;
[self sizeToFit];
} @end

使用的源码(注,此处用到了自己写的一些源码,请君自行替换):

//
// RootViewController.m
// SizeToFit
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import "RootViewController.h"
#import "UILabel+SizeToFit.h"
#import "FontPool.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) { }
return self;
} - (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor]; // 注册字体
REGISTER_FONT(bundleFont(@"新蒂小丸子体.ttf"), @"新蒂小丸子体"); // 设置段落样式
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.firstLineHeadIndent = .f * ; // 设置富文本
NSString *testStr = @"如果我有尾巴的话 —— 说起来有点不好意思,只要和你在一起,一定会止不住摇起来的吧。";
NSArray *array \
= @[[ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", ) size:.f]
range:[testStr range]],
[ConfigAttributedString foregroundColor:[UIColor whiteColor]
range:[testStr range]],
[ConfigAttributedString paragraphStyle:style
range:[testStr range]],
[ConfigAttributedString font:[UIFont fontWithName:CUSTOM_FONT(@"新蒂小丸子体", ) size:.f]
range:[@"如果我有尾巴的话" rangeFrom:testStr]],
[ConfigAttributedString foregroundColor:[UIColor redColor]
range:[@"如果我有尾巴的话" rangeFrom:testStr]]]; // 创建label
UILabel *label = [UILabel new]; // 设置富文本
label.attributedText = [testStr createAttributedStringAndConfig:array]; // 0行,固定宽度200
[label fixWidth:
position:CGPointMake(, )
numberOfLines:
lineBreakMode:NSLineBreakByTruncatingMiddle]; [self.view addSubview:label];
} @end

核心代码处:

注意,只有执行了sizeToFit才是解决问题的关键所在:

就是这么简单:)

固定UILabel宽度分行显示的更多相关文章

  1. Winfrom固定Label宽度,根据文本动态改变Label的高度 z

    Label,要固定住宽度,然后根据文本的长度来动态改变高度,一开始去网上找解决方案,各种根据字体大小啊,字数啊来动态改变,但是效果却不怎么好.最后灵机一动,想起了偶尔用过一次的FlowLayoutPa ...

  2. 移动端布局的一些设置(在viewport里设置使页面显示相同宽度,显示相同像素大小)

    viewport(视口) 具体数值(不设置时默认为980 ,部分安卓手机不支持设置成具体数值) width=device-width 和设备宽度保持一致 user-scalable=no 是否允许用户 ...

  3. 实现一个div,左边固定div宽度200px,右边div自适应

    实现一个div,左边固定div宽度200px,右边div自适应<div class= "container"> <div class="left&quo ...

  4. DataTables固定表格宽度(设置横向滚动条)

    当表格的列比较多的时候,可能就需要固定表格的宽度了,默认的100%宽已经不适应了.默认的100%宽要实现改变窗口大小也100%的话,在table元素上添加width="100%", ...

  5. FusionCharts:tooltip分行显示

    FusionCharts:tooltip分行显示 tooltip分行显示:如果tooltip过长,可分行显示,在tooltip中增加{br} <chart> <set label=' ...

  6. echarts固定柱子宽度(barWidth)

    series: [            {                name: '',                yAxisIndex: 0,                type: ' ...

  7. LaTex: 表格单元格内容 分行显示/换行

    问题:如何同时让表格同一行一个单元格的文字能垂直居中?比如说文字超长超出页面范围需要分行显示 答:(来源于smth) 方案一: \newcommand{\tabincell}[2]{\begin{ta ...

  8. 02微信小程序-轮播的宽度100%显示和轮播的基础配置

    1==>如何让轮播的宽度100%显示? 你先给swiper 外面添加一个大盒子,给大盒子一个类 . <view class='lunbobox'> 然后wxss 里面设置 image ...

  9. iOS UILabel:宽度固定,自动高度显示全部文字

    desclabel.width = self.view.width - (leftOffset*2); desclabel.lineBreakMode = NSLineBreakByWordWrapp ...

随机推荐

  1. mongodb二进制安装与yum安装

    一.什么是mongodb MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 ...

  2. Impala 使用的端口

    下表中列出了 Impala 是用的 TCP 端口.在部署 Impala 之前,请确保每个系统上这些端口都是打开的. 组件 服务 端口 访问需求 备注 Impala Daemon Impala 守护进程 ...

  3. Solidity两个string的比较

    有三种比较方法 方法一:比较string的哈希值方法二:先比较string的长度,再比较每个对应位置的字母是否相同方法三:先比较string的长度,再比较string的哈希值一.比较string的哈希 ...

  4. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...

  5. 用ruby调用执行shell命令

    碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法:     Kernel#exec方法通过调用指定的命令取代当前进程:   例子:       $ ...

  6. puts,p,print的区别

    共同点:都是用来屏幕输出的. 不同点: puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号):另外如果内容参数中有转义符,输出时将先处理转义再输出 p 基本与puts相同,但不会 ...

  7. Angular的第一个helloworld

    在安装了node,npm,angular-cli,vscode之后,我们来创建一个angular的应用 创建第一个hello world 使用的IDE工具为vscode 打开vscode,打开一个命令 ...

  8. 线程5--GCD简介

    /******************************************************/  同步函数  (1)并发队列:不会开线程  (2)串行队列:不会开线程  异步函数   ...

  9. 撰写html标签的快捷方式1

    一: <ul> <li><a href=""></a></li></ul> 如果要写上面的标签,直接写 ul ...

  10. Session和Cookie的区别与联系

    一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,W ...