如何使用图像和标签制作自定义正确的 UIBarButtonItem?

Posted

技术标签:

【中文标题】如何使用图像和标签制作自定义正确的 UIBarButtonItem?【英文标题】:How to make custom right UIBarButtonItem with image and label? 【发布时间】:2015-07-19 08:43:25 【问题描述】:

我实际上发现了同样的问题 here 但对于 obj.c 所以我设法做到了:

trashNavButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        trashNavButton.addTarget(self, action: "trashItemClicked", forControlEvents: UIControlEvents.TouchUpInside)
trashNavButton = UIButton(frame: CGRectMake(0, 0, 50, 32))
trashNavButton.setTitle("\(trashCount)", forState: UIControlState.Normal)
trashNavButton.setTitleColor(UIColor(red: 229.0/255.0, green: 57.0/255.0, blue: 53.0/255.0, alpha: 1.0), forState: UIControlState.Normal)
trashNavButton.titleLabel?.textAlignment = NSTextAlignment.Right
trashNavButton.setImage(UIImage(named: "trashButton"), forState: UIControlState.Normal)
rightBarButton.customView = trashNavButton
self.navigationItem.rightBarButtonItem = rightBarButton

我想要做的是在导航栏的右侧有一个按钮,我希望该按钮的左侧也有一个标签(你可以看到我上面提到的问题的一个很好的例子) ,而且这段代码工作得很好,除了图像在左边,标签在右边,我希望它是相反的,我会感谢你的帮助:)

【问题讨论】:

注意uibarbuttonitem上的自定义View。像这样: self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: yourCustomView) 似乎会对你有所帮助。 【参考方案1】:

举个例子

let containView = UIView(frame: CGRectMake(0, 0,70, 40))

let label = UILabel(frame: CGRectMake(0, 0, 50, 40))
label.text = "Right"
label.textAlignment = NSTextAlignment.Center

containView.addSubview(label)

let imageview = UIImageView(frame: CGRectMake(50, 10, 20, 20))
imageview.image = UIImage(named: "memoAccess")
imageview.contentMode = UIViewContentMode.ScaleAspectFill
containView.addSubview(imageview)

self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: containView)

【讨论】:

如何让标签右对齐?文本将是一个可以更改的数字 好的,谢谢,你知道如何让它像一个按钮一样工作吗?在突出显示时更改颜色并为其添加操作

以上是关于如何使用图像和标签制作自定义正确的 UIBarButtonItem?的主要内容,如果未能解决你的问题,请参考以下文章

自定义标签栏背景图像未正确显示

C#WPF - 创建自定义控件。不确定如何正确对齐文本

如何让自定义标签栏显示标签栏项目在 Xcode 中设置的选定图像?

如何使用图像和文本制作自定义 UIButton?

无法在 ListView 中使用自定义项目布局正确显示图像

如何在 android 中使用图像制作自定义网格?