更新,我的回答如下。
目前我遇到了一个问题,就是无法改变我的UISegmentedControl
的文本颜色;它需要在第一次加载时使用UIControlStateSelected
进行更改。虽然代码可以运行,但只有特定情况下才能正常工作。当你访问带有分段控件的导航栏页面,点击返回按钮,再重新访问该页面时,代码才会正常工作。我认为这里存在继承问题。让我解释一下……
分段控件位于导航栏顶部。
包含分段控件的视图控制器的继承关系:TabBarViewController(由AppDelegate管理)-->导航控制器-->ViewController(其中包含“inviteSegBar”)
下面是AppDelegate.m中的代码:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithHexString:@"#669900"]];//this one sets it green.
[[UINavigationBar appearance] setBackgroundColor:[UIColor whiteColor]];
以下是包含“inviteSegBar”的视图控制器的viewDidLoad:
代码,其中问题所在的是UISegmentedControl
:
- (void)viewDidLoad
{
[super viewDidLoad];
//CUSTOM APPEARANCE <below>
self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
self.navigationController.navigationBar.tintColor = [UIColor colorWithHexString:@"#669900"];
inviteSegBar.tintColor = [UIColor colorWithHexString:@"#333333"];
[[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor colorWithHexString:@"#669900"]} forState:UIControlStateSelected];
}
就像我之前说的那样,最后一行代码是有效的,但仅在您重新访问页面时才有效。为什么会这样呢?
附言: 同志们,这是同一个问题,我在任何答案列出之前已经尝试过这段代码。
UITextAttributeTextColor
在 iOS7.0 中首次被弃用。 - Chisx