はじめに
SwiftでUILabelにべき乗(「10の2乗」や「2のn乗」)を表示する方法を実装してみた。
環境
Xcode 9.2
Swift 4.0.2
実装方法
まずはIBOutletでラベルの紐付け
@IBOutlet weak var lbl: UILabel!
10の2乗
// 通常の文字フォントサイズ
let font:UIFont? = UIFont(name: "Helvetica", size:40)
// べき乗の文字フォントサイズ
let fontSuper:UIFont? = UIFont(name: "Helvetica", size:20)
let attString:NSMutableAttributedString = NSMutableAttributedString(string: "102", attributes: [.font:font!])
// 10の2乗
attString.setAttributes([.font:fontSuper!,.baselineOffset:20], range: NSRange(location:2,length:1))
lbl.attributedText = attString // 102
複数べき乗が存在する場合はsetAttributesを複数記述する
let font:UIFont? = UIFont(name: "Helvetica", size:40)
let fontSuper:UIFont? = UIFont(name: "Helvetica", size:20)
let attString:NSMutableAttributedString = NSMutableAttributedString(string: "(1-(1-R)n)10", attributes: [.font:font!])
// 1つ目のべき乗
attString.setAttributes([.font:fontSuper!,.baselineOffset:20], range: NSRange(location:8,length:1))
// 2つ目のべき乗
attString.setAttributes([.font:fontSuper!,.baselineOffset:20], range: NSRange(location:10,length:2))
veki.attributedText = attString // (1-(1-R)n)10