UIBarButtonItem tintColor停止工作

时间:2014-03-10 11:56:32

标签: ios uibarbuttonitem uitoolbar

出于某种原因,我无法在我的视图中使用UINavigationBar,而是使用UIToolBar。我使用带有清晰tintColor的虚拟左按钮和带有黑色tintColor的标题按钮来正确居中标题并隐藏虚拟左按钮按钮,但它不再工作,虚拟左按钮和标题按钮都得到了main tintColor或者如果我禁用它们,它们会变成灰色。

如何将它们理想地禁用为按钮并设置正确的tintColor(清晰和黑色)?

- (void)addToolbar
{
    CGFloat barHeight = 44.0;
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.size.width - barHeight, self.view.bounds.size.height, barHeight)];

    UIBarButtonItem *flexibleSpaceButtonItem = [[UIBarButtonItem alloc]
                                                initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                target:nil action:nil];

    // Done button on the right
    UIBarButtonItem *doneButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];

    // dummy button on the left to have centered title
    UIBarButtonItem *dummyButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
    dummyButtonItem.enabled = NO;
    dummyButtonItem.tintColor = [UIColor clearColor];

    // title button
    UIBarButtonItem *titleButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title text here" style:UIBarButtonItemStylePlain target:nil action:nil];
    titleButtonItem.enabled = NO;
    titleButtonItem.tintColor = [UIColor blackColor];

    // set toolbar items
    toolbar.items = @[dummyButtonItem,flexibleSpaceButtonItem, titleButtonItem, flexibleSpaceButtonItem,doneButtonItem];

    [self.view addSubview:toolbar];
}

2 个答案:

答案 0 :(得分:1)

为视图指定色调时,色调会自动传播到视图层次结构中的所有子视图。因为UIWindow继承自UIView,您可以通过使用如下代码设置窗口的tint属性来为整个应用指定颜色:

application:didFinishLaunchingWithOptions:

window.tintColor = [UIColor purpleColor];

来源 - iOS Transitions。在使用色调部分

下查看

答案 1 :(得分:0)

根据您的反馈,我发现在AppDelegate中执行此操作:

self.window.tintColor = [UIColor colorWithRed:255/255.0 green:59/255.0 blue:48/255.0 alpha:1.0];
[[UITextField appearance] setTintColor:[UIColor colorWithRed:66/255.0 green:107/255.0 blue:242/255.0 alpha:1.0]];

第二行导致了我的问题。我现在需要找出为什么我把第二行放在那里:)。谢谢你的帮助。