UIFont Class 在 Swift 中崩溃的应用程序
UIFont Class Crashed app in Swift
我有一个 UIFont Class 看起来像这样:
struct FontHelper {
func defaultFont(size: CGFloat) -> UIFont {
return UIFont(name:"Helvetica", size: size)!
}
}
我这样调用方法
let fonts = FontHelper.defaultFont(12)
但是我的应用程序在包装可选时因意外发现 nil 而崩溃?
不知道为什么?
应该这样称呼
let fonts = FontHelper().defaultFont(mySize)
由于您要将自己的个人功能添加到 Type,我认为您应该使用 extension ,在你的 class:
之外声明这个 extension
extension UIFont {
// You can set a default value for the size if the user doesn't provide one.
class func defaultFont(_ size: CGFloat = 12) -> UIFont {
return UIFont(name:"Helvetica", size: size)!
}
}
现在,UIFont Type 具有您刚刚添加的非常酷的功能。
在你的 class 中,称它为:
let font = UIFont.defaultFont(12)
我希望你能在这里看到 extensions 的强大功能,所以在 [=42 中充分利用它们=]!
当你和 UIFont(name:"HelveticaCE-Regular", size:14.0)
一起工作时
我相信 iOS 在使用 fontWithName: size:
时需要字体的 PostScript 名称,您可以 find/verify 通过在 Apple 的字体簿中打开字体 并输入 command+I.
也许这对你有帮助。
如果您手动将自定义字体添加到您的项目中,您需要在运行时使用之前注册这些字体:
func loadFont(withName fontName: String) {
guard let fontURL = Bundle.main.url(forResource: fontName, withExtension: "ttf"),
let fontData = try? Data(contentsOf: fontURL) as CFData,
let provider = CGDataProvider(data: fontData),
let font = CGFont(provider) else { return }
CTFontManagerRegisterGraphicsFont(font, nil)
}
// For example, this array need to contain the fonts filenames without extension.
let fontNames = ["Roboto-Black", "Roboto-Regular", "Roboto-Bold"]
for fontName in fontNames {
loadFont(withName: fontName)
}
我有一个 UIFont Class 看起来像这样:
struct FontHelper {
func defaultFont(size: CGFloat) -> UIFont {
return UIFont(name:"Helvetica", size: size)!
}
}
我这样调用方法
let fonts = FontHelper.defaultFont(12)
但是我的应用程序在包装可选时因意外发现 nil 而崩溃?
不知道为什么?
应该这样称呼
let fonts = FontHelper().defaultFont(mySize)
由于您要将自己的个人功能添加到 Type,我认为您应该使用 extension ,在你的 class:
之外声明这个 extensionextension UIFont {
// You can set a default value for the size if the user doesn't provide one.
class func defaultFont(_ size: CGFloat = 12) -> UIFont {
return UIFont(name:"Helvetica", size: size)!
}
}
现在,UIFont Type 具有您刚刚添加的非常酷的功能。
在你的 class 中,称它为:
let font = UIFont.defaultFont(12)
我希望你能在这里看到 extensions 的强大功能,所以在 [=42 中充分利用它们=]!
当你和 UIFont(name:"HelveticaCE-Regular", size:14.0)
一起工作时
我相信 iOS 在使用 fontWithName: size:
时需要字体的 PostScript 名称,您可以 find/verify 通过在 Apple 的字体簿中打开字体 并输入 command+I.
也许这对你有帮助。
如果您手动将自定义字体添加到您的项目中,您需要在运行时使用之前注册这些字体:
func loadFont(withName fontName: String) {
guard let fontURL = Bundle.main.url(forResource: fontName, withExtension: "ttf"),
let fontData = try? Data(contentsOf: fontURL) as CFData,
let provider = CGDataProvider(data: fontData),
let font = CGFont(provider) else { return }
CTFontManagerRegisterGraphicsFont(font, nil)
}
// For example, this array need to contain the fonts filenames without extension.
let fontNames = ["Roboto-Black", "Roboto-Regular", "Roboto-Bold"]
for fontName in fontNames {
loadFont(withName: fontName)
}