Swift - 计算文本高度

效果

源码

//
//  String+StringHeight.swift
//  StringHeight
//
//  Created by YouXianMing on 16/8/30.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

import UIKit

extension String {

    /**
     Get the height with the string.

     - parameter attributes: The string attributes.
     - parameter fixedWidth: The fixed width.

     - returns: The height.
     */
    func heightWithStringAttributes(attributes : [String : AnyObject], fixedWidth : CGFloat) -> CGFloat {

        guard self.characters.count > 0 && fixedWidth > 0 else {

            return 0
        }

        let size = CGSizeMake(fixedWidth, CGFloat.max)
        let text = self as NSString
        let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil)

        return rect.size.height
    }

    /**
     Get the height with font.

     - parameter font:       The font.
     - parameter fixedWidth: The fixed width.

     - returns: The height.
     */
    func heightWithFont(font : UIFont = UIFont.systemFontOfSize(18), fixedWidth : CGFloat) -> CGFloat {

        guard self.characters.count > 0 && fixedWidth > 0 else {

            return 0
        }

        let size = CGSizeMake(fixedWidth, CGFloat.max)
        let text = self as NSString
        let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context:nil)

        return rect.size.height
    }

    /**
     Get the width with the string.

     - parameter attributes: The string attributes.

     - returns: The width.
     */
    func widthWithStringAttributes(attributes : [String : AnyObject]) -> CGFloat {

        guard self.characters.count > 0 else {

            return 0
        }

        let size = CGSizeMake(CGFloat.max, 0)
        let text = self as NSString
        let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil)

        return rect.size.width
    }

    /**
     Get the width with the string.

     - parameter font: The font.

     - returns: The string‘s width.
     */
    func widthWithFont(font : UIFont = UIFont.systemFontOfSize(18)) -> CGFloat {

        guard self.characters.count > 0 else {

            return 0
        }

        let size = CGSizeMake(CGFloat.max, 0)
        let text = self as NSString
        let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context:nil)

        return rect.size.width
    }
}
时间: 2024-12-22 19:22:06

Swift - 计算文本高度的相关文章

swift - 动态计算文本高度

func heightOfCell(text : String) -> CGFloat {        let attributes = [NSFontAttributeName:UIFont.systemFontOfSize(14)]        let option = NSStringDrawingOptions.UsesLineFragmentOrigin        let rect:CGRect = text.boundingRectWithSize(CGSize(width:

计算文本高度

给定字符串的长度, 还有换行方式, 算出高度 1 UIFont * font = [UIFont systemFontOfSize:14]; 2 3 CGSize size = [text sizeWithFont:font xonstrainedToSize:CGSizeMake(140, 1000)lineBreakModel:URLineBreakModelCHaracterWrap];

iOS文本高度计算

文本高度计算:此方法适用于根据不同的文字长短,设置与文字相同的size //****************************************************************************************************************// //***********************************************************************************************

根据文本内容动态计算文本框高度的步骤

在视图加载的过程中,是先计算出frame,再根据frame加载视图的,所以在设计计算高度的方法的时候,设计成加号方法; //首先给外界提供计算cell高度的方法 + (CGFloat)heightForRowWithDic:(NSDictionary *)dic { //cell高度 = nameLabel高度 + contentLabel高度 + 间距; return [self heightForText:dic[@"content"]] + 30 + kHeight_NameLa

使用boundingRectWithSize计算内容高度的坑

iOS中,根据给定的内容.字体,宽度,计算文本高度的函数,iOS7之前使用sizeWithFont,iOS7之后使用boundingRectWithSize.</span> - boundingRectWithSize:options:attributes:context: Calculates and returns the bounding rect for the receiver drawn using the given options and display characteris

swift计算label动态宽度和高度

swift计算label动态宽度和高度 func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat { let statusLabelText: NSString = labelStr let size = CGSizeMake(width, 900) let dic = NSDictionary(object: font, forKey: NSFontAttributeName) let strSize = st

计算文本的高度

计算文本的高度分两种情况,指定文本只有1行和多行,可以写方法返回字符串的size,options通常使用NSStringDrawingUsesLineFragmentOrigin,这样整个文本将以单行文本的矩形来计算整个文本高度 ①文字显示一行 -(CGSize)sizeOneLineText:(NSString *)text font:(UIFont *)font{ CGSize textSize = [text boundingRectWithSize:CGSizeMake(CGFLOAT_

iOS 动态计算文本内容的高度

关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. //  获取字符串的大小  ios6 - (CGSize)getStringRect_:(NSString*)aString { CGSize size; UIFont *nameFont=[UIFont fontWithName:@"Helvetica" size:13]; size=[aString sizeWithFont:nameFont constrainedToSize:CGSize

计算文本所占区域(字符串宽度,高度)

CRect GetTextRect(IN CDC* pDC,IN LPCTSTR lpText) { CRect rcText; //计算文本所占区域 pDC->DrawText(lpText,-1,&rcText,DT_CALCRECT); return rcText; }