计算一行文本的高度

计算一行文本的高度

 

说明

有时候我们需要知道指定的几行文本的高度,此工具用于解决此种问题。

 

源码

//
//  NSString+LabelWidthAndHeight.h
//  ZiPeiYi
//
//  Created by YouXianMing on 15/12/9.
//  Copyright  2015年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface NSString (LabelWidthAndHeight)

/**
 *  Get the string's height with the fixed width.
 *
 *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
 *  @param width     Fixed width.
 *
 *  @return String's height.
 */
- (CGFloat)heightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute fixedWidth:(CGFloat)width;

/**
 *  Get the string's width.
 *
 *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
 *
 *  @return String's width.
 */
- (CGFloat)widthWithStringAttribute:(NSDictionary <NSString *, id> *)attribute;

/**
 *  Get a line of text height.
 *
 *  @param attribute String's attribute, eg. attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:18.f]}
 *
 *  @return String's width.
 */
+ (CGFloat)aLineOfTextHeightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute;

@end
//
//  NSString+LabelWidthAndHeight.m
//  ZiPeiYi
//
//  Created by YouXianMing on 15/12/9.
//  Copyright  2015年 YouXianMing. All rights reserved.
//

#import "NSString+LabelWidthAndHeight.h"

@implementation NSString (LabelWidthAndHeight)

- (CGFloat)heightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute fixedWidth:(CGFloat)width {

    NSParameterAssert(attribute);

    CGFloat height = 0;

    if (self.length) {

        CGRect rect = [self boundingRectWithSize:CGSizeMake(width, MAXFLOAT)
                                         options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                       NSStringDrawingUsesFontLeading
                                      attributes:attribute
                                         context:nil];

        height = rect.size.height;
    }

    return height;
}

- (CGFloat)widthWithStringAttribute:(NSDictionary <NSString *, id> *)attribute {

    NSParameterAssert(attribute);

    CGFloat width = 0;

    if (self.length) {

        CGRect rect = [self boundingRectWithSize:CGSizeMake(MAXFLOAT, 0)
                                         options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                       NSStringDrawingUsesFontLeading
                                      attributes:attribute
                                         context:nil];

        width = rect.size.width;
    }

    return width;
}

+ (CGFloat)aLineOfTextHeightWithStringAttribute:(NSDictionary <NSString *, id> *)attribute {

    CGFloat height = 0;
    CGRect rect    = [@"One" boundingRectWithSize:CGSizeMake(200, MAXFLOAT)
                                          options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin |
                      NSStringDrawingUsesFontLeading
                                       attributes:attribute
                                          context:nil];

    height = rect.size.height;
    return height;
}

@end

细节

 

时间: 2024-08-28 03:27:27

计算一行文本的高度的相关文章

精简计算UITableView文本高度

精简计算UITableView文本高度 本人视频教程系类   iOS中CALayer的使用 最终效果: 核心源码(计算文本高度的类) NSString+StringHeight.h 与 NSString+StringHeight.m // // NSString+StringHeight.h // USA // // Created by YouXianMing on 14/12/10. // Copyright (c) 2014年 fuhuaqi. All rights reserved. /

《Python自然语言处理》——1.1 语言计算:文本和词汇

1.1 语言计算:文本和词汇 我们都对文本非常熟悉,因为我们每天都在进行阅读和写作.在本书中,把文本视为编写程序的原始数据,并通过很多有趣的编程方式来处理和分析文本.但在能写这些程序之前,必须得从了解Python解释器开始. Python入门 Python与用户友好交互的方式之一包括你可以在交互式解释器直接输入代码--解释器将运行你的Python代码的程序.你可以通过一个叫做交互式开发环境(Interactive Development Environment,IDLE)的简单图形接口来访问Py

《Python自然语言处理》——第1章 语言处理与Python 1.1 语言计算:文本和词汇

第1章 语言处理与Python 我们能够很容易地得到数百万数量级的文本.假设我们会写一些简单的程序,那可以用它来做些什么?本章将解决以下几个问题. (1)通过将技术性较简单的程序与大规模文本结合起来,我们能实现什么? (2)如何自动地提取出关键字和词组,用来总结文本的风格和内容? (3)Python编程语言为上述工作提供了哪些工具和技术? (4)自然语言处理中有哪些有趣的挑战呢? 本章分为风格完全不同的两部分.在1.1节,我们将进行一些与语言相关的编程练习而不去解释它们是如何实现的.在1.2节,

小白求大神解答,怎么在布局文件里让左边的图片和右边的文本框高度一致

问题描述 小白求大神解答,怎么在布局文件里让左边的图片和右边的文本框高度一致 代码如下:<?xml version=""1.0"" encoding=""utf-8""?> android:layout_width=""match_parent"" android:layout_height=""match_parent"" andro

RY8005: 各浏览器对于计算后宽度和高度为含有小数的长度值时,其最终值会不一致

问题描述 各浏览器对于计算后宽度和高度为含有小数的长度值时,其最终值会不一致.本文地址:本帖为以上问题的讨论专区,欢迎踊跃发帖,提出您的宝贵意见和建议,谢谢! 解决方案 本帖最后由 WebAdvocate 于 2010-09-01 17:48:36 编辑解决方案二:你好,我在w3help上拜读了你的文章,但是有一个地方,我觉得有点疑惑就是根据w3c的文档:6.1.3UsedvaluesComputedvaluesareprocessedasfaraspossiblewithoutformatti

asp fso:只读一行文本

asp fso:只读一行文本ReadLine set t=fs.OpenTextFile("c:test.txt",1,false) x=t.ReadLine t.close Response.Write("The first line in the file ") Response.Write("contains this text: " & x) 这样我们就可以只读取一行了喽.下面来看看readall读取全部的内容 dim fs,f,

C语言读取每一行文本

因为编译原理要用到,记录一下.   1 #include <stdio.h> 2 3 int main() 4 { 5 char filename[] = "D:\\阶段性学习\\大三上\\1.课程学习\\编译原理\\0903\\实验二\\test.c"; //文件名 6 FILE *fp; 7 char StrLine[1024]; //每行最大读取的字符数 8 if((fp = fopen(filename,"r")) == NULL) //判断文件

火狐浏览器下文本自适应高度的方法

自适应|火狐浏览器 标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉height设置min-height:200px;  这里为了照顾不认识min-height的IE6 可以这样定义:{height:auto!important;height:200px;min-height:200px;} 示例代码如下: 以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

图像处理程序框架—MFC相关知识点

CDC:Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 . MFC基础类库定义了设备环境对象类----CDC类. CDC与CGdiObject的关系 说道CDC类就不能不提一下GdiObject---图形对象类. 在Windows应用程序中,设备环境与图形对象共同工作,协同完成绘图显示工作.就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画笔.用画笔在画布上绘画,不同的画笔将画出不同的画来.选择合适的图形对象和绘图对象,才能按照要求完