Need help with EFIconFont?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

XiangWuShuo
197 Stars 20 Forks MIT License 62 Commits 0 Opened issues

Description

Yet another stupid wrapper of icon font.

Services available

!
?

Need anything else?

Contributors list

An ordinary iconfont cocoapods package helps you to use iconfont more easily in your project, in Swift.

中文介绍

Preview

| 1 | 2 | 3 | 4 | |:-:|:-:|:-:|:-:| | | | | |

Example

To run the example project manually, clone the repo, demo is in the 'Example' folder, then open

EFIconFont.xcworkspace
with Xcode and select the target you want, run.

Or you can run the following command in terminal:

git clone [email protected]:EFPrefix/EFIconFont.git; cd EFIconFont/Example; pod install; open EFIconFont.xcworkspace

Requirements

| Version | Needs | |:--------|:--------------------------------------| | <0.5 | Xcode 10.0+
Swift 4.2+
iOS 8.0+ | | >=0.5 | Xcode 10.2+
Swift 5.0+
iOS 8.0+ |

Installation

EFIconFont is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'EFIconFont'

You can get built-in iconfonts with

subspecs
, for example you will get icons of
AntDesign
and
FontAwesome
by the following way:
pod 'EFIconFont', :subspecs => ['AntDesign', 'FontAwesome']

You can also choose to get all built-in packs by using

Complete
subspec:
pod 'EFIconFont', :subspecs => ['Complete']

Then, run the following command:

pod install

Use

1. Core

Objects that implement the

EFIconFontProtocol
protocol can transform themselves into
NSAttributedString
or
UIImage
, which is as follows:
public protocol EFIconFontProtocol {

// `name` is not necessarily equal to .ttf file name
var name: String { get }

// `path` is path of .ttf file
var path: String { get }

// `attributes` is style of icon
var attributes: [NSAttributedString.Key : Any] { set get }

// `unicode` is unique identifier of particular icon
var unicode: String { get }

}

  • name: Font name, not necessarily equal to .ttf file name, you can use BirdFont to see the
    Name
    attribute of the file;
  • path: Filepath of
    .ttf
    file, usually you can get it through code like
    Bundle.main.path(forResource: name, ofType: "ttf")
    (If filename is same as name, you can use the default implementation and do not need to implement this property);
  • attributes: Attributes of icon(You can use the default implementation and do not need to implement this property);
  • unicode: The unique unicode of an icon.

Objects that implement the protocol can be converted to strings and images by calling the following methods, you can also change the foreground color and size:

// MARK:- String
func attributedString(size fontSize: CGFloat, attributes: [NSAttributedString.Key : Any]?) -> NSAttributedString?
func attributedString(size fontSize: CGFloat, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> NSAttributedString?

// MARK:- Image func image(size fontSize: CGFloat, attributes: [NSAttributedString.Key : Any]?) -> UIImage? func image(size fontSize: CGFloat, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> UIImage? func image(size imageSize: CGSize, attributes: [NSAttributedString.Key : Any]?) -> UIImage? func image(size imageSize: CGSize, foregroundColor: UIColor? = nil, backgroundColor: UIColor? = nil) -> UIImage?

2. Built-in iconfont packs

This pod has integrated some free resources in the subspecs, like

AntDesign
and
FontAwesome
. It can be imported by who need to use it. The usage methods are as follows, you can get a return value of
EFIconFontProtocol
:
EFIconFontAntDesign.addteam

You can use the object which follow

EFIconFontProtocol
to get
NSAttributedString
and
UIImage
:
EFIconFontAntDesign.addteam.attributedString(size: 24)
EFIconFontFontAwesomeBrands.adobe.attributedString(size: 32, foregroundColor: UIColor.white, backgroundColor: UIColor.green)
EFIconFontFontAwesomeRegular.addressBook.image(size: 24, foregroundColor: UIColor.red)
EFIconFontFontAwesomeSolid.alignLeft.image(size: CGSize(width: 36, height: 48), foregroundColor: UIColor.white)

You can also get all icons of a

EFIconFontCaseIterableProtocol
object with type
[String : EFIconFontProtocol]
by the following code:
EFIconFont.antDesign.dictionary

PS: Although the libraries below are all free, please make sure that your way of using the icon conforms to the original author's protocol specification:

| Name | Version | Count | File Size | Description | License | Preview | |:-|:-|:-|:-|:-|:-|:-| | AntDesign | | 557 | 127KB | Ant Design | MIT | iconfont.cn | | ElusiveIcons | 2.0.0 | 304 | 53KB | Elusive Icons | OFL | elusiveicons.com | | FontAwesome | 5.8.1 | 1516 | 356KB | Font Awesome | Font Awesome Free License | fontawesome.com | | IcoMoon | 1.0 | 490 | 94KB | IcoMoon free icons | CC BY 4.0 / GPL | ionicons.com | | Ionicons | 4.5.5 | 696 | 143KB | Ionicons | MIT | ionicons.com | | MaterialIcons | 3.0.1 | 932 | 128KB | Google's material design icons | Apache-2.0 | material.io | | Meteocons | | 47 | 15KB | A set of weather icons, it containing 40+ icons | Free | alessioatzeni.com/meteocons | | MetrizeIcons | 1.0 | 300 | 74KB | Free Collection of 300 Metro-Style Icons for Designers and Developers | Free | alessioatzeni.com/metrize-icons | | OpenIconic | 1.1.1 | 223 | 33KB | An open source icon set with 223 marks in SVG | OFL | useiconic.com/open | | Typicons | 2.0.9 | 336 | 82KB | 336 pixel perfect, all-purpose vector icons in a kit | OFL | s-ings.com/typicons |

3. Extend custom packs

(1) Import Font File

Drag the

.ttf
file of the icon library into the Xcode project and ensure that the
Copy Bundle Resources
list in
Build Phases
contains this font file (It will be included by default, just check it).

In addition, the file will be loaded at runtime, do not need to add it to the

Fonts provided by application
item in the
Info.plist
file.

(2) Implement
EFIconFontCaseIterableProtocol

By making a implementation of EFIconFontCaseIterableProtocol you can get your custom iconfont pack object, demo in this project demonstrates customization with GitHub's Octicons as an example:

import EFIconFont

public extension EFIconFont { public static let octicons = EFIconFontOcticons.self }

extension EFIconFontOcticons: EFIconFontCaseIterableProtocol { public static var name: String { return "octicons" } public var unicode: String { return self.rawValue } }

public enum EFIconFontOcticons: String { case thumbsup = "\u{e6d7}" case unverified = "\u{e6d6}" case unfold = "\u{e6d5}" case verified = "\u{e6d4}" // ... }

(3) Call

Same as

Built-in iconfont packs
above:
EFIconFontOcticons.thumbsup

(4) Attention

The

Octicons
icon library in this project is owned by GitHub. This is only a demonstration, do not use it in any situation that violates the specifications set by its owner:

| Name | Version | Count | File Size | Description | License | Preview | |:-|:-|:-|:-|:-|:-|:-| | Octicons | 8.4.2 | 184 | 34KB | GitHub‘s icons | GitHub Logos and Usage | octicons.github.com |

4. Other

Usage of some iconfont resource sites:

Author

EyreFree, [email protected]

License

EFIconFont is available under the MIT license. See the LICENSE file for more info.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.