ios 自定义UI字体SwiftUI和Xcode 14.1

pjngdqdw  于 2023-01-14  发布在  iOS
关注(0)|答案(1)|浏览(170)

首先,我意识到这样的问题以前也被问过,但看过所有的答案后,我仍然有问题。
我使用Xcode 14.1在SwiftUI中编写了第一个项目,并希望添加自定义字体。我首先在项目中创建了一个Fonts组,并使用Add Files to "Project"将.ttf文件添加到项目中,以确保选中Copy items if needed
然后,我将Fonts provided by application添加到Custom iOS Target Properties和字体的数组项(在本例中为Poppins)中,因此值读取为Fonts/Poppins-Regular.ttf

<key>UIAppFonts</key>
    <array>
        <string>Fonts/Poppins-Black.ttf</string>
        <string>Fonts/Poppins-BlackItalic.ttf</string>
        <string>Fonts/Poppins-Bold.ttf</string>
        <string>Fonts/Poppins-BoldItalic.ttf</string>
        <string>Fonts/Poppins-ExtraBold.ttf</string>
        <string>Fonts/Poppins-ExtraBoldItalic.ttf</string>
        <string>Fonts/Poppins-ExtraLight.ttf</string>
        <string>Fonts/Poppins-ExtraLightItalic.ttf</string>
        <string>Fonts/Poppins-Italic.ttf</string>
        <string>Fonts/Poppins-Light.ttf</string>
        <string>Fonts/Poppins-LightItalic.ttf</string>
        <string>Fonts/Poppins-Medium.ttf</string>
        <string>Fonts/Poppins-MediumItalic.ttf</string>
        <string>Fonts/Poppins-Regular.ttf</string>
        <string>Fonts/Poppins-SemiBold.ttf</string>
        <string>Fonts/Poppins-SemiBoldItalic.ttf</string>
        <string>Fonts/Poppins-Thin.ttf</string>
        <string>Fonts/Poppins-ThinItalic.ttf</string>
    </array>

但是,当在App swift文件中调用此函数的init()方法中打印字体时:

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)]")
        }
    }

它不输出我的自定义字体,同样当使用字体在我的视图中,它不呈现:

Text("Hello!")
    .font(Font.custom("Poppins-Regular", size: 18))

有趣的是,Xcode中的预览不起作用,因为将此属性添加到视图中的Text时报告了以下错误:Compiling failed: ambiguous use of 'font'
我已经搜索了又搜索,并尝试了一些兔子洞的解决方案,有没有人能提供建议?

bwitn5fc

bwitn5fc1#

你不需要在字体数组中包含组名,所以只需要例如:

<string>Poppins-Black.ttf</string>

相关问题