iOS-плавный переход/анимация изменения цвета

Я хочу иметь плавный переход цвета, который идет по всему спектру (т. е. красный, синий, зеленый, желтый, оранжевый и т. д.)

также хотите иметь плавные переходы цветов в определенном спектре (т. е. все красные).

существуют ли простые алгоритмы рекурсивные функции/формулы, которые могут помочь упростить этот процесс?

3 ответов


один из возможных способов сделать это-применить фоновую цветовую анимацию на слое вида.

теперь, чтобы пройти через весь спектр, вы должны работать над комбинациями из трех цветов.

лучший способ достичь этого-использовать "Hue".

[[UIColor alloc] initWithHue: 135/360.0 f насыщенность:1 яркость:1 альфа:1]

теперь вам нужно выполнить итерацию для всех значений оттенка, и вы получите плавный переход, который проходит через все спектр.

пример кода:

  1. создать локальную переменную

int _currentColorHue = 0;

  1. рекурсивный вызов для изменения цвета фона.

- (void)animateMyView {

[UIView animateWithDuration:0.01 animations:^{
    self.view.layer.backgroundColor = [[UIColor alloc] initWithHue:_currentColorHue/360.0f saturation:1 brightness:1 alpha:1].CGColor;
} completion:^(BOOL finished)
{
    _currentColorHue++;
    if (_currentColorHue > 360)
    {
        _currentColorHue = 0;
    }
    [self animateMyView];
}];
}

вы можете остановить анимацию по использованию.


один очень простой способ сделать это - использовать блок анимации UIView.

[UIView animateWithDuration:1.0 animations:^{
    view.backgroundColor = [UIColor redColor];
}];

это будет интерполироваться между любым viewпредыдущий цвет фона был, и красный в течение 1 секунды.

Свифт:

UIView.animate(withDuration: 1.0) { 
    view.backgroundColor = .red
}

используйте следующий код для перехода цвета в iOS, он дает вам различные настраиваемые параметры:
1) задержка перед началом анимации
2) обратный вызов по завершении анимации
3) опции для анимации

[UIView animateWithDuration:1.0 delay:0.2 options:0 animations:^{
        view.backgroundColor = [UIColor greenColor];
    } completion:^(BOOL finished)
     {
         NSLog(@"Color transformation Completed");
     }];

для подробного описания различных анимаций, пожалуйста, посетите:
учебник UIView для iOS: Как использовать анимацию UIView