Interface BuilderのUI要素にベースのカスタムクラスが適用されているか検出する

Interface BuilderのUI要素にベースのカスタムクラスが適用されているか検出する方法について。

アプリ開発のプロジェクトでは、スタイルガイドに沿ったベースのUIクラスを作成されている場合もあると思います。 例えばアプリのプライマリーカラーと同じ文字色のラベルやボタンなどが考えられます。Interface BuilderでUIを作成されている方は多いと思いますが、Interface Builderを使っているとそういったベースとなるUIクラスを適用し忘れがちです。 ベースとなるクラスを使えばいいのに、IB上で色やフォントを設定してしまったり、そもそもベースクラスの存在に気づかなかったりなど、どうしても起こってしまう問題かと思います。

IBLinteruse_base_classルールを使うとInterface BuilderのUI要素に指定のカスタムクラスが適用されているかをチェックすることができます。

例えば全てのUILabelPrimaryLabelSecondaryLabelのどちらかのクラスを設定する必要がある場合はこのuse_base_classルールが便利です。 使い方はIBLinterの設定ファイルである.iblinter.ymluse_base_class_ruleを追加し、チェックしたいクラスをelement_classに、適用したいカスタムクラスの一覧をbase_classesに記述します。

例えば以下のような形です。

enabled_rules:
  - use_base_class
use_base_class_rule:
  - element_class: UILabel
    base_classes:
      - PrimaryLabel
      - SecondaryLabel

これでIBLinterを実行すると、PrimaryLabelまたはSecondaryLabelが適用されていないラベルにはXcode上でwarningが表示されるようになります。

UseBaseClass

これでIB上でベースクラスが適用されていないUI要素を確認することができます。

サンプルプロジェクトを作成したので実際に警告が表示されるのを試してみてください。

masamichiueta/UseBaseClassRule

エンジニアリング Interface Builder iOS Xcode IBLinter


関連記事