zoukankan      html  css  js  c++  java
  • Swift

    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
        }
    }
  • 相关阅读:
    《集体智慧编程》第7章代码 Python3执行出错
    pymysql.err.IntegrityError: (1062, "Duplicate entry 'roxml-ROXML' for key 'PRIMARY'")
    Linux下MariaDB 安装及root密码设置(修改)
    Excel VBA入门(九)操作工作薄
    Excel VBA入门(八)单元格边框
    Excel VBA入门(七)注释、宏按钮及错误处理
    Excel VBA入门(六)过程和函数
    Excel VBA入门(五)Excel对象操作
    Excel VBA入门(四)流程控制2-循环控制
    Excel VBA入门(三) 流程控制1-条件选择
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5823893.html
Copyright © 2011-2022 走看看