这更像是一个数学问题,但我没有运气。基本上我已经得到了下面的代码来改变单元格颜色,具体取决于它们在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];
}
答案 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];
}