README.md 3.0 KB
Newer Older
N
Nicholas Maccharoli 已提交
1 2
# UIFontComplete
[![Build Status](https://travis-ci.org/Nirma/UIFontComplete.svg?branch=master)](https://travis-ci.org/Nirma/UIFontComplete)
N
Nicholas Maccharoli 已提交
3
![Swift 3.1.1](https://img.shields.io/badge/Swift-3.1.1-orange.svg)
N
Nicholas Maccharoli 已提交
4 5
![CodeCov](https://img.shields.io/codecov/c/github/Nirma/UIFontComplete.svg)
[![CocoaPods compatible](https://img.shields.io/cocoapods/v/UIFontComplete.svg)](#cocoapods)
N
Nicholas Maccharoli 已提交
6
[![CocoaPods](https://img.shields.io/cocoapods/dt/UIFontComplete.svg)]()
N
Nicholas Maccharoli 已提交
7 8 9 10 11 12 13
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)

Make working with `UIFont` faster and less error-prone

## Usage 
No more muddling around searching for names of `UIFont` types and no more surprises at runtime if a font name was mistyped.
N
Nicholas Maccharoli 已提交
14 15
This library is simply one extension to `UIFont` and one `Font` `enum` with a case for each system font on iOS. 
Custom font support is also available, please keep reading for details!
N
Nicholas Maccharoli 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29

Instead of the `String` base constructor for `UIFont`:

```swift
let font = UIFont(name: "Arial-BoldItalicMT", size: 12.0)
```

You can now simply start typing the name of the font enum and let code completion help you:

![](http://i.imgur.com/yBYRQVB.gif)


```swift
let font = UIFont(font: .arialBoldItalicMT, size: 12.0)
N
Nicholas Maccharoli 已提交
30 31
```

N
Nicholas Maccharoli 已提交
32
There is also a handy (and way cooler) extension to the `Font` enumeration that allows the creation of `UIFont` objects with a specified size like so:
N
Nicholas Maccharoli 已提交
33 34 35

```swift
let myFont = Font.helvetica.of(size: 12.0)
N
Nicholas Maccharoli 已提交
36 37
```

N
Nicholas Maccharoli 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
### What about Custom Fonts?
Custom Fonts can be added with the help of the `FontRepresentable` protocol.
Simply create your own `CustomFont` `String` based enumeration that adapts the 
`FontRepresentable` and add a case per font that you want to add like so:

```swift
// In your project using custom fonts

enum CustomFont: String, FontRepresentable {
    case alexBrushRegular = "AlexBrush-Regular"
}

CustomFont.alexBrushRegular.of(size: 12.0) // => UIFont
```


N
Nicholas Maccharoli 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## Installation

#### Carthage

If you use Carthage to manage your dependencies, simply add
UIFontComplete to your `Cartfile`:

```
github "Nirma/UIFontComplete"
```

If you use Carthage to build your dependencies, make sure you have added `UIFontComplete.framework` to the "_Linked Frameworks and Libraries_" section of your target, and have included `UIFontComplete.framework` in your Carthage framework copying build phase.

#### CocoaPods

If you use CocoaPods to manage your dependencies, simply add
UIFontComplete to your `Podfile`:

```
pod 'UIFontComplete'
```

## Requirements

* Xcode 8.0
* Swift 3.0+

## Contribution and Maintenance 
Fonts available on iOS are surely subject to possible change,
and when they do the `Font` enum in this library will need to be updated as well.
If you would like to help maintain or improve this library please feel free to do so. 

## License

UIFontComplete is free software, and may be redistributed under the terms specified in the [LICENSE] file.

[LICENSE]: /LICENSE