我有一个以前完美运行的代码,现在根本不工作.
在我的一个应用程序中,我有一组UIbarbuttonItems,它们被添加到视图控制器的toolbaritems数组中.它们显示得很好.
但是,在某些时候,我想要更改某些项目的色调颜色以响应用户 *** 作.代码很简单:
flagbutton.tintcolor = [UIcolor redcolor];
这个代码以前用过,但现在它不起作用!我已经验证了存在对UIbarbuttonItem的引用,并且执行了这行代码.但是,色调颜色没有改变.
在tintcolor属性的描述中,它说:
To refresh subvIEw rendering when this property changes,overrIDe the tintcolorDIDChange() method.
我尝试添加tintcolorDIDChange方法,但没有调用它.我在这个阶段的假设是,一旦tintcolor被更改,我的按钮就不会自动刷新.
有人可以帮忙找到手动刷新它的方法吗?该按钮是带有图像的标准UIbarbuttonItem.
更新1
实际上我注意到,如果我更改工具栏的tintcolor而不是单个项目代码正在工作.似乎由于某种原因,在单个项目上设置色调颜色不再有效.有谁知道为什么会这样?
更新2
由于matt的提示,我能够找到问题的根源.它是由启动应用程序时执行的代码引起的:
[[UItableVIEwCell appearance] setTintcolor:[Colourtheme sharedtheme].navBackground];
现在,我完全不知道为什么这一行导致了UIbarbuttonItem色调的问题…这可能是因为它在UIAppearance中引入了一些含糊之处.无论如何,由于我自己不再需要这条线,我可以轻松地将其移除.我仍然会打开我的问题,因为我认为这种行为非常奇怪,所以在某种程度上,这个问题仍然没有答案.
就像一个额外的信息 – 遇到这些问题的视图控制器包含一个表视图.
解决方法 我遇到了同样的问题,最后通过以下步骤解决了这个问题:1)创建条形按钮项目的插座.我被称为“closebutton”
2)编写以下代码:
overrIDe func vIEwWillAppear(animated: Bool) { let barbuttonAttributes = [NSAttributedStringKey.foregroundcolor: UIcolor.white] closebutton.setTitleTextAttributes(barbuttonAttributes,for: .normal)}
请务必将代码放在vIEwWillAppear中,因为这会覆盖UIAppearance的默认设置.
总结以上是内存溢出为你收集整理的ios – UIBarButtonItem色彩不起作用全部内容,希望文章能够帮你解决ios – UIBarButtonItem色彩不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)