【问题标题】:how to add custom icons using fontAwesome to UIbutton in swift 4如何在swift 4中使用fontAwesome将自定义图标添加到UIbutton
【发布时间】:2019-04-05 13:23:44
【问题描述】:

我目前正在开发一个 IOS 应用程序,我想使用 FontAwesome 添加按钮标签或图标我已经在我的项目中成功安装了 cocoapods,现在我不知道使用 cocoapods 来添加库 FontAwesome(更多信息:-@987654321 @) 我的 IOS 应用程序中的图标。

  • 我需要了解使用添加 FontAwesome 的过程 可可足类, 和
  • 我需要知道他们是否是另一种将 FontAwesome 添加到我的项目的方式

谢谢

【问题讨论】:

    标签: ios swift xcode font-awesome uifont


    【解决方案1】:

    如果您还没有安装 CocoaPods,这些是很好的说明:https://stackoverflow.com/a/25257238/8534588

    使用 CocoaPods 安装 FontAwesome:

    1. 打开与 .xcodeproj 文件位于同一文件夹中的 Podfile
    2. 将此行添加到 Podfile 以安装 FontAwesome.swift:pod 'FontAwesome.swift'
    3. 保存对 Podfile 的更改
    4. 在包含 Podfile 的文件夹中打开终端并运行命令pod install

    如何使用 FontAwesome 图标:

    在你的代码文件中添加import FontAwesome_swift

    示例代码:

    let image = UIImage.fontAwesomeIcon(name: .checkCircle, style: .solid, textColor: UIColor.black, size: CGSize(width: 40, height: 40))

    【讨论】:

      【解决方案2】:

      我在 Objective C 中做过这个,所以希望这会很有用。过程相同,但您需要将 Objective C 代码转换为 Swift。

      因此,在 Objective C 中执行此操作, 您可以按照此链接中提到的步骤将FontAwesome手动添加到您的项目中而不使用CocoaPod,如果您有兴趣不要使用CocoaPod

      Manually Add FontAwesome

      从该 Github 项目中取出 NSString 类别类,即 NSString+FontAwesome

      您还需要在资源文件夹中添加 fontawesome-webfont.ttf

      NB: 对我来说,在我添加上面链接中提到的 NSString 类别类后出现错误,如果您遇到重复定义等问题,那么只需重命名那些不满足的枚举常量变量命名约定。 (对我来说,一些枚举常量使用的是连字符(-),我用下划线(_)替换了那些)。

      【讨论】:

        【解决方案3】:

        有很多方法可以在 iOS 应用程序中使用字体真棒图标。 您可以根据自己的理解和舒适度选择退出其中的任何一个。

        方法一:

        编写自己的逻辑

        • 将字体真棒文件添加到您的编译源中并确保正确添加(参见附图)
        • 保留任何字体真棒图标的Unicode字符串(在示例代码中,我使用关闭图标参考。它的字体真棒类和Unicode文本分别是fa-closef00d参见示例代码)。就我而言,我有一个类,其中包含所有字体真棒图标字符串和另一个类,它接受字体真棒类字符串并返回适当的 Unicode 字符串。
        • 使用该 Unicode 字符串创建一个属性字符串并将其设置为属性文本属性(参见下面的示例代码)。

        您可以搜索您想要的字体真棒字符串和Unicode here

        代码示例

        第一步

        在这个例子中,我创建了一个返回 Unicode 字符串的扩展。

         extension String {
        
             func fontAwesomeString(name: String) -> String {
        
                 switch name {
                 case "fa-close":
                    return "\u{f00d}"
                 default: // manage exhaustive case accordingly
                 }
              } 
         }
        

        第二步

        通过传递适当的字体真棒字符串调用上述方法。

        let iconUnicodeText = String.fontAwesomeString(name: "fa-close")
        let iconAttributed = NSMutableAttributedString(string: iconUnicodeText)
        self.iConLabel.attributedText = iconAttributed // iConLabel is a control type of UIlabel.
        

        或者,如果您不想组织您的源代码,您可以直接使用 Unicode 创建一个属性字符串并设置为属性文本属性。

        注意:您可能需要对上述代码 sn-p 进行更改。正如我为 Swift 4.0 所写的那样

        方法二:

        使用可可豆荚

        安装 pod 库后,您可以调用示例中显示的相应方法,如下所示

        yourButton.titleLabel?.font = UIFont.fontAwesome(ofSize: 30, style: .brands) 
        yourButton.setTitle(String.fontAwesomeIcon(name:. gitgub), for : .normal) // you may change icon type with your desired one
        

        【讨论】:

        • IN Approach1 关于设置字体的部分丢失了我用这个:guard let font = NSFont(name: "Font Awesome 5 Free Solid", size: 18) else { fatalError("⚠️️") } 然后设置textField.font = font
        【解决方案4】:

        使用如下:-

        Step1 : 添加如下图所示的框架

        第 2 步:将所有 .otf 和 .swift 文件拖放到您的项目中 第三步:导入 FontAwesome_swift 第 4 步:使用以下代码:-

        let imageView  = UIImageView(frame: CGRect(x: 80.0, y: 80.0, width: 50, height: 50))
        imageView.image = UIImage.fontAwesomeIcon(name: .github, style: .brands, textColor: .black, size: CGSize(width:40,height:40))
        self.view.addSubview(imageView) 
        

        结果:-

        【讨论】:

        • 您好,首先我要感谢您回答我的问题。其次,我要再次感谢你,因为我按照你的指示得到了我想要的结果。
        • @hussnainahmad 欢迎您,您可以随意投票:D 编码快乐。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多