Swift - 텍스트 높이 계산
3117 단어 Coding
//
// String+StringHeight.swift
// StringHeight
//
// Created by YouXianMing on 16/8/30.
// Upgraded By Stone on 2017-6-15
// Copyright © 2016 YouXianMing. All rights reserved.
//
import Foundation
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 = CGSize(width:fixedWidth, height:CGFloat.greatestFiniteMagnitude)
let text = self as NSString
let rect = text.boundingRect(with: 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.systemFont(ofSize: 18), fixedWidth : CGFloat) -> CGFloat {
guard self.characters.count > 0 && fixedWidth > 0 else {
return 0
}
let size = CGSize(width:fixedWidth, height:CGFloat.greatestFiniteMagnitude)
let text = self as NSString
let rect = text.boundingRect(with: 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 = CGSize(width:CGFloat.greatestFiniteMagnitude, height:0)
let text = self as NSString
let rect = text.boundingRect(with: 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.systemFont(ofSize: 18)) -> CGFloat {
guard self.characters.count > 0 else {
return 0
}
let size = CGSize(width:CGFloat.greatestFiniteMagnitude, height:0)
let text = self as NSString
let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: [NSFontAttributeName : font], context:nil)
return rect.size.width
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
백준 알고리즘_입출력과 사칙연산(6~13)[Java]6. A-B 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 첫째 줄에 A-B를 출력한다. 7. A*B 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 첫째 줄에 A*B를 출력한다. 8. A...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.