Swift - 条形按钮项目图像/设置大小和宽度

Swift - bar button item image / set size and width

感觉我在这个问题上浪费了很多时间,希望得到一些帮助。我正在尝试在我的 barButtonItem 中使用自定义菜单图标 (20px x 20px)。问题是缩放以填充条形按钮项目并扭曲。

通常这不应该太复杂。但我使用的是选项卡式视图控制器,而不是导航控制器。我放入视图控制器的导航栏只是一个出口。

通常我会这样做:

    let image = UIImage(named: "menu_white")
    let frame = CGRectMake(0, 0, image!.size.width, image!.size.height)
    let button = UIButton()
    button.frame = frame
    button.setImage(image, forState: .Normal)
    let rightMenuButton = UIBarButtonItem(customView: button)
    self.navigationItem.setRightBarButtonItem(rightMenuButton, animated: true)

但这不起作用,因为 self.navigationItem 实际上并未引用视图控制器中的任何内容。

我需要以某种方式以编程方式将图像放入插座,但 setRightBarButtonItem 不是 UINavigationBar 的方法。

@IBOutlet weak var navBar: UINavigationBar!

如果有人有一些想法,我将不胜感激。

"loose" 导航栏的工作方式是配置一个 UINavigationItem 并将包含它的数组设置为导航栏的 items,如示例代码(来自我的书)所示:

let ni = UINavigationItem(title: "Tinker")
let b = UIBarButtonItem(title: "Evers", style: .Plain, target: self, action: "pushNext:")
ni.rightBarButtonItem = b
self.navbar.items = [ni]

所以,您大概可以做类似的事情。

self.navigationItem 只是一种在您使用 UINavigationController 的特殊情况下自动完成的方法。但是你说你没有那样做。 (当然,你 可以 那样做;没有法律规定你必须使用导航控制器来做任何实际的导航。我经常使用导航控制器只是为了获得导航栏,因为这是放置小菜单按钮之类的东西的好地方。)