簡體   English   中英

字體未在 IOS 或 Android 上加載

[英]Font is not loading on either IOS or Android

在此處輸入圖片說明 它說我可以使用 Expo.Apploading 但我對此一無所知。 如果有人可以提供幫助,那就太好了。 這發生在我正在運行的任一設備中。 下面是 App.js 的代碼

import React, {useState}from 'react';
import {Text, View } from 'react-native';
import *as Font from 'expo-font';
import {AppLoading} from 'expo';

import {enableScreens} from 'react-native-screens';
import EstesGuideNavigator from './navigation/EstesGuideNavigator'; 

enableScreens(); // useScreens has been changed to enableScreens - this helps screens load faster in background

const fetchFonts = () => {   //fetching costum fonts for my app using Async
  Font.loadAsync({
    'raleway-blackItalic' : require('./assets/fonts/Raleway-BlackItalic.ttf'),
    'raleway-bold' : require('./assets/fonts/Raleway-Bold.ttf'),
    'raleway-regular' : require('./assets/fonts/Raleway-Regular.ttf'),
    'raleway-thin' : require('./assets/fonts/Raleway-Thin.ttf')
  });
}; 

export default function App()  {

const [fontLoaded, setFontLoaded] = useState(false); //initially it's false because app hasn't been loaded 

if (!fontLoaded) {
  return(
  <AppLoading 
  startAsync = {fetchFonts} 
  onFinish = {() => setFontLoaded(true) }
  /> //if assets(fonts here) is not loaded we display loading screen and load assets for app
  );  

} 
return <EstesGuideNavigator/>;

}

有沒有辦法解決這個問題? 在此處輸入圖片說明

我不知道出了什么問題,但這就是我處理字體加載的方式,完美運行

import { AppLoading } from "expo";
import { Asset } from "expo-asset";
import * as Font from "expo-font";
import React, { useState } from "react";
import { Platform, StatusBar, StyleSheet, View } from "react-native";
import { Ionicons } from "@expo/vector-icons";

import AppNavigator from "./navigation/AppNavigator";

export default function App(props) {
  const [isLoadingComplete, setLoadingComplete] = useState(false);

  if (!isLoadingComplete && !props.skipLoadingScreen) {
    return (
      <AppLoading
        startAsync={loadResourcesAsync}
        onError={handleLoadingError}
        onFinish={() => handleFinishLoading(setLoadingComplete)}
      />
    );
  } else {
    return (
      <View style={styles.container}>
        {Platform.OS === "ios" && <StatusBar barStyle="default" />}
        <AppNavigator />
      </View>
    );
  }
}

async function loadResourcesAsync() {
  await Promise.all([
    Asset.loadAsync([
      require("./assets/images/tick.png"),
      require("./assets/images/error.png")
    ]),
    Font.loadAsync({
      // This is the font that we are using for our tab bar
      ...Ionicons.font,
      // We include SpaceMono because we use it in HomeScreen.js. Feel free to
      // remove this if you are not using it in your app
      "space-mono": require("./assets/fonts/SpaceMono-Regular.ttf"),
      "Gilroy-Bold": require("./assets/fonts/Gilroy-Bold.otf"),
      "Gilroy-Medium": require("./assets/fonts/Gilroy-Medium.otf"),
      "Gilroy-Heavy": require("./assets/fonts/Gilroy-Heavy.otf")
    })
  ]);
}

function handleLoadingError(error) {
  // In this case, you might want to report the error to your error reporting
  // service, for example Sentry
  console.warn(error);
}

function handleFinishLoading(setLoadingComplete) {
  setLoadingComplete(true);
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff"
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM