Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #288】UILabelやUIButtonに表示している文字列のフォントサイズを自動調整させる

はじめに

UILabelやUIButtonのサイズは固定で、表示する文字列が短かったり、
長かったりと動的に設定される。

その際、文字列が長くて、文字列の後ろが切れてしまう場合、
文字列のサイズを小さくして、(できるかぎり)全ての文字列を表示したい、
という場合があります。

この記事を読んでわかること

  • UILabelやUIButtonに表示している文字列のフォントサイズを自動調整させる

自動調整させるには?

UILabelにはフォントサイズを自動調整させるためのプロパティがある。
これらのプロパティを設定することで自動調整させることができる。

adjustsFontSizeToFitWidthをtrueにすると自動調整が有効になる。
minimumScaleFactorはUILabelに収まらない場合、
どのくらいまで文字列を縮小されるかを0.0から1.0で指定する。

これらのプロパティはIB(Interface Builder)でも設定できる。

なお、UIButtonの場合、titleLabelプロパティから上記プロパティを設定する。

自動調整させない場合

表示できない部分は...でトランケートされる。

ソース

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = UIColor.lightGray
        
        // UILabelの表示
        let str = "Hello, World!!!"
        let label = UILabel(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 60, height: 20)))
        label.text = str
        label.center = view.center
        view.addSubview(label)
    }
}

スクリーンキャプチャ

f:id:fjswkun:20161119145208p:plain

自動調整させた場合

全ての文字列を表示できるように文字サイズが縮小される。

ソース

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = UIColor.lightGray
        
        // UILabelの表示
        let str = "Hello, World!!!"
        let label = UILabel(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 60, height: 20)))
        label.adjustsFontSizeToFitWidth = true  // 自動調整を有効にする
        label.minimumScaleFactor = 0.5  // 半分の大きさまで縮小させられる
        label.text = str
        label.center = view.center
        view.addSubview(label)
    }
}

スクリーンキャプチャ

f:id:fjswkun:20161119145325p:plain


サンプルソースのダウンロード

SampleLabelText.zip - Google ドライブ

参考情報

Swift

iOSアプリ開発未経験の人向け
・Swift初心者の人に評判が良いようですね


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift

詳解 Swift 改訂版

詳解 Swift 改訂版