iOS/Mac项目接入字体(壳工程/组件库)

iOS/Mac项目接入字体

  • 一、准备

  • 二、接入

  • 为了减少专利字体对项目的影响,项目工程中需要接入公司自己的字体库,对于iOS/Mac项目来说接入非系统的外部字体,或者第三方字体,放在壳工程下,操作步骤以及使用来说相对简单,并且常用,如果放到组件库中多需要注意Bundle的影响,以及多了字体库的安装步骤(不建议在组件中

一、准备

二、接入

1,壳工程接入和使用

  • 1,字体下载完后,解压到本地,常用字体文件格式有.otf,.ttf,.ttc等。

  • 2,添加到Xcode工程,可以直接把字体文件拖拽到壳工程并"Copy Bundle Resources",也可以在 File->Add Files to "xxx",将字体文件添加到壳工程中

  • 3,Info.plist文件,新增Key- Value,"Fonts provided by application" 添加字体数组,eg.

  • 直接通过索引名称使用,或者通过遍历UIFont.familyNames,找到相应的名字使用。

cpp 复制代码
public extension UIFont {
    
    /// 扩展字体,非系统字体, 字体大小,字体名称,如果找不到相关字体,允许返回nil
    class func ex_extFont(ofSize fontSize: CGFloat, fontName: String) -> UIFont? {
        return self.init(name: fontName, size: fontSize)
    }

/// 思源黑体字体支持
    class func SourceHLight(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Light") ?? ex_light(ofSize: fontSize)
    }
    class func SourceHBold(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Bold") ?? ex_bold(ofSize: fontSize)
    }
    class func SourceHHeavy(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Heavy") ?? ex_heavy(ofSize: fontSize)
    }
    class func SourceHRegular(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Regular") ?? ex_regular(ofSize: fontSize)
    }
    class func SourceHNormal(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Normal") ?? ex_regular(ofSize: fontSize)
    }
    class func SourceHExtraLight(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-ExtraLight") ?? ex_light(ofSize: fontSize)
    }
    class func SourceHMedium(ofsize fontSize: CGFloat) -> UIFont {
        return ex_extFont(ofSize: fontSize, fontName: "SourceHanSansCN-Medium") ?? ex_medium(ofSize: fontSize)
    }
}

2,组件库接入和使用

  • 1,把字体放到组件的Assets文件中
  • 2,遍历Bundle找到字体并在application:didFinishLaunchingWithOptions中注册注册
相关推荐
Swift社区1 小时前
使用 MetricKit 监控应用性能
ios·swiftui·swift
LawrenceMssss2 小时前
由于创建一个完整的App涉及到多个层面(如前端、后端、数据库等),并且每种语言通常有其特定的用途(如Java/Kotlin用于Android开发,Swift/Objective-C用于iOS开发,Py
android·java·ios
依旧风轻2 小时前
NSTimer的运行机制
macos·objective-c·cocoa·nstimer
wuqingshun3141594 小时前
蓝桥杯 缺页异常2【算法赛】
算法·职场和发展·蓝桥杯
2501_915921436 小时前
如何在苹果手机上面进行抓包?iOS代理抓包,数据流抓包
android·ios·智能手机·小程序·uni-app·iphone·webview
Boyang_6 小时前
在 iOS 26 上@property 的一个小 bug
ios
七牛云行业应用7 小时前
iOS 19.3 突发崩溃!Gemini 3 导致 JSON 解析失败的紧急修复
人工智能·ios·swift·json解析·大模型应用
恋猫de小郭7 小时前
Compose Multiplatform 1.10 Interop views 新特性:Overlay 和 Autosizing
android·flutter·macos·kotlin·github·objective-c·cocoa
初级代码游戏8 小时前
iOS开发 SwiftUI 6 :List
ios·swiftui·swift
00后程序员张8 小时前
iOS APP 性能测试工具,监控CPU,实时日志输出
android·ios·小程序·https·uni-app·iphone·webview