|
|
@@ -0,0 +1,59 @@ |
|
|
extension UIFont { |
|
|
class var defaultFontFamily: String { return "Georgia" } |
|
|
|
|
|
override public class func initialize() |
|
|
{ |
|
|
if self == UIFont.self { |
|
|
swizzleSystemFont() |
|
|
} |
|
|
} |
|
|
|
|
|
private class func swizzleSystemFont() |
|
|
{ |
|
|
let systemPreferredFontMethod = class_getClassMethod(self, "preferredFontForTextStyle:") |
|
|
let mySystemPreferredFontMethod = class_getClassMethod(self, "myPreferredFontForTextStyle:") |
|
|
method_exchangeImplementations(systemPreferredFontMethod, mySystemPreferredFontMethod) |
|
|
|
|
|
let systemFontMethod = class_getClassMethod(self, "systemFontOfSize:") |
|
|
let mySystemFontMethod = class_getClassMethod(self, "mySystemFontOfSize:") |
|
|
method_exchangeImplementations(systemFontMethod, mySystemFontMethod) |
|
|
|
|
|
let boldSystemFontMethod = class_getClassMethod(self, "boldSystemFontOfSize:") |
|
|
let myBoldSystemFontMethod = class_getClassMethod(self, "myBoldSystemFontOfSize:") |
|
|
method_exchangeImplementations(boldSystemFontMethod, myBoldSystemFontMethod) |
|
|
|
|
|
let italicSystemFontMethod = class_getClassMethod(self, "italicSystemFontOfSize:") |
|
|
let myItalicSystemFontMethod = class_getClassMethod(self, "myItalicSystemFontOfSize:") |
|
|
method_exchangeImplementations(italicSystemFontMethod, myItalicSystemFontMethod) |
|
|
} |
|
|
} |
|
|
|
|
|
extension UIFont { |
|
|
private class func myPreferredFontForTextStyle(style: String) -> UIFont |
|
|
{ |
|
|
let defaultFont = myPreferredFontForTextStyle(style) // will not cause stack overflow - this is now the old, default UIFont.preferredFontForTextStyle |
|
|
let newDescriptor = defaultFont.fontDescriptor().fontDescriptorWithFamily(defaultFontFamily) |
|
|
return UIFont(descriptor: newDescriptor, size: defaultFont.pointSize) |
|
|
} |
|
|
|
|
|
private class func mySystemFontOfSize(fontSize: CGFloat) -> UIFont |
|
|
{ |
|
|
return myDefaultFontOfSize(fontSize) |
|
|
} |
|
|
|
|
|
private class func myBoldSystemFontOfSize(fontSize: CGFloat) -> UIFont |
|
|
{ |
|
|
return myDefaultFontOfSize(fontSize, withTraits: .TraitBold) |
|
|
} |
|
|
|
|
|
private class func myItalicSystemFontOfSize(fontSize: CGFloat) -> UIFont |
|
|
{ |
|
|
return myDefaultFontOfSize(fontSize, withTraits: .TraitItalic) |
|
|
} |
|
|
|
|
|
private class func myDefaultFontOfSize(fontSize: CGFloat, withTraits traits: UIFontDescriptorSymbolicTraits = []) -> UIFont |
|
|
{ |
|
|
let descriptor = UIFontDescriptor(name: defaultFontFamily, size: fontSize).fontDescriptorWithSymbolicTraits(traits) |
|
|
return UIFont(descriptor: descriptor, size: fontSize) |
|
|
} |
|
|
} |