iOS - UIBarButtonItem标识符 - 用于创建"设置"齿轮按钮的选项

use*_*037 45 xcode interface-builder uibarbuttonitem ios

我想创建一个UIBarButtonItem来表示应用程序的设置(齿轮).目前我只能找到一个选项来创建UIBarButtonItem(界面生成器>属性检查器>标识符),如"添加"(+),"编辑","完成","取消"等

我找不到创建设置(齿轮)图标的选项.有没有办法在界面生成器或代码中执行此操作?

或者我是否必须创建图像,然后创建图像?

Cod*_*aFi 63

Unicode有几个值得注意的例子,你可以简单地复制并粘贴到Xcode中的字符串声明中,或者使用标准的Unicode String Escape(\ uxxxx),iOS实际上非常流利(我知道一些char很丑陋) ,但这是你的Unicode'):

Unicode字符'没有中心的GEAR'(U + 26ED):http://www.fileformat.info/info/unicode/char/26ed/index.htm

Unicode字符'GEAR'(U + 2699):http://www.fileformat.info/info/unicode/char/2699/index.htm

或者准备一个图像并相应地设置UIBarButtonItem的customView属性.

  • 就像CodaFi指出的那样,它就像一个魅力!`self.settingsBarButton.title = @"\ u2699"; UIFont*f1 = [UIFont fontWithName:@"Helvetica"大小:24.0]; NSDictionary*dict = [[NSDictionary alloc] initWithObjectsAndKeys:f1,UITextAttributeFont,nil]; [self.settingsBarButton setTitleTextAttributes:dict forState:UIControlStateNormal];` (24认同)
  • 从iOS9.1开始,unicode角色现在被转换为表情符号,在导航栏上看起来很奇怪.有没有办法使用旧符号? (9认同)
  • @Gus阻止表情符号转换你必须在你的unicode字符后添加\ u0000FE0E.对于Objective-C,它将是`self.settingsBarButton.title = @"\ u2699\u0000FE0E";`.在Swift`NSString(string:"\ u {2699}\u {0000FE0E}")` (6认同)
  • 对于任何想要在Swift/iOS 8中执行此操作的人,我必须执行`self.settingsBarButton.title = NSString(string:"\ u {2699}")`,`if let font = UIFont(name:"Helvetica", size:18.0)...``self.settingsBarButton.setTitleTextAttributes([NSFontAttributeName:font],forState:UIControlState.Normal)` (3认同)

Gxo*_*ocT 15

撰写CodaFiuser1046037答案:

使用unicode字符作为标题创建UIBarButtonItem.

您必须UIBarButtonItem使用title(initWithTitle:)而不是系统项(initWithBarButtonSystemItem:)进行初始化.

您可以使用字符串设置自定义标题(例如unicode字符).

您可以调整标题大小.

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"\u2699" style:UIBarButtonItemStylePlain target:self action:@selector(showSettings)];

UIFont *customFont = [UIFont fontWithName:@"Helvetica" size:24.0];
NSDictionary *fontDictionary = @{NSFontAttributeName : customFont};
[settingsButton setTitleTextAttributes:fontDictionary forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)


Ε Г*_*И О 6

要使用Swift获取齿轮图标,请执行以下操作viewDidLoad(),假设您已将视图中的按钮连接到控制器.(例如:@IBOutlet var settingsButton: UIBarButtonItem!)

    self.settingsButton.title = NSString(string: "\u{2699}") as String
    if let font = UIFont(name: "Helvetica", size: 18.0) {
        self.settingsButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
    }
Run Code Online (Sandbox Code Playgroud)


Mur*_*gal 6

这适用于Swift 3和iOS 10 ......

let settingsButton = UIBarButtonItem(title: NSString(string: "\u{2699}\u{0000FE0E}") as String, style: .plain, target: self, action: #selector(settings))
let font = UIFont.systemFont(ofSize: 28) // adjust the size as required
let attributes = [NSFontAttributeName : font]
settingsButton.setTitleTextAttributes(attributes, for: .normal)
Run Code Online (Sandbox Code Playgroud)

请参阅@ hazernut在接受的答案中的评论.没有添加\u{0000FE0E}到字符串,它显示为表情符号,并且不受任何外观设置的影响.添加该字符串可修复该问题.

  • 它是 Swift 4 中的 `let attributes = [NSAttributedStringKey.font: font]` (2认同)