phpはreact-nativeのiconfontを生成する.jsonプロファイル

3726 ワード

react-nativeのreact-native-vector-iconsコンポーネントを使用する場合、unicodeコードのiconfont.jsonプロファイルを自分で生成する必要があります.アイコンが少ない場合は自分で手書きでいいですが、数十個以上の百個の時はハハハです.ここではphp生成プログラムを書いて、直接使用することができます.
1.次のコードを任意のphp接尾辞ファイルとして保存する
", $css));

        if (empty($icons) || !is_array($icons)) {
            exit('Not find icon');
        }
        return $icons;
    }

    private static function build($icons = [], $isBuild = true) {
        $glyphMap = [];
        if ($isBuild) {
            $glyphMap = "import {createIconSet} from 'react-native-vector-icons';

const glyphMap = {
"; } foreach ($icons as $value) { if (strpos($value, self::$delimiter) === false) { continue; } list($key, $val) = explode(self::$delimiter, $value); if (!is_numeric($val)) { $val = hexdec($val); } if (strpos($key, '-') !== false) { $key = str_replace('-', '_', $key); } if ($isBuild) { $glyphMap .= ' ' . $key . ': ' . $val . ",
"; } else { $glyphMap[$key] = $val; } } if ($isBuild) { $glyphMap = rtrim($glyphMap, ",
"); $glyphMap .= "
}

const iconFont = createIconSet(glyphMap, 'iconfont', 'iconfont.ttf');\r

export {iconFont}\r
"; } return $glyphMap; } private static function scandir($path = '', $filename = '') { if (!is_dir($path)) { return false; } foreach(scandir($path) as $file) { if ($file != '.' && $file != '..') { $_path = $path . DIRECTORY_SEPARATOR . $file; if (is_dir($_path)) { $data = self::scandir($_path, $filename); if (!empty($data)) { return $data; } } else { if (strpos($_path, 'iconfont.css') !== false) { return file_get_contents($_path); } } } } return false; } }

2.iconfontのアイコンファイルを解凍して変換ファイルのルートディレクトリに入れてダウンロードにアクセスする
  • 上のコードはphp 7の環境で正常な動作をテストする
  • です.