UIColor colorWithRed:绿色:蓝色:alpha:除非一个参数为0,否则始终返回白色

时间:2011-09-28 14:04:52

标签: ios cocoa-touch uicolor

我正在使用

[UIColor colorWithRed:136 green:155 blue:218 alpha:1.0]; 

更改表格视图单元格的背景颜色。

但由于某种原因,背景只是保持白色。如果我试试

[UIColor colorWithRed:0 green:155 blue:218 alpha:1.0]; 

颜色变化。这对我来说没有意义。有什么建议或提示吗?

4 个答案:

答案 0 :(得分:37)

参数不是0到255的值,而是介于0.0和1.0之间的浮点数:

[UIColor colorWithRed:0.0f/255.0f green:155.0f/255.0f blue:218.0f/255.0f alpha:1.0f]; 

答案 1 :(得分:3)

值必须是浮点数(在0.0到1.0范围内),而不是整数(在0到255范围内)。

+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha

尝试:

[UIColor colorWithRed:136.0/255.0 green:155.0/255.0 blue:218.0/255.0 alpha:1.0]; 

答案 2 :(得分:1)

参数不是整数而是浮点数,所以 您可能希望将所有颜色浮点值除以255。 像这样:

  [UIColor colorWithRed:136.0/255 green:155.0/255 blue:218.0/255 alpha:1.0];

这就是为什么当你将红色设置为0而不是1时颜色会发生变化的原因。在这种情况下,这意味着136。

答案 3 :(得分:0)

在iOS 11中将导航栏设置为透明

(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    self.navigationController.navigationBar.translucent = YES;
    self.navigationController.view.backgroundColor = [UIColor clearColor];
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
}