UIBarButtonItem 上的 ios-fontawesome

Posted

技术标签:

【中文标题】UIBarButtonItem 上的 ios-fontawesome【英文标题】:ios-fontawesome on UIBarButtonItem 【发布时间】:2014-11-24 11:46:49 【问题描述】:

我正在尝试使用ios FontAwesome 在条形按钮上设置图标,如下所示:

[self.barButton setTitle:[NSString fontAwesomeIconStringForEnum:FACamera]];

还有这个:

[self.barButton setTitle:[NSString fontAwesomeIconStringForIconIdentifier:@"fa-camera"]];

不管我用什么标识符,结果都是一样的:

可能出了什么问题?

【问题讨论】:

您是否将FontAwesome.ttf 用作按钮的基本要求? @holex,不确定在哪里设置... UIButton 有一个font 属性——这可能是一个好的开始,但原作者有一个详细的描述来展示你如何做到这一点——如果你已经阅读了文档。 . UIBarButtonItem 没有字体属性,据我所知。 (不需要刻薄,顺便说一句) 是的,它没有,你可以通过appearance协议改变它的字体。 【参考方案1】:

以防万一其他人想知道:

[self.barButton setTitleTextAttributes:@
                  NSFontAttributeName: [UIFont fontWithName:@"FontAwesome" size:24.0],
                  NSForegroundColorAttributeName: self.view.tintColor
                                          forState:UIControlStateNormal]; 
[self.barButton setTitle:[NSString fontAwesomeIconStringForIconIdentifier:@"fa-camera"]];

【讨论】:

【参考方案2】:

在斯威夫特中:

    let filterButton = UIBarButtonItem(title: String.fontAwesomeIconWithName(FontAwesome.Filter), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("filterClicked"))
    filterButton.setTitleTextAttributes(NSDictionary(dictionary: [NSFontAttributeName:UIFont.fontAwesomeOfSize(25), NSForegroundColorAttributeName : UIColor.COLOR_BLUE_DARK]), forState: UIControlState.Normal)

    self.navigationItem.rightBarButtonItem = filterButton

【讨论】:

【参考方案3】:

使用 FontAwesomeKit 2.2 API,您可以这样做:

[self.barButton setTitleTextAttributes:@
    NSFontAttributeName: [FAKFontAwesome iconFontWithSize:20]
 forState:UIControlStateNormal];
[self.barButton setTitle:[FAKFontAwesome cameraIconWithSize:20].attributedString.string];

或者按照FontAwesomeKit documentation 中的建议转换为UIImage

FAKFontAwesome *cameraIcon = [FAKFontAwesome cameraIconWithSize:20];
UIImage *cameraImage = [cogIcon imageWithSize:CGSizeMake(20, 20)];
[self.barButton setImage:camera];

【讨论】:

【参考方案4】:

如果您想在不使用属性文本的情况下使用更简单的解决方案,请查看我的库。还支持可可豆荚。 Font Awesome Swift

【讨论】:

【参考方案5】:

在 Swift 4 中,这对我有用

let button1 = UIBarButtonItem(title: "\uf05a", style: .plain, target: self, action: #selector(showCartInfoPopUp(_:)))
           
button1.setTitleTextAttributes([.font : UIFont(name: "Font Awesome 5 Pro", size: 24), .foregroundColor : UIColor.white], for: .normal)
            
self.navigationItem.rightBarButtonItem  = button1

【讨论】:

以上是关于UIBarButtonItem 上的 ios-fontawesome的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 上的 ios-fontawesome

按下时以编程方式移除 UIBarButtonItem 上的灯光?

如何在导航栏上的 UIBarButtonItem 内偏移 UIButton 图像?

将 UiBarButtonItem 上的 UIImage 从标识符更新为图像

自定义 sg 控件和栏上的 UIButton 或 UIBarButtonItem 的背景

如何以编程方式将 UIBarButtonItem 添加到拖到视图上的 UINavigationBar