ttlog

日々の開発で得た知見の技術メモ。モバイルアプリネタが多いです。

iOS 文字列のサイズ取得方法

iOSにおける文字列のサイズ取得方法のメモです。 Viewの横幅と比較して、1行に何文字表示出来るか等の計算が出来たりします。

文字列のサイズ取得

NSStringクラスにサイズが取得出来るメソッドがあるので、こちらを使います。

size(withAttributes:)

UIFontを渡してあれば、フォントサイズに応じた文字列のサイズが取得出来ます。

// 今回はStringクラスのExtensionとして実装

import UIKit

public extension String {
    public func size(with font: UIFont) -> CGSize {
        let attributes = [NSAttributedStringKey.font : font]
        return (self as NSString).size(withAttributes: attributes)
    }
}

使い方

let font = UIFont.systemFont(ofSize: 13)
let size = "abcde".size(with: font)
let width = size.width
let height = size.height

戻り値はCGSizeになっていますが、こちらは1行に全文字を並べた場合のサイズを返すようです。つまり、文字数に応じてwidthだけが伸びていき、heightは常に1文字分の高さを返します。

  • フォントサイズ13

f:id:kurozu10344:20180815135537p:plain

  • フォントサイズ20

f:id:kurozu10344:20180815135541p:plain

  • フォントサイズ20 + 長い文字列

f:id:kurozu10344:20180815140157p:plain