xcode 模拟器上的 expo 字体会走错路径

问题描述 投票:0回答:1

所以,我有一个expo React Native应用程序,我已经在xcode中打开它,并且我在模拟器中运行它,除了字体未加载之外没有任何问题。我的字体存储在我的 React Native 根文件夹中的 asset/fonts 中,并且在生成的 ios 文件夹中,它们位于 asset/assets/fonts 中。因此,当它在模拟器中时,字体被放置在 .app 中,因此在根文件夹中,导致它们无法加载,因为我的代码期望它们位于 .app/assets/assets/fonts 中,我将如何修复所有帮助? .

错误

在模拟器中加载字体时存储字体的位置

应用程序.json


{

  "expo": {

"assetBundlePatterns": [

        "**/*"

    ],

    "fonts":{

        "GothamRoundedMedium":"./assets/fonts/gothamrnd_medium.otf",

        "GothamRoundedBold":"./assets/fonts/gothamrnd_bold.otf",

        "GothamRoundedLight":"./assets/fonts/gothamrnd_light.otf",

        "GothamRoundedBook":"./assets/fonts/gothamrnd_book.otf",

        "GothamNarrowMedium":"./assets/fonts/gotham_narrow/GothamNarrow-Medium.otf",

        "GothamNarrowXMedium":"./assets/fonts/gotham_narrow/GothamXNarrow-Medium.otf"

      },

    "name": "main",

    "displayName": "appname",

    "entryPoint": "./index.tsx",

    "slug": "appname",

    "version": "1.0.0",

    "orientation": "portrait",

    "icon": "./assets/icon.png",

    "userInterfaceStyle": "light",

    "splash": {

      "image": "./assets/splash.png",

      "resizeMode": "contain",

      "backgroundColor": "#ffffff"

    },

    "ios": {

      "supportsTablet": true,

       "bundleIdentifier": "com.anon.hsl",

      "buildNumber": "1.0.0"

    },

    "android": {

      "adaptiveIcon": {

        "foregroundImage": "./assets/adaptive-icon.png",

        "backgroundColor": "#ffffff"

      },

      "package": "com.anonymous.hsl"

    },

    "web": {

      "favicon": "./assets/favicon.png"

    }

  }

}

Metro 配置文件


// Learn more https://docs.expo.io/guides/customizing-metro

const { getDefaultConfig: getDefaultExpoConfig } = require('expo/metro-config');

const { mergeConfig, getDefaultConfig } = require('@react-native/metro-config');

 

/** @type {import('expo/metro-config').MetroConfig} */

const expoConfig = getDefaultExpoConfig(__dirname);

const defaultConfig = getDefaultConfig(__dirname);

 

const { assetExts, sourceExts } = expoConfig.resolver;

 

const config = {

    transformer: {

        ...expoConfig.transformer,

        babelTransformerPath: require.resolve("react-native-svg-transformer/expo")

    },

    resolver: {

        ...expoConfig.resolver,

        assetExts: assetExts.filter((ext) => ext !== "svg"),

        sourceExts: [...sourceExts, "svg"]

    }

};

 

module.exports = mergeConfig(defaultConfig, expoConfig, config);

我如何加载字体

const load_fonts = async() => {
  await Font.loadAsync({
    'GothamRoundedMedium': require('./assets/fonts/gothamrnd_medium.otf'),
    'GothamRoundedBold': require('./assets/fonts/gothamrnd_bold.otf'),
    'GothamRoundedLight': require('./assets/fonts/gothamrnd_light.otf'),
    'GothamRoundedBook': require('./assets/fonts/gothamrnd_book.otf'),
    'GothamNarrowMedium': require('./assets/fonts/gotham_narrow/GothamNarrow-Medium.otf'),
    'GothamNarrowXMedium': require('./assets/fonts/gotham_narrow/GothamXNarrow-Medium.otf'),
  });

};

我尝试以加载字体的方式更改字体的路径,以匹配模拟器中的字体,但我不能,因为它与我的反应本机文件夹结构不匹配

xcode react-native expo
1个回答
0
投票

这似乎只是 Xcode 模拟器中的一个问题,当我进行 .ipa 构建时,一切似乎都工作正常

© www.soinside.com 2019 - 2024. All rights reserved.