[Swift5] User Defined Runtime Attributesを使用して、Storyboardからプロパティの初期値を設定してみた


はじめに

UIを設定するプロパティの初期値をStoryboardから設定してみたので、備忘録としてその手順を記します。

環境

[Xcode] Version 12.4
[Swift] Version 5.3.2

実装手順

Storyboardの[Identity Inspector]タブのUser Defined Runtime Attributesに「+」を押して設定するだけです。
「Key Path」にプロパティ名を、「Type」には今回はColorを、「Value」には設定したい色を入れます。

但し、コードでプロパティを定義するときに、@objc dynamicをつける必要があります。
Objective-CのクラスやメソッドをSwiftでも使えるようにするためのキーワードのようです。

FirstViewController
import UIKit

final class FirstViewController: UIViewController {

    @IBOutlet private weak var centerLabel: UILabel!
    //ラベルの背景色を設定する変数に対して、StoryboardからColorを設定する
    @objc
    dynamic var labelBackgroundColor = UIColor(red: 0.1, green: 0.2, blue: 0.6, alpha: 1.0)

    override func viewDidLoad() {
        super.viewDidLoad()
        //ラベルの背景色を設定したColorにする
        centerLabel.backgroundColor = labelBackgroundColor

    }
}

今のところ、Colorを含めて11種類 (Boolean, Number, String, Localized String, Point, Rect, Range, Color, Image, Nil)のTypeを指定できるので、色々試してみたいと思います。

参考文献

この記事は以下の情報を参考にしました。
- dynamic var を理解するための極意 - swift
- Swift4でUser Defined Runtime Attributesがうまく効かないところがあった