Swift - 扩展使用Font Awesome

swift
阅读 67 收藏 0 点赞 0 评论 0

Swift - Extension to use Font Awesome
Source: BorgGreen

//Apple official APP ICON guidelines
https://developer.apple.com/library/content/qa/qa1686/_index.html
//Important: iTunesArtwork icon images should be in png format, but name them without the .png extension.


//To add an image programmatically from one in the asset catalogue:
var chat = UIImage(named: "Chat")
var chatImageView = UIImageView(image: chat)

//Tab Bar Icons
// https://medium.com/@khoanguyenvan/how-to-create-a-custom-tab-bar-icons-in-ios-a9d5738788cc

//Prepare the image you want to use as the tab bar icon (you should use a black and white image so that you don’t have to remove color).
//Set the background to ‘Transparent’ rather than white.
//Remove all white from the image so that it was just a black image with a transparent background.
//Export the image to be a square with dimensions 75x75 pixels (and named yourImageName@3x.png), 50x50 pixels (and named yourImageName@2x.png), and 25x25 pixels(and named yourImageName.png).
//You can use a icon with white color ( 255,255,255 ) from http://www.flaticon.com/.
//Remember to download white color!

//Adding FONT ICONS into your project:
https://www.linkedin.com/pulse/using-icon-fonts-xcode-paul-tangen
// 01. Download FontAwesome.otf file from http://fontawesome.io and copy into project
// 02. Add the font to the plist: "Fonts provided by application > Item 0 > FontAwesome.otf
// 03. Click on the font file, and in the Identity and Type Inspector tab on the right, tick the Target Membership box.
// 04. Get the unicode ID of the character you need: http://fontawesome.io/cheatsheet/
// 05. Create a Constants.swift file with a Struct and Enums:


//  FontConstants.swift
//  BorgGreen
//
//  Created by Rocco Labellarte on 27/11/2017.
//  Copyright © 2017 Yaddoop Ltd. All rights reserved.
//  https://www.linkedin.com/pulse/using-icon-fonts-xcode-paul-tangen
//  https://github.com/thii/FontAwesome.swift/blob/master/FontAwesome/Enum.swift

import Foundation
import UIKit
struct Constants{
    
    enum iconSize: Int {
        case xsmall = 16
        case small = 24
        case medium = 48
        case large = 72
        case xlarge = 144
        case xxlarge = 216
    }
    
    enum iconFont: String {
        case material = "MaterialIcons-Regular"
        case fontAwesome = "FontAwesome"
    }

    enum iconLibrary: String {
        case fiveHundredPixels = "\u{f26e}"
        case addressBook = "\u{f2b9}"
        case addressBookO = "\u{f2ba}"
        case addressCard = "\u{f2bb}"
        case addressCardO = "\u{f2bc}"
        case adjust = "\u{f042}"
        case adn = "\u{f170}"
        case alignCenter = "\u{f037}"
        case alignJustify = "\u{f039}"
        case alignLeft = "\u{f036}"
        case alignRight = "\u{f038}"
        case amazon = "\u{f270}"
        case ambulance = "\u{f0f9}"
        case americanSignLanguageInterpreting = "\u{f2a3}"
        case anchor = "\u{f13d}"
        case android = "\u{f17b}"
        case angellist = "\u{f209}"
        case angleDoubleDown = "\u{f103}"
        case angleDoubleLeft = "\u{f100}"
        case angleDoubleRight = "\u{f101}"
        case angleDoubleUp = "\u{f102}"
        case angleDown = "\u{f107}"
        case angleLeft = "\u{f104}"
        case angleRight = "\u{f105}"
        case angleUp = "\u{f106}"
        case apple = "\u{f179}"
        case archive = "\u{f187}"
        case areaChart = "\u{f1fe}"
        case arrowCircleDown = "\u{f0ab}"
        case arrowCircleLeft = "\u{f0a8}"
        case arrowCircleODown = "\u{f01a}"
        case arrowCircleOLeft = "\u{f190}"
        case arrowCircleORight = "\u{f18e}"
        case arrowCircleOUp = "\u{f01b}"
        case arrowCircleRight = "\u{f0a9}"
        case arrowCircleUp = "\u{f0aa}"
        case arrowDown = "\u{f063}"
        case arrowLeft = "\u{f060}"
        case arrowRight = "\u{f061}"
        case arrowUp = "\u{f062}"
        case arrows = "\u{f047}"
        case arrowsAlt = "\u{f0b2}"
        case arrowsH = "\u{f07e}"
        case arrowsV = "\u{f07d}"
        case aslInterpreting = "\u{f2a3}A"
        case assistiveListeningSystems = "\u{f2a2}"
        case asterisk = "\u{f069}"
        case at = "\u{f1fa}"
        case audioDescription = "\u{f29e}"
        case automobile = "\u{f1b9}A"
        case backward = "\u{f04a}"
        case balanceScale = "\u{f24e}"
        case ban = "\u{f05e}"
        case bandCamp = "\u{f2d5}"
        case bank = "\u{f19c}A"
        case barChart = "\u{f080}"
        case barChartO = "\u{f080}A"
        case barcode = "\u{f02a}"
        case bars = "\u{f0c9}"
        case bath = "\u{f2cd}"
        case battery0 = "\u{f244}A"
        case battery1 = "\u{f243}A"
        case battery2 = "\u{f242}A"
        case battery3 = "\u{f241}A"
        case battery4 = "\u{f240}A"
        case batteryEmpty = "\u{f244}"
        case batteryFull = "\u{f240}"
        case batteryHalf = "\u{f242}"
        case batteryQuarter = "\u{f243}"
        case batteryThreeQuarters = "\u{f241}"
        case bed = "\u{f236}"
        case beer = "\u{f0fc}"
        case behance = "\u{f1b4}"
        case behanceSquare = "\u{f1b5}"
        case bell = "\u{f0f3}"
        case bellO = "\u{f0a2}"
        case bellSlash = "\u{f1f6}"
        case bellSlashO = "\u{f1f7}"
        case bicycle = "\u{f206}"
        case binoculars = "\u{f1e5}"
        case birthdayCake = "\u{f1fd}"
        case bitbucket = "\u{f171}"
        case bitbucketSquare = "\u{f172}"
        case bitcoin = "\u{f15a}A"
        case blackTie = "\u{f27e}"
        case blind = "\u{f29d}"
        case bluetooth = "\u{f293}"
        case bluetoothB = "\u{f294}"
        case bold = "\u{f032}"
        case bolt = "\u{f0e7}"
        case bomb = "\u{f1e2}"
        case book = "\u{f02d}"
        case bookmark = "\u{f02e}"
        case bookmarkO = "\u{f097}"
        case braille = "\u{f2a1}"
        case briefcase = "\u{f0b1}"
        case btc = "\u{f15a}"
        case bug = "\u{f188}"
        case building = "\u{f1ad}"
        case buildingO = "\u{f0f7}"
        case bullhorn = "\u{f0a1}"
        case bullseye = "\u{f140}"
        case bus = "\u{f207}"
        case buysellads = "\u{f20d}"
        case cab = "\u{f1ba}A"
        case calculator = "\u{f1ec}"
        case calendar = "\u{f073}"
        case calendarCheckO = "\u{f274}"
        case calendarMinusO = "\u{f272}"
        case calendarO = "\u{f133}"
        case calendarPlusO = "\u{f271}"
        case calendarTimesO = "\u{f273}"
        case camera = "\u{f030}"
        case cameraRetro = "\u{f083}"
        case car = "\u{f1b9}"
        case caretDown = "\u{f0d7}"
        case caretLeft = "\u{f0d9}"
        case caretRight = "\u{f0da}"
        case caretSquareODown = "\u{f150}"
        case caretSquareOLeft = "\u{f191}"
        case caretSquareORight = "\u{f152}"
        case caretSquareOUp = "\u{f151}"
        case caretUp = "\u{f0d8}"
        case cartArrowDown = "\u{f218}"
        case cartPlus = "\u{f217}"
        case cc = "\u{f20a}"
        case ccAmex = "\u{f1f3}"
        case ccDinersClub = "\u{f24c}"
        case ccDiscover = "\u{f1f2}"
        case ccJCB = "\u{f24b}"
        case ccMasterCard = "\u{f1f1}"
        case ccPaypal = "\u{f1f4}"
        case ccStripe = "\u{f1f5}"
        case ccVisa = "\u{f1f0}"
        case certificate = "\u{f0a3}"
        case chain = "\u{f0c1}A"
        case chainBroken = "\u{f127}"
        case check = "\u{f00c}"
        case checkCircle = "\u{f058}"
        case checkCircleO = "\u{f05d}"
        case checkSquare = "\u{f14a}"
        case checkSquareO = "\u{f046}"
        case chevronCircleDown = "\u{f13a}"
        case chevronCircleLeft = "\u{f137}"
        case chevronCircleRight = "\u{f138}"
        case chevronCircleUp = "\u{f139}"
        case chevronDown = "\u{f078}"
        case chevronLeft = "\u{f053}"
        case chevronRight = "\u{f054}"
        case chevronUp = "\u{f077}"
        case child = "\u{f1ae}"
        case chrome = "\u{f268}"
        case circle = "\u{f111}"
        case circleO = "\u{f10c}"
        case circleONotch = "\u{f1ce}"
        case circleThin = "\u{f1db}"
        case clipboard = "\u{f0ea}"
        case clockO = "\u{f017}"
        case clone = "\u{f24d}"
        case close = "\u{f00d}A"
        case cloud = "\u{f0c2}"
        case cloudDownload = "\u{f0ed}"
        case cloudUpload = "\u{f0ee}"
        case cny = "\u{f157}A"
        case code = "\u{f121}"
        case codeFork = "\u{f126}"
        case codepen = "\u{f1cb}"
        case codiepie = "\u{f284}"
        case coffee = "\u{f0f4}"
        case cog = "\u{f013}"
        case cogs = "\u{f085}"
        case columns = "\u{f0db}"
        case comment = "\u{f075}"
        case commentO = "\u{f0e5}"
        case commenting = "\u{f27a}"
        case commentingO = "\u{f27b}"
        case comments = "\u{f086}"
        case commentsO = "\u{f0e6}"
        case compass = "\u{f14e}"
        case compress = "\u{f066}"
        case connectdevelop = "\u{f20e}"
        case contao = "\u{f26d}"
        case copy = "\u{f0c5}A"
        case copyright = "\u{f1f9}"
        case creativeCommons = "\u{f25e}"
        case creditCard = "\u{f09d}"
        case creditCardAlt = "\u{f283}"
        case crop = "\u{f125}"
        case crosshairs = "\u{f05b}"
        case css3 = "\u{f13c}"
        case cube = "\u{f1b2}"
        case cubes = "\u{f1b3}"
        case cut = "\u{f0c4}A"
        case cutlery = "\u{f0f5}"
        case dashboard = "\u{f0e4}A"
        case dashcube = "\u{f210}"
        case database = "\u{f1c0}"
        case deaf = "\u{f2a4}"
        case deafness = "\u{f2a4}A"
        case dedent = "\u{f03b}A"
        case delicious = "\u{f1a5}"
        case desktop = "\u{f108}"
        case deviantart = "\u{f1bd}"
        case diamond = "\u{f219}"
        case digg = "\u{f1a6}"
        case dollar = "\u{f155}A"
        case dotCircleO = "\u{f192}"
        case download = "\u{f019}"
        case dribbble = "\u{f17d}"
        case dropbox = "\u{f16b}"
        case drupal = "\u{f1a9}"
        case edge = "\u{f282}"
        case edit = "\u{f044}A"
        case eercast = "\u{f2da}"
        case eject = "\u{f052}"
        case ellipsisH = "\u{f141}"
        case ellipsisV = "\u{f142}"
        case empire = "\u{f1d1}"
        case envelope = "\u{f0e0}"
        case envelopeO = "\u{f003}"
        case envelopeOpen = "\u{f2b6}"
        case envelopeOpenO = "\u{f2b7}"
        case envelopeSquare = "\u{f199}"
        case envira = "\u{f299}"
        case eraser = "\u{f12d}"
        case etsy = "\u{f2d7}"
        case eur = "\u{f153}"
        case euro = "\u{f153}A"
        case exchange = "\u{f0ec}"
        case exclamation = "\u{f12a}"
        case exclamationCircle = "\u{f06a}"
        case exclamationTriangle = "\u{f071}"
        case expand = "\u{f065}"
        case expeditedSSL = "\u{f23e}"
        case externalLink = "\u{f08e}"
        case externalLinkSquare = "\u{f14c}"
        case eye = "\u{f06e}"
        case eyeSlash = "\u{f070}"
        case eyedropper = "\u{f1fb}"
        case fa = "\u{f2b4}A"
        case facebook = "\u{f09a}"
        case facebookF = "\u{f09a}A"
        case facebookOfficial = "\u{f230}"
        case facebookSquare = "\u{f082}"
        case fastBackward = "\u{f049}"
        case fastForward = "\u{f050}"
        case fax = "\u{f1ac}"
        case feed = "\u{f09e}A"
        case female = "\u{f182}"
        case fighterJet = "\u{f0fb}"
        case file = "\u{f15b}"
        case fileArchiveO = "\u{f1c6}"
        case fileAudioO = "\u{f1c7}"
        case fileCodeO = "\u{f1c9}"
        case fileExcelO = "\u{f1c3}"
        case fileImageO = "\u{f1c5}"
        case fileMovieO = "\u{f1c8}A"
        case fileO = "\u{f016}"
        case filePdfO = "\u{f1c1}"
        case filePhotoO = "\u{f1c5}A"
        case filePictureO = "\u{f1c5}B"
        case filePowerpointO = "\u{f1c4}"
        case fileSoundO = "\u{f1c7}A"
        case fileText = "\u{f15c}"
        case fileTextO = "\u{f0f6}"
        case fileVideoO = "\u{f1c8}"
        case fileWordO = "\u{f1c2}"
        case fileZipO = "\u{f1c6}A"
        case filesO = "\u{f0c5}"
        case film = "\u{f008}"
        case filter = "\u{f0b0}"
        case fire = "\u{f06d}"
        case fireExtinguisher = "\u{f134}"
        case firefox = "\u{f269}"
        case firstOrder = "\u{f2b0}"
        case flag = "\u{f024}"
        case flagCheckered = "\u{f11e}"
        case flagO = "\u{f11d}"
        case flash = "\u{f0e7}A"
        case flask = "\u{f0c3}"
        case flickr = "\u{f16e}"
        case floppyO = "\u{f0c7}"
        case folder = "\u{f07b}"
        case folderO = "\u{f114}"
        case folderOpen = "\u{f07c}"
        case folderOpenO = "\u{f115}"
        case font = "\u{f031}"
        case fontAwesome = "\u{f2b4}"
        case fonticons = "\u{f280}"
        case fortAwesome = "\u{f286}"
        case forumbee = "\u{f211}"
        case forward = "\u{f04e}"
        case foursquare = "\u{f180}"
        case freeCodeCamp = "\u{f2c5}"
        case frownO = "\u{f119}"
        case futbolO = "\u{f1e3}"
        case gamepad = "\u{f11b}"
        case gavel = "\u{f0e3}"
        case gbp = "\u{f154}"
        case ge = "\u{f1d1}A"
        case gear = "\u{f013}A"
        case gears = "\u{f085}A"
        case genderless = "\u{f22d}"
        case getPocket = "\u{f265}"
        case gg = "\u{f260}"
        case ggCircle = "\u{f261}"
        case gift = "\u{f06b}"
        case git = "\u{f1d3}"
        case gitSquare = "\u{f1d2}"
        case github = "\u{f09b}"
        case githubAlt = "\u{f113}"
        case githubSquare = "\u{f092}"
        case gitlab = "\u{f296}"
        case gittip = "\u{f184}A"
        case glass = "\u{f000}"
        case glide = "\u{f2a5}"
        case glideG = "\u{f2a6}"
        case globe = "\u{f0ac}"
        case google = "\u{f1a0}"
        case googlePlus = "\u{f0d5}"
        case googlePlusCircle = "\u{f2b3}A"
        case googlePlusOfficial = "\u{f2b3}"
        case googlePlusSquare = "\u{f0d4}"
        case googleWallet = "\u{f1ee}"
        case graduationCap = "\u{f19d}"
        case gratipay = "\u{f184}"
        case grav = "\u{f2d6}"
        case group = "\u{f0c0}A"
        case hSquare = "\u{f0fd}"
        case hackerNews = "\u{f1d4}"
        case handGrabO = "\u{f255}A"
        case handLizardO = "\u{f258}"
        case handODown = "\u{f0a7}"
        case handOLeft = "\u{f0a5}"
        case handORight = "\u{f0a4}"
        case handOUp = "\u{f0a6}"
        case handPaperO = "\u{f256}"
        case handPeaceO = "\u{f25b}"
        case handPointerO = "\u{f25a}"
        case handRockO = "\u{f255}"
        case handScissorsO = "\u{f257}"
        case handShakeO = "\u{f2b5}"
        case handSpockO = "\u{f259}"
        case handStopO = "\u{f256}A"
        case hardOfHearing = "\u{f2a4}B"
        case hashtag = "\u{f292}"
        case hddO = "\u{f0a0}"
        case header = "\u{f1dc}"
        case headphones = "\u{f025}"
        case heart = "\u{f004}"
        case heartO = "\u{f08a}"
        case heartbeat = "\u{f21e}"
        case history = "\u{f1da}"
        case home = "\u{f015}"
        case hospitalO = "\u{f0f8}"
        case hotel = "\u{f236}A"
        case hourglass = "\u{f254}"
        case hourglass1 = "\u{f251}A"
        case hourglass2 = "\u{f252}A"
        case hourglass3 = "\u{f253}A"
        case hourglassEnd = "\u{f253}"
        case hourglassHalf = "\u{f252}"
        case hourglassO = "\u{f250}"
        case hourglassStart = "\u{f251}"
        case houzz = "\u{f27c}"
        case html5 = "\u{f13b}"
        case iCursor = "\u{f246}"
        case idBadge = "\u{f2c1}"
        case idCard = "\u{f2c2}"
        case idCardO = "\u{f2c3}"
        case ils = "\u{f20b}"
        case image = "\u{f03e}A"
        case imdb = "\u{f2d8}"
        case inbox = "\u{f01c}"
        case indent = "\u{f03c}"
        case industry = "\u{f275}"
        case info = "\u{f129}"
        case infoCircle = "\u{f05a}"
        case inr = "\u{f156}"
        case instagram = "\u{f16d}"
        case institution = "\u{f19c}B"
        case internetExplorer = "\u{f26b}"
        case intersex = "\u{f224}A"
        case ioxhost = "\u{f208}"
        case italic = "\u{f033}"
        case joomla = "\u{f1aa}"
        case jpy = "\u{f157}"
        case jsfiddle = "\u{f1cc}"
        case key = "\u{f084}"
        case keyboardO = "\u{f11c}"
        case krw = "\u{f159}"
        case language = "\u{f1ab}"
        case laptop = "\u{f109}"
        case lastFM = "\u{f202}"
        case lastFMSquare = "\u{f203}"
        case leaf = "\u{f06c}"
        case leanpub = "\u{f212}"
        case legal = "\u{f0e3}A"
        case lemonO = "\u{f094}"
        case levelDown = "\u{f149}"
        case levelUp = "\u{f148}"
        case lifeBouy = "\u{f1cd}A"
        case lifeBuoy = "\u{f1cd}B"
        case lifeRing = "\u{f1cd}"
        case lifeSaver = "\u{f1cd}C"
        case lightbulbO = "\u{f0eb}"
        case lineChart = "\u{f201}"
        case link = "\u{f0c1}"
        case linkedIn = "\u{f0e1}"
        case linkedInSquare = "\u{f08c}"
        case linode = "\u{f2b8}"
        case linux = "\u{f17c}"
        case list = "\u{f03a}"
        case listAlt = "\u{f022}"
        case listOL = "\u{f0cb}"
        case listUL = "\u{f0ca}"
        case locationArrow = "\u{f124}"
        case lock = "\u{f023}"
        case longArrowDown = "\u{f175}"
        case longArrowLeft = "\u{f177}"
        case longArrowRight = "\u{f178}"
        case longArrowUp = "\u{f176}"
        case lowVision = "\u{f2a8}"
        case magic = "\u{f0d0}"
        case magnet = "\u{f076}"
        case mailForward = "\u{f064}A"
        case mailReply = "\u{f112}A"
        case mailReplyAll = "\u{f122}A"
        case male = "\u{f183}"
        case map = "\u{f279}"
        case mapMarker = "\u{f041}"
        case mapO = "\u{f278}"
        case mapPin = "\u{f276}"
        case mapSigns = "\u{f277}"
        case mars = "\u{f222}"
        case marsDouble = "\u{f227}"
        case marsStroke = "\u{f229}"
        case marsStrokeH = "\u{f22b}"
        case marsStrokeV = "\u{f22a}"
        case maxcdn = "\u{f136}"
        case meanpath = "\u{f20c}"
        case medium = "\u{f23a}"
        case medkit = "\u{f0fa}"
        case meetup = "\u{f2e0}"
        case mehO = "\u{f11a}"
        case mercury = "\u{f223}"
        case microchip = "\u{f2db}"
        case microphone = "\u{f130}"
        case microphoneSlash = "\u{f131}"
        case minus = "\u{f068}"
        case minusCircle = "\u{f056}"
        case minusSquare = "\u{f146}"
        case minusSquareO = "\u{f147}"
        case mixcloud = "\u{f289}"
        case mobile = "\u{f10b}"
        case mobilePhone = "\u{f10b}A"
        case modx = "\u{f285}"
        case money = "\u{f0d6}"
        case moonO = "\u{f186}"
        case mortarBoard = "\u{f19d}A"
        case motorcycle = "\u{f21c}"
        case mousePointer = "\u{f245}"
        case music = "\u{f001}"
        case navicon = "\u{f0c9}A"
        case neuter = "\u{f22c}"
        case newspaperO = "\u{f1ea}"
        case objectGroup = "\u{f247}"
        case objectUngroup = "\u{f248}"
        case odnoklassniki = "\u{f263}"
        case odnoklassnikiSquare = "\u{f264}"
        case openCart = "\u{f23d}"
        case openID = "\u{f19b}"
        case opera = "\u{f26a}"
        case optinMonster = "\u{f23c}"
        case outdent = "\u{f03b}"
        case pagelines = "\u{f18c}"
        case paintBrush = "\u{f1fc}"
        case paperPlane = "\u{f1d8}"
        case paperPlaneO = "\u{f1d9}"
        case paperclip = "\u{f0c6}"
        case paragraph = "\u{f1dd}"
        case paste = "\u{f0ea}A"
        case pause = "\u{f04c}"
        case pauseCircle = "\u{f28b}"
        case pauseCircleO = "\u{f28c}"
        case paw = "\u{f1b0}"
        case paypal = "\u{f1ed}"
        case pencil = "\u{f040}"
        case pencilSquare = "\u{f14b}"
        case pencilSquareO = "\u{f044}"
        case percent = "\u{f295}"
        case phone = "\u{f095}"
        case phoneSquare = "\u{f098}"
        case photo = "\u{f03e}B"
        case pictureO = "\u{f03e}"
        case pieChart = "\u{f200}"
        case piedPiper = "\u{f2ae}"
        case piedPiperAlt = "\u{f1a8}"
        case piedPiperPp = "\u{f1a7}"
        case pinterest = "\u{f0d2}"
        case pinterestP = "\u{f231}"
        case pinterestSquare = "\u{f0d3}"
        case plane = "\u{f072}"
        case play = "\u{f04b}"
        case playCircle = "\u{f144}"
        case playCircleO = "\u{f01d}"
        case plug = "\u{f1e6}"
        case plus = "\u{f067}"
        case plusCircle = "\u{f055}"
        case plusSquare = "\u{f0fe}"
        case plusSquareO = "\u{f196}"
        case podcast = "\u{f2ce}"
        case powerOff = "\u{f011}"
        case print = "\u{f02f}"
        case productHunt = "\u{f288}"
        case puzzlePiece = "\u{f12e}"
        case qq = "\u{f1d6}"
        case qrcode = "\u{f029}"
        case quora = "\u{f2c4}"
        case question = "\u{f128}"
        case questionCircle = "\u{f059}"
        case questionCircleO = "\u{f29c}"
        case quoteLeft = "\u{f10d}"
        case quoteRight = "\u{f10e}"
        case ra = "\u{f1d0}A"
        case random = "\u{f074}"
        case ravelry = "\u{f2d9}"
        case rebel = "\u{f1d0}"
        case recycle = "\u{f1b8}"
        case reddit = "\u{f1a1}"
        case redditAlien = "\u{f281}"
        case redditSquare = "\u{f1a2}"
        case refresh = "\u{f021}"
        case registered = "\u{f25d}"
        case remove = "\u{f00d}B"
        case renren = "\u{f18b}"
        case reorder = "\u{f0c9}B"
        case `repeat` = "\u{f01e}"
        case reply = "\u{f112}"
        case replyAll = "\u{f122}"
        case resistance = "\u{f1d0}B"
        case retweet = "\u{f079}"
        case rmb = "\u{f157}B"
        case road = "\u{f018}"
        case rocket = "\u{f135}"
        case rotateLeft = "\u{f0e2}A"
        case rotateRight = "\u{f01e}A"
        case rouble = "\u{f158}A"
        case rss = "\u{f09e}"
        case rssSquare = "\u{f143}"
        case rub = "\u{f158}"
        case ruble = "\u{f158}B"
        case rupee = "\u{f156}A"
        case safari = "\u{f267}"
        case save = "\u{f0c7}A"
        case scissors = "\u{f0c4}"
        case scribd = "\u{f28a}"
        case search = "\u{f002}"
        case searchMinus = "\u{f010}"
        case searchPlus = "\u{f00e}"
        case sellsy = "\u{f213}"
        case send = "\u{f1d8}A"
        case sendO = "\u{f1d9}A"
        case server = "\u{f233}"
        case share = "\u{f064}"
        case shareAlt = "\u{f1e0}"
        case shareAltSquare = "\u{f1e1}"
        case shareSquare = "\u{f14d}"
        case shareSquareO = "\u{f045}"
        case shekel = "\u{f20b}A"
        case sheqel = "\u{f20b}B"
        case shield = "\u{f132}"
        case ship = "\u{f21a}"
        case shirtsinbulk = "\u{f214}"
        case shoppingBag = "\u{f290}"
        case shoppingBasket = "\u{f291}"
        case shoppingCart = "\u{f07a}"
        case shower = "\u{f2cc}"
        case signIn = "\u{f090}"
        case signLanguage = "\u{f2a7}"
        case signOut = "\u{f08b}"
        case signal = "\u{f012}"
        case signing = "\u{f2a7}A"
        case simplybuilt = "\u{f215}"
        case sitemap = "\u{f0e8}"
        case skyatlas = "\u{f216}"
        case skype = "\u{f17e}"
        case slack = "\u{f198}"
        case sliders = "\u{f1de}"
        case slideshare = "\u{f1e7}"
        case smileO = "\u{f118}"
        case snapchat = "\u{f2ab}"
        case snapchatGhost = "\u{f2ac}"
        case snapchatSquare = "\u{f2ad}"
        case snowflakeO = "\u{f2dc}"
        case soccerBallO = "\u{f1e3}A"
        case sort = "\u{f0dc}"
        case sortAlphaAsc = "\u{f15d}"
        case sortAlphaDesc = "\u{f15e}"
        case sortAmountAsc = "\u{f160}"
        case sortAmountDesc = "\u{f161}"
        case sortAsc = "\u{f0de}"
        case sortDesc = "\u{f0dd}"
        case sortDown = "\u{f0dd}A"
        case sortNumericAsc = "\u{f162}"
        case sortNumericDesc = "\u{f163}"
        case sortUp = "\u{f0de}A"
        case soundCloud = "\u{f1be}"
        case spaceShuttle = "\u{f197}"
        case spinner = "\u{f110}"
        case spoon = "\u{f1b1}"
        case spotify = "\u{f1bc}"
        case square = "\u{f0c8}"
        case squareO = "\u{f096}"
        case stackExchange = "\u{f18d}"
        case stackOverflow = "\u{f16c}"
        case star = "\u{f005}"
        case starHalf = "\u{f089}"
        case starHalfEmpty = "\u{f123}A"
        case starHalfFull = "\u{f123}B"
        case starHalfO = "\u{f123}"
        case starO = "\u{f006}"
        case steam = "\u{f1b6}"
        case steamSquare = "\u{f1b7}"
        case stepBackward = "\u{f048}"
        case stepForward = "\u{f051}"
        case stethoscope = "\u{f0f1}"
        case stickyNote = "\u{f249}"
        case stickyNoteO = "\u{f24a}"
        case stop = "\u{f04d}"
        case stopCircle = "\u{f28d}"
        case stopCircleO = "\u{f28e}"
        case streetView = "\u{f21d}"
        case strikethrough = "\u{f0cc}"
        case stumbleUpon = "\u{f1a4}"
        case stumbleUponCircle = "\u{f1a3}"
        case `subscript` = "\u{f12c}"
        case subway = "\u{f239}"
        case suitcase = "\u{f0f2}"
        case sunO = "\u{f185}"
        case superscript = "\u{f12b}"
        case superpowers = "\u{f2dd}"
        case support = "\u{f1cd}D"
        case table = "\u{f0ce}"
        case tablet = "\u{f10a}"
        case tachometer = "\u{f0e4}"
        case tag = "\u{f02b}"
        case tags = "\u{f02c}"
        case tasks = "\u{f0ae}"
        case taxi = "\u{f1ba}"
        case telegram = "\u{f2c6}"
        case television = "\u{f26c}"
        case tencentWeibo = "\u{f1d5}"
        case terminal = "\u{f120}"
        case textHeight = "\u{f034}"
        case textWidth = "\u{f035}"
        case th = "\u{f00a}"
        case thLarge = "\u{f009}"
        case thList = "\u{f00b}"
        case themeisle = "\u{f2b2}"
        case thermometerEmpty = "\u{f2cb}"
        case thermometerFull = "\u{f2c7}"
        case thermometerHalf = "\u{f2c9}"
        case thermometerQuarter = "\u{f2ca}"
        case thermometerThreeQuarters = "\u{f2c8}"
        case thumbTack = "\u{f08d}"
        case thumbsDown = "\u{f165}"
        case thumbsODown = "\u{f088}"
        case thumbsOUp = "\u{f087}"
        case thumbsUp = "\u{f164}"
        case ticket = "\u{f145}"
        case times = "\u{f00d}"
        case timesCircle = "\u{f057}"
        case timesCircleO = "\u{f05c}"
        case tint = "\u{f043}"
        case toggleDown = "\u{f150}A"
        case toggleLeft = "\u{f191}A"
        case toggleOff = "\u{f204}"
        case toggleOn = "\u{f205}"
        case toggleRight = "\u{f152}A"
        case toggleUp = "\u{f151}A"
        case trademark = "\u{f25c}"
        case train = "\u{f238}"
        case transgender = "\u{f224}"
        case transgenderAlt = "\u{f225}"
        case trash = "\u{f1f8}"
        case trashO = "\u{f014}"
        case tree = "\u{f1bb}"
        case trello = "\u{f181}"
        case tripAdvisor = "\u{f262}"
        case trophy = "\u{f091}"
        case truck = "\u{f0d1}"
        case `try` = "\u{f195}"
        case tty = "\u{f1e4}"
        case tumblr = "\u{f173}"
        case tumblrSquare = "\u{f174}"
        case turkishLira = "\u{f195}A"
        case tv = "\u{f26c}A"
        case twitch = "\u{f1e8}"
        case twitter = "\u{f099}"
        case twitterSquare = "\u{f081}"
        case umbrella = "\u{f0e9}"
        case underline = "\u{f0cd}"
        case undo = "\u{f0e2}"
        case universalAccess = "\u{f29a}"
        case university = "\u{f19c}"
        case unlink = "\u{f127}A"
        case unlock = "\u{f09c}"
        case unlockAlt = "\u{f13e}"
        case unsorted = "\u{f0dc}A"
        case upload = "\u{f093}"
        case usb = "\u{f287}"
        case usd = "\u{f155}"
        case user = "\u{f007}"
        case userO = "\u{f2c0}"
        case userCircle = "\u{f2bd}"
        case userCircleO = "\u{f2be}"
        case userMd = "\u{f0f0}"
        case userPlus = "\u{f234}"
        case userSecret = "\u{f21b}"
        case userTimes = "\u{f235}"
        case users = "\u{f0c0}"
        case venus = "\u{f221}"
        case venusDouble = "\u{f226}"
        case venusMars = "\u{f228}"
        case viacoin = "\u{f237}"
        case viadeo = "\u{f2a9}"
        case viadeoSquare = "\u{f2aa}"
        case videoCamera = "\u{f03d}"
        case vimeo = "\u{f27d}"
        case vimeoSquare = "\u{f194}"
        case vine = "\u{f1ca}"
        case vk = "\u{f189}"
        case volumeControlPhone = "\u{f2a0}"
        case volumeDown = "\u{f027}"
        case volumeOff = "\u{f026}"
        case volumeUp = "\u{f028}"
        case warning = "\u{f071}A"
        case wechat = "\u{f1d7}A"
        case weibo = "\u{f18a}"
        case weixin = "\u{f1d7}"
        case whatsapp = "\u{f232}"
        case wheelchair = "\u{f193}"
        case wheelchairAlt = "\u{f29b}"
        case wifi = "\u{f1eb}"
        case wikipediaW = "\u{f266}"
        case windowClose = "\u{f2d3}"
        case windowCloseO = "\u{f2d4}"
        case windowMaximize = "\u{f2d0}"
        case windowMinimize = "\u{f2d1}"
        case windowRestore = "\u{f2d2}"
        case windows = "\u{f17a}"
        case won = "\u{f159}A"
        case wordpress = "\u{f19a}"
        case wpbeginner = "\u{f297}"
        case wpexplorer = "\u{f2de}"
        case wpforms = "\u{f298}"
        case wrench = "\u{f0ad}"
        case xing = "\u{f168}"
        case xingSquare = "\u{f169}"
        case yCombinator = "\u{f23b}"
        case yCombinatorSquare = "\u{f1d4}A"
        case yahoo = "\u{f19e}"
        case yc = "\u{f23b}A"
        case ycSquare = "\u{f1d4}B"
        case yelp = "\u{f1e9}"
        case yen = "\u{f157}C"
        case yoast = "\u{f2b1}"
        case youTube = "\u{f167}"
        case youTubePlay = "\u{f16a}"
        case youTubeSquare = "\u{f166}"
    }
}

extension UIColor {
    enum ColorName: UInt32 {
        case red = 0xcc3333ff
        case blue = 0x336699ff
        case white = 0xffffffff
        case beige = 0xf7e5c5ff
        case black = 0x333333ff
    }
}

extension UIColor {
    convenience init(named name: ColorName) {
        let rgbaValue = name.rawValue
        let red = CGFloat((rgbaValue >> 24) & 0xff) / 255.0
        let green = CGFloat((rgbaValue >> 16) & 0xff) / 255.0
        let blue = CGFloat((rgbaValue >> 8) & 0xff) / 255.0
        let alpha = CGFloat((rgbaValue) & 0xff) / 255.0
        
        self.init(red: red, green: green, blue: blue, alpha: alpha)
        
    }
}
}


// 06. Add this code to your Labels in the view controller:

        //FontAwesome Labels
        self.lblUserName.text = Constants.iconLibrary.thumbsUp.rawValue
        self.lblUserName.textColor = UIColor(named: .white)
        self.lblUserName.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.medium.rawValue))
        
// 07. Add this for Buttons:

        //FontAwesome Buttons
        self.btnConfirm.setTitle(Constants.iconLibrary.chevronRight.rawValue, for: .normal)
        self.btnConfirm.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.medium.rawValue))
        self.btnConfirm.setTitleColor(UIColor(named: .white), for: .normal)
        
        
// 08. Alternatively create two extensions, one for Labels and one for Buttons as follows:

// 08A. EXTENSION FOR UILABEL to use Font Awesome

import UIKit
extension UILabel {
    
    // If this was in the VC, you would need:
    //        self.lblUserName.text = Constants.iconLibrary.envelopeO.rawValue
    //        self.lblUserName.textColor = UIColor(named: .black)
    //        self.lblUserName.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.small.rawValue))
    
    //Displays Icon in a Label
    func displayLabelIcon(iIcon: String, iColor: UIColor, iSize: String) {
        
        self.text = iIcon
        
        self.textColor = iColor
        
        //BUG name: is String, size: is CGFloat. Reduce down this code
        switch iSize {
        case "xsmall":
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xsmall.rawValue))
        case "small":
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.small.rawValue))
        case "medium":
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.medium.rawValue))
        case "large":
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.large.rawValue))
        case "xlarge":
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xlarge.rawValue))
        default:
            self.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xxlarge.rawValue))
        }
        
    }
    
}

08B. EXTENSION FOR UIBUTTON to use Font Awesome

import UIKit
extension UIButton {
    
//    self.btnConfirm.setTitle(Constants.iconLibrary.check.rawValue, for: .normal)
//    self.btnConfirm.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.small.rawValue))
//    self.btnConfirm.setTitleColor(UIColor(named: .black), for: .normal)
    
    //Displays Icon in a Button
    func displayButtonIcon(iTitle: String, iColor: UIColor, iSize: String) {
        
        self.setTitle(iTitle, for: .normal)
        
        self.setTitleColor(iColor, for: .normal)
        
        
        //BUG name: is String, size: is CGFloat. Reduce down this code
        switch iSize {
        case "xsmall":
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xsmall.rawValue))
        case "small":
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.small.rawValue))
        case "medium":
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.medium.rawValue))
        case "large":
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.large.rawValue))
        case "xlarge":
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xlarge.rawValue))
        default:
            self.titleLabel!.font = UIFont(name: Constants.iconFont.fontAwesome.rawValue, size: CGFloat(Constants.iconSize.xxlarge.rawValue))
        }

    }
}

08C. IN MAIN VC

import UIKit
class ViewController: UIViewController {

    
    @IBOutlet weak var profileImageView: UIImageView!
    @IBOutlet weak var btmImageView: UIImageView!
    @IBOutlet weak var txtUserName: UITextField!
    @IBOutlet weak var txtPassword: UITextField!
    @IBOutlet weak var lblUserName: UILabel!
    @IBOutlet weak var lblPassword: UILabel!
    @IBOutlet weak var btnConfirm: RoundButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //Circular Image (extension: xRoundImage)
        profileImageView.rounded(borderWidth: 3.0, borderColor: UIColor.black.cgColor, shadowRadius: 10.0, shadowColor: UIColor.black.cgColor)
        
        //Underline text field (extension: xTextField)
        txtUserName.underlined()
        txtPassword.underlined()
        
        //FontAwesome Labels (email address) (extension: xUILabel)
        self.lblUserName.displayLabelIcon (iIcon: Constants.iconLibrary.envelopeO.rawValue, iColor: UIColor(named: .black), iSize: "small")
        
        //FontAwesome Labels (password) (extension: xUILabel)
        self.lblPassword.displayLabelIcon (iIcon: Constants.iconLibrary.unlockAlt.rawValue, iColor: UIColor(named: .black), iSize: "small")
        
        //FontAwesome Buttons (Confirm button) (extension: xUIButton)
        self.btnConfirm.displayButtonIcon(iTitle: Constants.iconLibrary.check.rawValue, iColor: UIColor(named: .black), iSize: "small")
        
    }
}
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号