こんにちは、daihaseです。
ちょっと久々の投稿になりますが、今日はSwiftネタを。 開発をしていると文字列から高さ・幅を取得したい時って出てこないですかね?
そんなちょっとしたTipsを紹介。
まずStringを拡張したクラスを以下のように作ります。
import UIKit extension String { public func widthOfString(usingFont font: UIFont) -> CGFloat { let attributes = [NSAttributedStringKey.font: font] let size = self.size(withAttributes: attributes) return size.width } public func heightOfString(usingFont font: UIFont) -> CGFloat { let attributes = [NSAttributedStringKey.font: font] let size = self.size(withAttributes: attributes) return size.height } }
文字列に対してfontをセットしてやることでその幅と高さを返すメソッドですね。ではこれを実際にViewController側から使ってみます。
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let text = "こんにちは" let font = UIFont.systemFont(ofSize: 12) let width = text.widthOfString(usingFont: font) let height = text.heightOfString(usingFont: font) print("width: \(width)\nheight: \(height)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
こちらを応用するとしたらサーバーから取得した文字列に対して高さと幅を取得しそれを元にUIを生成する、といったケースなどでしょうか。
それでは良い開発ライフを〜