NativeScript で FontAwesome(アイコンフォント) を使用
はじめに
NativeScript(NativeScript-Vue) で FontAwesome などのアイコンフォントを使用する方法。
TL;DR
- 基本は 公式ガイド: Icon Fonts 通り
.ttf
をapp/fonts
に配置app.css
(app.scss
) にfont-family
,font-weight
の記述を追加font-family
: iOS/Android 両対応の場合はフォント名とファイル名で定義
- unicode でアイコン表示
- mixin 作っておくと便利になる
目次
環境・条件
1 | $ sw_vers |
詳細
導入手順
参考: Icon Fonts - NativeScript Docs
上記の公式ガイド通りに進める。
FontAwesome ダウンロード/配置
NativeScript で FontAwesome を表示するには、Web 版をダウンロードして中に入っている .ttf
ファイルを利用する。
Download | Font Awesome の Free for Web からダウンロード。
(Pro 版を使う人は Pro for Web をダウンロード)
展開すると webfonts/
に xxxx.ttf
があるので、app/fonts
ディレクトリを作成し、xxxx.ttf
を配置。
今回は選別が面倒なので全部コピーしているが、実際には必要な分だけを配置するのが良い。
1 | $ mkdir -p app/fonts |
対応 class の定義
FontAwesome を扱うための class
を app/app.scss
(app/app.css
, etc) に定義。
Free
1 | .fab { |
Pro
1 | .fab { |
動作確認
適当なファイルに以下を追加。
※NativeScript-Vue での表示方法なので、他(Angular など)だと微妙に異なる可能性あり
1 | <template> |
Android エミュレータで確認、アイコンフォントが表示されていれば OK。
1 | $ tns debug android --emulator |
使いやすいように改良
ただし、これだと使いづらいので、別の利用方法を考える。
app/mixins/FontAwesome.js
を作成。
'fa-download'
などの文字列を渡すことで、'\uf019'
などの FontAwesome 用の unicode を返却するようにした。
1 | export default { |
app/main.js
で mixin に登録。
1 | import Vue from 'nativescript-vue' |
これで xxxx.vue
で :text="get_fa_text('fa-download')"
のようにすると unicode 文字列が取れる。
1 | <template> |
参考: FontAwesome Free 全 unicode 登録版
app/mixins/FontAwesome.js
の全文、長いので見たい人だけどうぞ。
unicode は https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css から抽出。
まとめ
- 基本は 公式ガイド: Icon Fonts 通り
.ttf
をapp/fonts
に配置app.css
(app.scss
) にfont-family
,font-weight
の記述を追加font-family
: iOS/Android 両対応の場合はフォント名とファイル名で定義
- unicode でアイコン表示
- mixin 作っておくと便利になる
その他・メモ
本当は CSS の :before
でやりたかったが、うまく動かなかった。
moayadnajd/nativescript-fontawesome では :before
を使っているので、「NativeScript のバージョンアップで使えなくなった」か「プラグイン内で :before
を使えるようにしている」かあたりか。
参考文献
- Icon Fonts - NativeScript Docs
- FontAwesome 5 and Nativescript - Juanky Aguilera - Medium
- NativeScript + Vue でフォントアイコン(FontAwesome)を使う - Qiita
- moayadnajd/nativescript-fontawesome: Your awesome NativeScript plugin for using fontawesome icons
関連記事
- NativeScript, JsBarcode でバーコードを 生成/描画
- NativeScript でデバイスの輝度(明るさ)を制御する
- NativeScript で入力範囲外タップでキーボードを非表示にする
- NativeScript-Vue で次入力欄にフォーカスする方法
- NativeScript で Locale を意識した DatePicker/TimePicker
- NativeScript-Vue でページ読み込み後にページ移動やダイアログの表示
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア