Je dois ajouter une police personnalisée à mon application. J'ai ajouté des polices à mon projet et répertorié la liste d'informations.
self.headTitle.font = UIFont.Proxima.regular.font(size: 30)
Erreur fatale: trouvé nul de manière inattendue lors du déballage d'une valeur facultative lors de l'appel
enum Proxima: String { case regular = "Regular" func font(size: CGFloat) -> UIFont { return UIFont(name: "Proxima-\(rawValue)", size: size)! } }
6 Réponses :
Il semble que vous n'ayez pas ajouté de polices dans votre cible
Sélectionnez vos polices et à partir du panneau de droite, vérifiez la cible
J'ai déjà vérifié la cible mais cela ne fonctionne pas. J'obtiens toujours la même erreur.
@Daliyachacko Essayez d'imprimer UIFont.familyNames
assurez-vous d'avoir le nom exact
@Daliyachacko Pouvez-vous voir la police en utilisant la méthode ci-dessus?
UIFont.familyNames ne répertorie pas ma police.
@Daliyachacko pourriez-vous s'il vous plaît poster une capture d'écran du fichier info.plist
J'ai ajouté l'image de info.plist. vérifie ça
@Daliyachacko ça a l'air bien. assurez-vous que vous n'avez pas d'espace supplémentaire, s'il est possible de partager un exemple de code?. Ou essayez d'autres polices et vérifiez que cela fonctionne ou non
Essayez ces
Ajoutez des fichiers personnalisés dans votre projet et vérifiez également dans Copier la ressource de l'ensemble en phase de construction
En utilisant cette fonction, vous pouvez vérifier les polices disponibles dans votre projet. ajoutez cette fonction dans appDelegate et appelez-la depuis didFinsihLaunching.
func printFonts() { let fontFamilyNames = UIFont.familyNames for familyName in fontFamilyNames { print("------------------------------") print("Font Family Name = [\(familyName)]") let names = UIFont.fontNames(forFamilyName: familyName) print("Font Names = [\(names)]") } }
Si votre police personnalisée est disponible dans la liste des polices imprimées, vous pouvez l'utiliser.
La police personnalisée ne figure pas dans la liste. Mais je vérifie les ressources du bundle et la police est là. J'ai mis à jour la question, pouvez-vous la vérifier.
Avez-vous vérifié avec la fonction printFonts? votre police y est disponible.
J'avais vérifié avec la même police. et je suis capable d'utiliser cette police. ------------------------------ Nom de la famille de polices = [Proxima Nova] Noms de polices = [["ProximaNova-Regular "]] ------------------------------
J'utilise un nouveau fichier de police Proxima-Regular.
Supprimez Regular pour la police car iOS utilise une police par défaut en tant que police standard, essayez de modifier le code de votre code et cela fonctionne bien après cela.
Ex:
@IBOutlet weak var label1: UILabel! enum OpenSans: String { case regular = "" case semiBold = "-Semibold" func font(size: CGFloat) -> UIFont { return UIFont(name: "OpenSans\(rawValue)", size: size)! } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib.. label1.font = OpenSans.regular.font(size: 30.0) label1.font = OpenSans.semiBold.font(size: 30.0) }
Si vous êtes toujours avez un problème Veuillez vous référer à ce projet de démonstration
J'espère que cela vous aidera.
Exécutez le code suivant pour vérifier la police disponible dans votre projet.
for fontFamilyName in UIFont.familyNames{ for fontName in UIFont.fontNames(forFamilyName: fontFamilyName){ print("Family: \(fontFamilyName) Font: \(fontName)") } }
Voir la sortie dans votre console, toutes les polices disponibles sont imprimées ici, vérifiez le nom de police réel de vos polices fournies.
Et utilisez ce nom de police pour UIFont (nom: "FontName", taille: 15)
Assurez-vous que vos fichiers sont ajoutés à votre cible
N'oubliez pas non plus de les ajouter dans la section "Police fournie par l'application" de Info.plist
Xcode 11.1, iOS 13.1
J'ai tout fait correctement, mais une police personnalisée manquait dans la liste des polices (via UIFont.fontNames (forFamilyName: fontFamilyName)
).
Ensuite, j'ai réorganisé la police manquante dans Info.plist (polices fournies par l'application) à l'avant et cela a fonctionné, oui.
Peut-être que cela aide quelqu'un.
Vérifiez-les - developer.apple.com/documentation/uikit/display_and_fon a> et codewithchris.com/… < / a>
L'avez-vous inclus dans le fichier
Info.plist
avec la cléPolices fournies par l'application
@ Vishal16 oui j'ai ajouté
pour la police standard, utilisez directement "Proxima". Xcode utilisera la police normale par défaut.