修改UILabel的行间距
在iOS开发中 有时候为了调整一些UI效果 我们需要调整UILabel之间的行间距:
contentLabel.text:label上显示的文字内容;
5:label行间距;
contentLabel:需要设置行间距的label
contentTextFont:字体大小;
contentLabelW:label的宽度
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:contentLabel.text];;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
[paragraphStyle setLineSpacing:];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(, contentLabel.text.length)]; contentLabel.attributedText = attributedString; //调节高度(在计算label的高度的时候需要注意 因为行间距变化了 不再是系统默认的行间距了 所以在计算的时候要根据实际的行间距去调整)
CGSize contentTextSize = [self sizeOfText:contentLabel.text WithFont:contentTextFont maxSize:CGSizeMake(contentLabelW, CGFLOAT_MAX)];
CGSize size = [contentlabel.text sizeWithFont:contentTextFont];
int length = size.height;
int colomNumber = contentTextSize.height/length;
//contentLabelH 就是label的实际高度
CGFloat contentLabelH = contentTextSize.height+colomNumber*;
//CGSize size = CGSizeMake(width, );
//CGSize labelSize = [contentLabel sizeThatFits:size];
高度计算思路:
首先要计算label的高度(这个高度是按照系统方法计算的 所以间距也是系统默认的间距 很小的) 然后计算label中每行文字对应的高度 然后label高度除以文字的高度就是label行数
当我们知道label的行数是 也知道了行间距
那么label的实际高度就是label的高度(这个高度是按照系统方法计算的 所以间距也是系统默认的间距 很小的)加上(行数*间距)
PS:这个计算方法不是很好 忽略了系统默认的间距 虽然默认的间距很小 但是忽略的话也会给实际尺寸的计算带来较大误差 另外计算也比较麻烦 我觉得应该还有更简单更方便的方法 只是一时没想到 如果有知道更好方法的小伙伴 请联系我!
修改UILabel的行间距的更多相关文章
- (转载)iOS UILabel自定义行间距时获取高度
本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...
- iOS UILabel自定义行间距时获取高度
本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...
- UILabel设置行间距和字间距并计算高度-b
#define UILABEL_LINE_SPACE 6 #define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height //给UILabe ...
- (转)iOS学习——UIlabel设置行间距和字间距
在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节. 比如一个Labe ...
- iOS运用runtime全局修改UILabel的默认字体
iOS运用runtime全局修改UILabel的默认字体 一.需求背景介绍 在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时,对于一些特殊 ...
- UILabel设置行间距
UILabel设置行间距: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWi ...
- iOS 设置UILabel的行间距并自适应高度
NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel ...
- IOS开发调整UILabel的行间距
CGFloat heih = 20; NSString * cLabelString = @"这是测试UILabel行间距的text.这是测试UILabel行间距的text.n 这是测试 ...
- UILabel 调整行间距
/* 调整行间距 */ + (void)adjustLineSpacingOfLabel:(UILabel *)label to:(CGFloat)lineSpacing { NSString *te ...
随机推荐
- create Context Menu in Windows Forms application using C# z
In this article let us see how to create Context Menu in Windows Forms application using C# Introduc ...
- Initializing nested object properties z
public class Employee { public Employee() { this.Insurance = new Insurance(); } // Perhaps another c ...
- HDU 5617 Jam's maze 巧妙DP
题意:给你一个字符矩阵,从(1,1)到(n,n)有很多种走法,每一种走法形成一个字符串,问有多少种走法形成的字符串是回文的 分析:(粘贴BC题解) 的是回文串,有人会想到后缀数组自动机马拉车什么的,其 ...
- [zouxianghui] 清空GridPanel的checkbox选中行
清空GridPanel的checkbox选中行,GridPanel.getSelectionModel().clearSelections();可以清空选中状态
- ExtJS 5.0版本问题+Sencha cmd
ExtJS 5.0版本官方网站给的图表例子,以散点图作说明: Ext.create('Ext.Container', { //renderTo: Ext.getBody(), width: 600, ...
- 安装禅道项目管理软件ZenTaoPMS
服务器Ubuntu 13.04 且安装了上一篇随笔中的 AMP本文略去安装AMP过程.版本号满足要求(php>5.2 and mysql.2) 1.官网http://www.zentao.net ...
- 万台规模下的SDN控制器集群部署实践
目前在网络世界里,云计算.虚拟化.SDN.NFV这些话题都非常热.今天借这个机会我跟大家一起来一场SDN的深度之旅,从概念一直到实践一直到一些具体的技术. 本次分享分为三个主要部分: SDN & ...
- runtime详解2
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...
- ASP.NET MVC中防止跨站请求攻击(CSRF)
转载 http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...
- 新建数据库,然后使用SQL语句创建表、存储过程、用户说明
需要在数据库的安全性,用户那里为用户设置一下权限