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中注册注册
相关推荐
2501_915918417 分钟前
Python如何抓取HTTPS请求包的完整教程与代码示例
android·ios·小程序·https·uni-app·iphone·webview
linweidong17 分钟前
iOS 开发面试 50 个高频易混淆知识点详解
ios·设计模式·面试·cocoa·uikit·uiview·uistackview
MonkeyKing44 分钟前
iOS 屏幕旋转与多窗口适配原理:横竖屏控制、SizeClasses、iPad分屏终极适配
ios
MonkeyKing1 小时前
iOS 事件传递与响应链全解:hitTest、pointInside 底层流程
ios
人月神话Lee1 小时前
【图像处理】图像直方图——从"频率分布"到"智能决策"
ios·ai编程·图像识别
2501_916008891 小时前
全面解析常用Web前端开发工具:编辑器、调试工具、性能分析器与框架
android·前端·ios·小程序·uni-app·编辑器·iphone
安静轨迹2 小时前
计算机网络三大核心数据表:MAC 地址表、ARP 表、路由表(深度通俗完整版)
网络·计算机网络·macos
一勺菠萝丶2 小时前
Mac Homebrew 更新卡住怎么办?如何更换国内源、查看进度和安装软件
macos
恋猫de小郭2 小时前
一个 Linux 调度器优化,让 Android 多耗 20% 的电,传音工程师如何发现问题?
android·前端·ios
飞天狗1113 小时前
2024第十五届蓝桥杯c/c++B组国赛题解
c语言·数据结构·c++·算法·蓝桥杯