2011-06-12 109 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,每当定时器启动时你会做另一个颜色变化动画。