毎度どうもこんにちは。iOSをメインに開発しているロッキーカナイです。
今回のちょい足しレシピは、UILabelのtextが特定の文字だった場合にフォントを変えてみるお話です。
これUILabelだけでなくUITextFieldやUITextViewでも可能なので使えると思います。
今回は、アルファベットの時だけフォントを変えるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
extension String { var isAlphabet: Bool { return range(of: "[^a-zA-Z ]", options: .regularExpression) == nil } } class AutoSwithingLabel: UILabel { let fontAlphabet = "Copperplate-Light" let fontOther = "HiraginoSans-W3" override var text: String? { willSet(t) { selectFont(t) } } private func selectFont(_ text: String?) { if let ret = text { let fontName = ret.isAlphabet ? fontAlphabet : fontOther self.font = UIFont(name: fontName, size: self.font.pointSize) } } } |
使い方は、こんな感じになります(storyboardは省略します)
1 2 3 4 5 6 7 8 9 |
class ViewController : UIViewController { @IBOutlet weak var label1: AutoSwithingLabel! @IBOutlet weak var label2: AutoSwithingLabel! override func viewDidLoad() { label1.text = "ABC" label2.text = "あいう" } } |
できました!
ちなみにUITextFieldやUITextViewで使用する場合は self.font.pointSize の所を修正すれば可能です。
ABOUT ME
