FontAwesomeKitはそれ自体に組み込まれてないアイコンフォントを使う場合にも役立つ
例えば、 https://github.com/erikflowers/weather-icons を使いたいって時の例。
weather-icons.css
とweathericons-regular-webfont.ttf
とかをリポジトリに入れておく。- コードジェネレータを準備(
CodeGenerator.rb
,gen.rb
) FAKWeatherIcons.fakgen.[h|m]
を生成(ruby gen.rb
)
$ tree WeatherIcons WeatherIcons ├── FAKWeatherIcons.fakgen.h ├── FAKWeatherIcons.fakgen.m ├── code_generator.rb ├── gen.rb ├── weather-icons.css └── weathericons-regular-webfont.ttf
weathericons-regular-webfont.ttf
をリソースに追加FAKIcon
を継承したTQWeatherIcons
を作るTQWeatherIcons
にFAKWeatherIcons.fakgen.[h|m]
をコピペして、singleton生成のためのクラスメソッド書く。
※ コードジェネレータを準備のとこで、提供されてるCSSに合わせたgen.rb
を適当に書く
require './CodeGenerator.rb' # https://github.com/PrideChung/FontAwesomeKit/blob/master/CodeGenerators/CodeGenerator.rb names = [] codes = [] _lines = File.read("./weather-icons.css").lines lines = [] _lines.each_with_index do |l, index| case l when /^\.wi-.+{/ lines << l + _lines[index + 1] + _lines[index + 2] end end lines.each do |line| name = '' line.gsub(/(?<=wi-).*(?=:before)/i) { |match| name = match } nameParts = name.split('-') nameParts = nameParts.each_with_index.map do |p, i| if i < 1 p else p = p.capitalize end end name = nameParts.join names.push name code = '' line.gsub(/".*"/) { |match| code = match[2..(match.length-2)] } codes.push "\\u#{code}" end generator = CodeGenerator.new('WeatherIcons', names, codes) generator.generate
こういう風に元々FontAwesomeKitに入ってないフォントでも、UIImage化したりとかFAKIconが提供している便利機能を使えて良い。