切掉浮子的下端

时间:2012-12-05 14:32:57

标签: objective-c ios floating-point

这更像是一个数学问题,但我没有运气。基本上我已经得到了下面的代码来改变单元格颜色,具体取决于它们在colors数组中的等效行。这一切都很好,但我希望它能以某种方式切断亮度谱的底端,这样我就不会有任何结果,低于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];
}

1 个答案:

答案 0 :(得分: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];
}