スペクトル全体(つまり、赤、青、緑、黄色、オレンジなど)に行き渡るスムーズなカラートランジションが欲しい
また、特定のスペクトル(つまり、すべての赤)の色の滑らかな遷移を可能にしたい。
このプロセスを簡略化するのに役立つ簡単なアルゴリズム/再帰関数/式はありますか?
これを行う1つの可能な方法は、ビューのレイヤーに背景色のアニメーションを適用することです。
次に、スペクトル全体を通過するには、3色の組み合わせで作業する必要があります。
これを実現する最良の方法は、「色相」を使用することです。
[[UIColor alloc] initWithHue:135/360.0f飽和:1明るさ:1アルファ:1]
ここで、すべての色相値を反復処理する必要があり、すべてのスペクトルにわたってスムーズな遷移が得られます。
サンプルコード:
int _currentColorHue = 0;
-(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]; }]; }
用途に応じてアニメーションを停止できます。
これを行う非常に簡単な方法の1つは、UIViewアニメーションブロックを使用することです。
[UIView animateWithDuration:1.0 animations:^{
view.backgroundColor = [UIColor redColor];
}];
これにより、view
の以前の背景色が補間され、1秒間で赤色になります。
Swift:
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");
}];
さまざまなアニメーションの詳細については、次のWebサイトをご覧ください。
iOSのUIViewチュートリアル:UIViewアニメーションの使用方法