改变UIView的背景颜色

时间:2011-06-12 02:07:19

标签: objective-c opengl-es background

看看丑陋的黄色在哪里?我需要那种颜色改变......很多。有点像一个幻觉kalidascope的东西,但整个时间有一种颜色。很像默认的OS X Spectrum屏幕保护程序。我该怎么做呢? Objective-C看起来像一个巨大的CPU猪。我可以把OpenGL背景放到像这样的东西吗?会喜欢推动正确的方向。

enter image description here

3 个答案:

答案 0 :(得分:3)

首先尝试最简单的事情:只需在该视图上设置backgroundColor属性,然后在适当延迟后使用performSelector:withObject:afterDelay:更改为下一种颜色。

除非你使用OpenGL进行整个屏幕,否则它不可能更快。瓶颈很可能是在背景上合成“球”图像和文本,而不是创建纯色背景。对它进行描述,而不是猜测或依赖我的猜测。

答案 1 :(得分: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;

答案 2 :(得分:2)

假设前景材质具有透明度。然后我们可以在它背后有一个占据整个屏幕的坚固视图,我们通过前景材料看到该视图的颜色。然后它就足以改变背景视图的颜色。如果您希望为背景颜色的此更改设置动画,请更改视图的图层的backgroundColor(到CGColor);效果将自动生动。您需要链接到QuartzCore.framework并导入<QuartzCore/QuartzCore.h>,然后您就可以说:

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

您可以修改此颜色动画;例如,您可以通过设置CATransaction的动画持续时间来指示其持续时间(颜色变化的速度或速度)(请参阅CATransaction类方法)。我可以想象你有一个重复的NSTimer,每当计时器触发时你都会做另一个变色动画。