我想有在整個頻譜變(即紅,藍,綠,黃,橙等)iOS版 - 平滑的色彩過渡更改/動畫
也希望能夠平穩過渡色在特定光譜中具有平滑的顏色過渡(即所有紅色)。
有沒有簡單的算法/遞歸函數/公式可以幫助簡化這個過程?
我想有在整個頻譜變(即紅,藍,綠,黃,橙等)iOS版 - 平滑的色彩過渡更改/動畫
也希望能夠平穩過渡色在特定光譜中具有平滑的顏色過渡(即所有紅色)。
有沒有簡單的算法/遞歸函數/公式可以幫助簡化這個過程?
一個非常簡單的方法來完成這將是使用UIView動畫塊。
[UIView animateWithDuration:1.0 animations:^{
view.backgroundColor = [UIColor redColor];
}];
這將之間進行內插的任何view
的先前的背景顏色爲,紅色在1秒的過程中。
斯威夫特:
UIView.animate(withDuration: 1.0) {
view.backgroundColor = .red
}
使用以下用於iOS的色彩過渡的代碼,它給你的各種configureable選項:
1)延遲啓動動畫
2)回調的動畫完成之前
3 )動畫選項
[UIView animateWithDuration:1.0 delay:0.2 options:0 animations:^{
view.backgroundColor = [UIColor greenColor];
} completion:^(BOOL finished)
{
NSLog(@"Color transformation Completed");
}];
對於詳細d請訪問:
UIView Tutorial for iOS: How To Use UIView Animation
這樣做的一種可能方式是在視圖的圖層上應用背景色動畫。
現在要通過整個光譜,你必須處理三種顏色的組合。
達到此目的的最佳方法是使用「色相」。
[的UIColor頁頭] initWithHue:135/360.0f飽和度:1 亮度:1阿爾法:1]
現在你必須遍歷所有的色調值,你會得到平穩過渡這貫穿了所有的光譜。
樣品的編號:
INT _currentColorHue = 0;
- (無效)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的方法... – JimmyJammed
這太棒了。 – VSG24