当我更改其默认色调颜色时,UIButton、TabBarItem 和 BarButtonItem 总是色调为白色

UIButton, TabBarItem and BarButtonItem always tint white when I change its default tint color

我正在编写一个带有 TabBars 和 Toolbars 的应用程序,我想使用我自己的色调。
虽然我可以更改我在 Storyboard 中创建的元素的色调,但当我尝试将其默认蓝色色调更改为另一种时,我以编程方式创建的元素会卡在几乎看不见的白色中。这些是一些使用示例:

// a toolbar over the keyboard, note the btnDone
var keyboardToolbar = UIToolbar(frame: CGRectMake(0, 0, self.view.bounds.size.width, 44))
keyboardToolbar.barStyle = UIBarStyle.Default

var btnDone: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: "textViewDone")
keyboardToolbar.setItems([btnDone], animated: true)

field.inputAccessoryView = keyboardToolbar

当我使用 btnDone.tintColor = UIColor(red: 153, green: 102, blue: 51, alpha: 1) 更改色调时,我得到以下结果:

你甚至看不到按钮。如果我不写上面的行,我会得到系统蓝色色调。这个问题扩展到 UITabBarItems 和 UIButtons。

更新

所以在一些调查和测试之后,我有点想通了为什么会这样。我 运行 使用系统颜色的相同代码(如 [UIColor brownColor]),令人惊讶的是它有效!那么现在的问题是:tint颜色是否仅限于系统颜色? RGB 颜色中是否有任何 运行ge 不能用作色调颜色?

试试下面的代码,我已经在 iOS7 & i0S8 中检查过了。工作正常。见截图。

- (void)textFieldDidBeginEditing:(UITextField *)textField{

    UIToolbar * keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];

    keyboardToolBar.barStyle = UIBarStyleDefault;
    keyboardToolBar.translucent = NO;
    keyboardToolBar.tintColor = [UIColor colorWithRed:0.0f green:1.0f blue:0.0f alpha:1.0f];

    [keyboardToolBar setItems: [NSArray arrayWithObjects:
                                [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                                [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:nil],
                                nil]];
    textField.inputAccessoryView = keyboardToolBar;
}

RGB 值应该是介于 0.0f - 1.0f 之间的小数值

因此,将您的值除以 255.0f 就可以了!

btnDone.tintColor = UIColor(red: 153/255.0f, green: 102/255.0f, blue: 51/255.0f, alpha: 1)

现在,当您输入大于 1.0f 的值(即 153、102 和 51)时,它假定所有值为 1.0f 并且所有值为 1.0f 的 RGB 颜色为白色,所有值为 0.0f 的为黑色!