UITabBarItem 外观 -setTitleTextAttributes 不断记录“状态 = 1 被解释为 UIControlStateHighlighted”?

Posted

技术标签:

【中文标题】UITabBarItem 外观 -setTitleTextAttributes 不断记录“状态 = 1 被解释为 UIControlStateHighlighted”?【英文标题】:UITabBarItem appearance -setTitleTextAttributes keeps logging "state = 1 is interpreted as UIControlStateHighlighted"? 【发布时间】:2012-06-10 19:32:32 【问题描述】:

在我的 AppDelegate 实现文件中,我使用这些代码行来设置 tabBarItems 的自定义字体和颜色:

[[UITabBarItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor grayColor], UITextAttributeTextColor, 
[UIFont fontWithName:@"Arial" size:0.0], UITextAttributeFont, 
nil] forState:UIControlStateNormal];

[[UITabBarItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor, 
[UIFont fontWithName:@"Arial" size:0.0], UITextAttributeFont, 
nil] forState:UIControlStateHighlighted];

由于某些(未知)原因,记录了以下消息,每个 tabBarItem 一个:

button text attributes only respected for UIControlStateNormal, UIControlStateHighlighted and UIControlStateDisabled. state = 1 is interpreted as UIControlStateHighlighted.

使用标准搜索引擎找不到任何内容,因此我寻求您的帮助。我做错了什么以及如何解决这个问题?

提前感谢您的任何建议。

【问题讨论】:

我的也有同样的问题。我认为我们只是忽略它。但是如果您需要在控制台中查看其他消息,这真的很烦人。你可能会看到这个帖子:iphonedevsdk.com/forum/iphone-sdk-development/… 通过阅读 Camille 的回答,我将“UIControlStateHighlighted”替换为“UIControlStateSelected”,消息就消失了。它看起来与 Camille 的答案不同,但我的情况是针对“UITabBarItem”,而 Camille 的情况是针对“UIBarButtonItem”。 Wayne Liu,您应该将此作为答案发布。看起来控制台警告确实具有误导性。对于 UITabBar 上的titleTextAttributes,接受的状态似乎是UIControlStateNormalUIControlStateSelectedUIControlStateDisabled。但不是警告所暗示的UIControlStateHighlighted 【参考方案1】:

只需将“UIControlStateHighlighted”更改为“UIControlStateSelected”。希望这会有所帮助!

【讨论】:

有效。就好像他们做同样的工作,那为什么苹果保留两者? 我仍然收到警告【参考方案2】:

我遇到了同样的问题,因为我正在使用:

[[UIBarButtonItem appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateSelected];

我改成:

[[UIBarButtonItem appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateHighlighted];

……问题就解决了。希望这会有所帮助!

【讨论】:

你的意思是你做了与上述答案完全相反的事情?

以上是关于UITabBarItem 外观 -setTitleTextAttributes 不断记录“状态 = 1 被解释为 UIControlStateHighlighted”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使项目变灰的情况下禁用 UITabBarItem

如何为 UITabBarItem 设置自定义标题属性

没有标题标签的自定义 UITabBarItem

获取未选中状态的 uitabbaritem 的颜色?

UITabBarItem 标题在标题中心,而不是在底部

UITabBar 外观问题 + NSThreads