首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法修改UIBarButton tintColor

无法修改UIBarButton tintColor
EN

Stack Overflow用户
提问于 2016-03-22 00:08:36
回答 3查看 1.3K关注 0票数 1

我在导航栏中有一个UIBarButton,我从故事板中为它设置了一个图像(silhouette.png),我可以随意更改该图像的色调(颜色):

代码语言:javascript
复制
    if let num2 = Int(s, radix: 16) { //s="00ff00"
        flamingoBtn.tintColor = UIColor(netHex:num2) //this btn is an IBoutlet
     }

但是,在某种程度上,我以编程的方式更改了另一个图像(icon.png)的原始图像,因此在本例中我不需要更改颜色,到目前为止还不错:

代码语言:javascript
复制
if let url = NSURL(string: "http://www.123di.com/CanonSGLens_132.png") {
            if let data = NSData(contentsOfURL: url) {
                var newImgThumb : UIImage=UIImage(data: data)!

                var iconBtn = UIButton(frame: CGRect(x: 0, y: 0, width: 35, height: 35))
                iconBtn.setImage(newImgThumb, forState: UIControlState.Normal)
                iconBtn.addTarget(self, action: "goToSettings:", forControlEvents:  UIControlEvents.TouchUpInside)
                var item = UIBarButtonItem(customView: iconBtn)
                self.navigationItem.leftBarButtonItem = item
                print("CUSTOM ICON: DOWNLOADED")
            }
        }

问题来了,当我切换到原来的silhouette.png图标图像时,因为我不能再修改颜色,它总是保持蓝色轮廓(默认颜色),而不是绿色、红色等等:

代码语言:javascript
复制
        var newImgThumb : UIImage=UIImage(named: "happyface.png")!
        var replyBtn = UIButton(frame: CGRect(x: 0, y: 0, width: 35, height: 35))
        replyBtn.setImage(newImgThumb, forState: UIControlState.Normal)
        replyBtn.addTarget(self, action: "goToSettings:", forControlEvents:  UIControlEvents.TouchUpInside)
        replyBtn.tintColor = UIColor.greenColor()
        var item = UIBarButtonItem(customView: replyBtn)
        item.tintColor = UIColor.greenColor()//UIColor(netHex:num2)
        self.navigationItem.leftBarButtonItem = item

我做错了什么,为什么后来会有颜色变化??如果你需要额外的细节告诉我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-22 00:21:29

如果您谷歌如何设置自定义图像为您的酒吧按钮,几乎每个人都会告诉您创建一个UIButton,然后创建UIBarButtonItemUIButton作为一个customView:。在这种情况下,你在这里做的是对的。

但是,如果通过UIBarButtonItem创建cutomView:,则无法再更改tintColor。下面是如何设置自定义映像以及如何更改tintColor

代码语言:javascript
复制
    let item = UIBarButtonItem.init(image: UIImage(named: "happyface.png")!,
                style: .Plain,
                target: self,
                action: Selector("goToSettings:"))
    item.tintColor = UIColor.greenColor()
    self.navigationItem.leftBarButtonItem = item

根据调用上面代码的位置,您可能需要将其放入此结构中,以使其在UI线程中运行并使更改可见:

代码语言:javascript
复制
dispatch_async(dispatch_get_main_queue()) {  
//code here
}
票数 4
EN

Stack Overflow用户

发布于 2021-07-13 01:28:37

以防有人还在寻找解决方案。

代码语言:javascript
复制
barButtonItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: .normal)

通过设置标题文本属性的NSAttributedString.Key.foregroundColor,可以设置按钮的颜色。

票数 1
EN

Stack Overflow用户

发布于 2021-10-14 14:48:55

如果你这样做,你可以做任何你想做的事。

代码语言:javascript
复制
let logoutNavBarButtonItem = UIBarButtonItem.init(
    image: imageName,
    style: .plain,
    target: self,
    action: #selector(buttonPressed))
navigationItem.leftBarButtonItem = logoutNavBarButtonItem
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36143985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档