• 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
        }
    }
  • 相关阅读:
    (第七周)评论alpha发布
    (第六周)工作总结
    (第六周)团队项目6
    (第六周)团队项目5
    (第六周)团队项目4
    (第六周)团队项目燃尽图
    (第六周)团队项目3
    (第六周)课上Scrum站立会议演示
    Java第二次作业第五题
    Java第二次作业第四题
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5823893.html
Copyright © 2020-2023  润新知