固定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. springboot-7-配置druid数据源监视

    关于druid数据源的配置, 上个博客已经说过了,再说一遍吧 , 引入依赖 , 配置properties参数 , 编写servlet和filter提供页面监视 , 测试 1, 引入maven依赖 &l ...

  2. Linux-(chgrp,chown,chmod)

    /etc/group Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件. Linux /etc/group文件 ...

  3. java的PreparedStatement中使用like时的问题

    SQL:select * from students where name like '%tommy%'; 正常的sql如上,是可以直接执行的, 那放到java的P热怕热的Statement中就应该是 ...

  4. jquery.dataTables动态列--转

    转自 https://www.cnblogs.com/lyeo/p/4765514.html jquery.dataTables  版本1.10.7 直接上代码: 0.table <table ...

  5. java开发编译器:中间语言格式

    阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=10028300 ...

  6. How to update Ionic cli and libraries

    1)npm outdated 2)手动修改你项目的package.json文件,找对应的版本号 3)npm update 重新安装包就可以了. 转自:http://devfanaticblog.com ...

  7. SQLServer数据库循环表操作每一条数据(游标的使用)

    DECLARE @FunctionCode VARCHAR(20)--声明游标变量DECLARE curfuntioncode CURSOR FOR SELECT FunctionalityCode ...

  8. ClickOnce 发布WinForm应用程序(非签名方式)

    ClickOnce IIS7发布WinForm应用程序,非签名方式(不勾选签名中的"为ClickOnce清单签名") 一.在D盘上建一个文件夹”MyAppPath”.      该 ...

  9. SPA应用部署时首屏启动慢问题解决方案

    SPA应用部署时首屏启动慢问题解决方案 使用vuejs开发的单页应用,打包部署上线后,发现首屏启动时间达到了惊人的10s左右,于是开始优化,目前使用到的总结如下: 巧用webpack插件 1.抽取cs ...

  10. 《码出高效 Java开发手册》第五章 异常与日志

    码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/exception/index.md 5.2 try ...