当我更改其默认色调颜色时,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 的为黑色!
我正在编写一个带有 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 的为黑色!