You could do something like the following:
Atleast you can get some ideas on how you could accomplish this :)
extension UIFont {
struct CustomFont {
private var fontFamily: String!
static let defaultFontSize: CGFloat = 12
func Light(withSize size: CGFloat = CustomFont.defaultFontSize) -> UIFont? {
return UIFont(name: "\(fontFamily)-Normal", size: size)
}
func Normal(withSize size: CGFloat = CustomFont.defaultFontSize) -> UIFont? {
return UIFont(name: "\(fontFamily)-Normal", size: size)
}
func Bold(withSize size: CGFloat = CustomFont.defaultFontSize) -> UIFont? {
return UIFont(name: "\(fontFamily)-Normal", size: size)
}
}
class var Lato: CustomFont {
return CustomFont(fontFamily: "Lato")
}
class var Helvetica: CustomFont {
return CustomFont(fontFamily: "Helvetica")
}
class var ComicSans: CustomFont {
return CustomFont(fontFamily: "ComicSans")
}
}
Usage:
let font = UIFont.Lato.Normal() // Returns a Normal font with default font size
let font = UIFont.Lato.Bold(withSize: 18) // Returns a Bold font with custom size