我正在使用带有StoryBoards的iOS 5.1。我想改变标准页面卷曲按钮的色调,但我似乎也不能。
该按钮位于View Controller上,是推导控制器的推送视图控制器。推断工具栏,因为我更改了导航控制器上的色调。工具栏以所需颜色显示。
我的viewDidLoad方法如下:
- (void)viewDidLoad
{
[super viewDidLoad];
// adjust the color of the curl button
if (self.curlButton) {
NSMutableArray * toolbarItems = [self.toolbarItems mutableCopy];
[toolbarItems removeObject:self.curlButton];
UIColor *barColor = self.navigationController.toolbar.tintColor;
UIBarButtonItem *newPageCurl = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl target:self.curlButton.target action:self.curlButton.action];
newPageCurl.tintColor = barColor;
NSLog(@"%@", newPageCurl.tintColor);
[toolbarItems addObject:newPageCurl];
self.toolbarItems = toolbarItems;
}
}
self.curlButton
是在Interface Builder中配置的页面卷曲按钮的插座。
我已经尝试过设置self.curlButton
中的色调,这最初为零,但是没有效果,按钮是相同的蓝色色调。
关于SO的一些答案说你必须以编程方式创建一个新按钮,这就是我在这里尝试的。
我已经确认barColor
包含正确的颜色。我注释掉了removeObject
行并且正确地生成了两个卷曲按钮,但两者都是蓝色的。
NSLog验证newPageCurl
按钮是否具有正确的色调集。
我尝试在viewDidAppear
中执行所有操作,以防工具栏需要先显示,但按钮仍为蓝色且未使用新色调。
答案 0 :(得分:0)
从iOS 5开始,您应该可以使用外观选择器来执行此操作。
(编辑,很遗憾,因为卷曲按钮导致误入歧途。外观或外观当包含在:除了卷曲按钮之外似乎工作...甚至其他系统栏按钮项目。对于curl,一位用户说{{{ 3}}工作,但当我测试它时,它对我不起作用。)
if ([[UIBarButtonItem class] respondsToSelector:@selector(appearanceWhenContainedIn:)])
{
id barButtonAppearance
= [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];
[barButtonAppearance setTintColor:self.navigationController.toolbar.tintColor];
barButtonAppearance
= [UIBarButtonItem appearanceWhenContainedIn:[UIToolBar class], nil];
// you'll have to have toolbar already, or pick something like [UIColor chartreuseColor] or whatever
[barButtonAppearance setTintColor:toolbar.tintColor];
}