UIToolbar tintColor没有效果

时间:2017-01-12 20:48:07

标签: ios objective-c uibarbuttonitem uitoolbar uicolor

我有一个时区选择器,它为iPhone和iPod之间的“完成”按钮显示不同的颜色:

iPhone

enter image description here

的iPod

enter image description here

以下是代码:

    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 44)];
    [toolbar setBarStyle:UIBarStyleBlackOpaque];
    toolbar.barTintColor = [UIColor darkAppColor];
    toolbar.translucent = NO;
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:nil];

    // doneButton.tintColor = [UIColor redColor]; // this has no effect
    // toolbar.tintColor = [UIColor redColor]; // this has no effect

    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    toolbar.items = @[flexibleSpace, doneButton];

AppConstants.m

@implementation UIColor
    ...
    + (UIColor *)darkAppColor
    {
                return [UIColor colorWithHex:0x054e85];
    }
    ...
@end

我希望iPod屏幕看起来像iPhone的屏幕(没有浅蓝色的“完成”按钮)。奇怪的是,如果我改变这一行:

toolbar.barTintColor = [UIColor darkAppColor];

toolbar.barTintColor = [UIColor greenColor];

然后,拾取器的整个导航栏(包括“完成”按钮)是均匀的(虽然颜色错误)。正如您在上面代码中注释掉的行中所看到的,我也尝试更改“完成”按钮以及工具栏的tintColor属性,但这似乎根本没有效果。

这两款设备都运行iOS 10.2。

有人可以告诉我:

  1. 为什么iPhone和iPod处理此代码的方式不同?

  2. 为什么设置“toolbar”和“doneButton”的tintColor属性没有任何效果?

  3. 如何让iPod显示器与iPhone相匹配?

0 个答案:

没有答案