我目前正试图重写UIFont的systemFontOfSize方法与给定的字体大小回到我的自定义字体。我的代码目前看起来是这样的:
extension UIFont
{
class func systemFontOfSize(fontSize: CGFloat) -> UIFont
{
return UIFont(name: "HelveticaNeue", size: 10)!
}
}
然而,我无法覆盖该方法。当使用上述所示的代码,我得到以下错误:
"Method 'systemFontOfSize' with Objective-C selector 'systemFontOfSize:' conflicts with previous declaration with the same Objective-C selector"
当添加覆盖,错误的是,该方法没有任何覆盖。有谁知道如何解决这个问题?
您可以使用目标C扩展如下,如果它符合您的需求。
与此相关的技术与我的源代码作为一个答案前面的讨论可以在这里找到:Is there a way to change default font for your application。
所有你需要做的是落实与上面的链接中提到的代码的类,包括在你的伞头下面的头文件,以便能够使调用雨燕代码方法时,该代码被应用。
头文件UIFont+Utils.h
:
@interface UIFont (Utils)
+ (UIFont *)systemFontOfSize:(CGFloat)size;
+ (UIFont *)lightSystemFontOfSize:(CGFloat)size;
+ (UIFont *)boldSystemFontOfSize:(CGFloat)size;
+ (UIFont *)preferredFontForTextStyle:(NSString *)style;
@end
您可以使用#selector
重定向UIFont
电话去自定义函数。
class FontClass: UIFont{
override class func systemFontOfSize(fontSize: CGFloat) -> UIFont
{
return UIFont(name: "HelveticaNeue", size: 10)!
}
}
在项目中,你可以使用它像这样:
FontClass.systemFontOfSize(10)
希望能帮助你!
要能够覆盖功能,必须先继承UIFont。你有什么要做的,是不可能的。你想在扩展重新定义功能。所以,我没有积极的消息,但事实就是事实。
PS:如果你是一个Objective C“专家”,一些黑客也可...