2011-06-12 152 views
1

看看那個醜陋的黃色是哪裏?我需要這種顏色來改變......很多。有點像一個奇怪的kalidascope的東西,但一次只有一種顏色。很像默認的OS X Spectrum屏幕保護程序。我應該如何去做這件事? Objective-C看起來像一個巨大的CPU豬。我可以將OpenGL背景放入這樣的東西嗎?會喜歡正確的方向。更改UIView的背景顏色

enter image description here

+0

Magic-8球由美泰公司版權所有。我一年前第一次提交的應用程序是這個確切的應用程序。它在版權問題上遭到拒絕。 – Moshe 2011-06-12 02:28:34

+0

@Moshe Fortune Ball,另一方面... – 2011-06-12 02:31:01

+0

嗯,也許。我認爲這是概念,而不是名稱。看,我祝你最好,但我不認爲蘋果會批准它。 – Moshe 2011-06-12 02:34:31

回答

3

那麼你可以安排一個函數調用像半秒,然後改變背景顏色有這樣

[NSTimer scheduledTimerWithTimeInterval:0.3f target:self selector:@selector(someMethod) userInfo:nil repeats:YES]; 

- (void)someMethod 
{ 
    self.view.backgroundColor = [UIColor redColor]; 
} 

但這會爲了你的背景視圖改變顏色只有紅色,所以要改變顏色到別的東西,你可以聲明一個類變量或多個變量來改變你的背景顏色。在選擇器方法中,您可以更改它們的值以獲得一些很酷的效果。你可以做這樣的事情。

self.view.backgroundColor = [UIColor colorWithRed:x green:y blue:z alpha:1.0f]; 

x += 0.01f; 
y += 0.02f; 
z += 0.04f; 

if(x >= 1) 
    x = 0.01f; 
if(y >= 1) 
    y = 0.02f; 
if(z >= 1) 
    z = 0.04f; 
3

首先嚐試最簡單的事:只設置該視圖的backgroundColor屬性,然後使用performSelector:withObject:afterDelay:適當的延遲後切換到下一個顏色。

除非您使用OpenGL完成整個屏幕,否則這種方式不會更快。瓶頸很可能是將「球」圖像和文本合成到背景上,而不是創建純色背景。描述它,而不是猜測或依靠我的猜測。

+0

很好的答案,打敗我吧。 – Moshe 2011-06-12 02:39:29

2

讓我們假設前景材質具有透明度。然後,我們可以在整個屏幕上看到一個完整的視圖,並通過前景材質看到該視圖的顏色。然後改變背景視圖的顏色就足夠了。如果您希望在背景顏色中更改此動畫,請將視圖的圖層背景色(更改爲CGColor);效果將自動生成動畫。你需要鏈接到QuartzCore.framework並導入<QuartzCore/QuartzCore.h>,然後你就可以說:

theView.layer.backgroundColor = [[UIColor redColor] CGColor]; 

您可以修改此顏色動畫;例如,您可以通過設置CATransaction的動畫持續時間(請參閱CATransaction類方法)來規定其持續時間(顏色更改的速度有多快或多慢)。我可以想象你會有一個重複的NSTimer,每當定時器啓動時你會做另一個顏色變化動畫。