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
        }
    }
  • 相关阅读:
    【todo】深入理解设计模式
    一个最简单的LRUCache实现 (JAVA)
    Redis之AOF重写及其实现原理
    【todo】nosql 的几种类型研究
    【todo】redis 中的hyperloglog原理
    【todo】ER分片
    【todo】研究一下mycat的原理
    【todo】研究一下sharding-jdbc的原理
    为什么存储过程比sql语句效率高?
    存储过程这一篇就够了
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5823893.html
Copyright © 2011-2022 走看看