0

这更像是一个数学问题,但我只是没有运气。基本上我得到了下面的代码来改变单元格颜色,具体取决于它们在颜色数组中的等效行。这一切都很好,但我想要它,这样我就可以以某种方式切断亮度光谱的底端,这样我就永远不会得到低于 0.2 的任何东西。任何有关如何解决此问题的建议将不胜感激。

-(IBAction)reloadTable {
    float arrayCount = [masterListArray count];
    float increment = (1.0 / arrayCount);
    NSMutableArray *tempColor = [[NSMutableArray alloc]init];
    colors = [[NSMutableArray alloc]init];

    for (float brightness = 0.0; brightness < 1.0; brightness += increment) {
        UIColor *color = [UIColor colorWithHue:50.0f/255.0f
                                    saturation:1.0
                                    brightness:brightness
                                         alpha:1.0];
       [tempColor addObject:color];
       NSLog(@"brightness: %f", brightness);
    }

    colors = [[tempColor reverseObjectEnumerator] allObjects];
    [self.tableView reloadData];
}
4

1 回答 1

0

你可以使用一些额外的变量来确保你总是在 1.0 和底端之间结束。在下面的代码中,我们使用单元格的数量进行迭代(比以前更好的做法)并从亮度 1.0 开始并在底部结束。也不需要使用 tempColors。

-(IBAction)reloadTable {

    float arrayCount = [masterListArray count];
    float bottomEnd = 0.2;
    float brightnessRange = 1.0 - bottomEnd;
    float increment = (brightnessRange / arrayCount);

    colors = [NSMutableArray array];

    for (int i = 0; i < arrayCount; i++) {
        // We start with light and go darker per cell.
        float brightness = bottomEnd + (brightnessRange - i * increment); 
        UIColor *color = [UIColor colorWithHue:50.0f/255.0f
                                    saturation:1.0
                                    brightness:brightness
                                         alpha:1.0];
        [colors addObject:color];
        NSLog(@"brightness: %f", brightness);
    }

    [self.tableView reloadData];
}
于 2012-12-05T14:47:16.350 回答