web-dev-qa-db-ja.com

iOS-スムーズな色の変化の移行/アニメーション

スペクトル全体(つまり、赤、青、緑、黄色、オレンジなど)に行き渡るスムーズなカラートランジションが欲しい

また、特定のスペクトル(つまり、すべての赤)の色の滑らかな遷移を可能にしたい。

このプロセスを簡略化するのに役立つ簡単なアルゴリズム/再帰関数/式はありますか?

21
JimmyJammed

これを行う1つの可能な方法は、ビューのレイヤーに背景色のアニメーションを適用することです。

次に、スペクトル全体を通過するには、3色の組み合わせで作業する必要があります。

これを実現する最良の方法は、「色相」を使用することです。

[[UIColor alloc] initWithHue:135/360.0f飽和: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];
}];
}

用途に応じてアニメーションを停止できます。

3
Lakhpat meena

これを行う非常に簡単な方法の1つは、UIViewアニメーションブロックを使用することです。

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

これにより、viewの以前の背景色が補間され、1秒間で赤色になります。

Swift

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

次のコードを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アニメーションの使用方法

2
Aamir