Как установить темный и светлый случайный цвет в UICollectionViewCell?
Я хочу создать тот же случайный цвет для выбранной ячейки ячейки и фона. Я успешно реализовал его с текущим кодом. но с этим я получаю cell.background цвет правильно, но я хочу установить светлый цвет на каждый индексный путь выбранной ячейки. так, как я могу это сделать?
предположим,
if (indexpath.row ==1) {
// lightcolor
}
if (indexpath.row == 2) {
// More light color as compare to indexpath.row ==1
}
@interface DisplayViewController () {
DisplayCollectionViewCell *cell;
float randomRed,randomGreen,randomBlue;
}
- (void)viewDidLoad {
randomRed = arc4random() % 255;
randomGreen = arc4random() % 255;
randomBlue = arc4random() % 255;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DisplayCellIphone" forIndexPath:indexPath];
if (indexPath.row == _setRandomIndex) {
// For Selected Color
cell.layer.backgroundColor = [UIColor colorWithRed:randomRed * 0.9 /255.0 green:randomGreen * 0.9 /255.0 blue:randomBlue * 0.9/255.0 alpha:1].CGColor;
} else {
cell.backgroundColor = [UIColor colorWithRed:randomRed/255.0 green:randomGreen/255.0 blue:randomBlue/255.0 alpha:1.0];
}
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
_count ++;
randomRed = arc4random() % 255;
randomGreen = arc4random() % 255;
randomBlue = arc4random() % 255;
if (indexPath.row == _setRandomIndex) {
if (_count == 0) {
[self addData:4];
}
NSLog(@"Selected Right Cell");
if (_count == 1 || _count == 2) {
_setRandomIndex = arc4random() % 6;
[self addData:6];
// _setRandomIndex = 2;
}
// next cell till 20;
}
Ответы
Ответ 1
Вы можете использовать [UIColor colorWithHue: saturation: brightness: alpha:]
и измените значения яркости и насыщенности. Установите случайные значения для параметров и используя ответ в этом сообщении, получите компоненты вашего UIColor и сгенерируйте цвета, изменив только значения яркости и насыщенности, сохраняя постоянное значение оттенка
Есть ли функция для преобразования UIColor в Hue Saturation Brightness?
Ответ 2
Сначала сохраните свойство UIColor
(я назвал его cellColor
) и использую код ниже
if (indexpath.row ==1) {
CGFloat hue = ( arc4random() % 256 / 256.0 ); // 0.0 to 1.0
CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from white
CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5; // 0.5 to 1.0, away from black
self.cellColor = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
}
if (indexpath.row == 2) {
CGFloat hue, saturation, brightness, alpha;
BOOL success = [self.cellColor getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
self.cellColor = [self.cellColor initWithHue:hue saturation:saturation/2 brightness:brightness alpha:alpha;
}
Теперь, в состоянии indexPath 1, вы создаете случайный цвет. И в состоянии indexPath 2 я получил значения оттенка и насыщенности и изменил значение насыщенности для случайного цвета, чтобы сделать ярче.
Надеюсь, это поможет вам.