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

时间:2015-11-22 17:12:02

标签: swift uiimage uinavigationbar uibarbuttonitem

感觉我已经浪费了很多时间在这个上,并且会喜欢一些帮助。我试图在我的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!

如果有人有想法,我会非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

a"松散"导航栏的工作原理是您配置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的特殊情况下自动完成的方法。但是你说你不这样做。 (当然,你可以这样做;没有法律规定你必须使用导航控制器来进行任何实际导航。我经常使用导航控制器来获取导航栏,因为它是放置小菜单按钮之类的好地方。)