[Sketch 3] シンボルのインスタンスごとにテキストや画像を設定できるオーバーライド機能の使い方

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

目次

  • はじめに
  • シンボルを作る
  • コンテンツをオーバーライドする
  • 小技: 不要なフィールドをインスペクタに表示しない方法
  • まとめ

はじめに

2016年4月に Sketch 3.7 がリリースされ、シンボル機能が大幅に改善しました。
今回は、改善された機能のなかでも特にうれしかったテキストや画像等のコンテンツをオーバーライドする機能について、その使い方をご紹介します。

シンボルを作る

まずはシンボルを作ります。
サンプルでこんな感じのプロフィールカードUIを作ったので、メニューの Layer > Create Symbol からシンボルを作ります。

スクリーンショット 2016-07-07 17.13.42

シンボルを作ったらインスタンスを選択します。
インスペクタに注目です。なにやら文字を入力したり画像を選択したりできそうなフィールドが追加されているのがわかります。

スクリーンショット_2016-07-07_17_13_56-11

画像を見ていただくとわかるように、フィールド名がイマイチです。
これは、レイヤー名がそのままフィールド名になるためです。今回のサンプルでは次のようにレイヤー名を変更しました。

layer-rename fieldname-change-2

コンテンツをオーバーライドする

細かい説明は不要だと思います。
インスペクタの各フィールドに文字を入力する、もしくは画像を選択することでインスタンスのコンテンツをオーバーライドできます。
実際にカバー画像(Cover image)、名前(Name)、仕事(Job)のフィールドをオーバーライドしてみたのが次の画像です。

スクリーンショット 2016-07-07 17.49.19

override-before-after

ちゃんとオーバーライドされています。
もちろん、オーバーライドで値を変更した場合は同じシンボルであっても他のインスタンスの値は変わりません。

小技: 不要なフィールドをインスペクタに表示しない方法

シンボルを作成するとテキスト、イメージのレイヤーがオーバーライド可能なものとして扱われます。 しかし、今回の例のようにインスタンスごとに変更する必要のないものもあると思います。

スクリーンショット 2016-07-07 18.48.15

これらの使うことのないフィールドはミスを誘発するだけなので、表示されないことが望ましいです。
インスペクタのフィールドを非表示にするにはどうすればよいかというと、

非表示にしたいレイヤーをロックする

これだけです。

これまでも、意図的にレイヤーを編集できないようにする目的でレイヤーをロックしてきたと思いますがシンボルのオーバーライドでも同じ意味で使用することができます。

スクリーンショット 2016-07-07 17.49.59

field-delete-2

これで、すっきり不要なフィールドを非表示にすることができます。

まとめ

これまでの Sketch のシンボルはあまり使い勝手のよいものではなかったのでイマイチ活用できていませんでしたが、オーバーライドその他の改善がされたことでシンボルが活躍する場面が増えました。
リストのUIや今回のようなプロフィールのUIは、レイアウトや要素は同じで項目によって内容が変わるものなので、オーバーライド機能を使うと効率的に作業することができると思います。

Sketch 3.7 以降のバージョンでは、いつも通りにシンボルを作るだけでオーバーライドの機能を使うことができますのでぜひ活用してみてください。