Objective c 更改UIView的背景色

Objective c 更改UIView的背景色,objective-c,opengl-es,background,Objective C,Opengl Es,Background,看到那丑陋的黄色在哪里了吗?我需要改变颜色。。。很多有点像一个三倍的kalidascope的东西,但始终只有一种颜色。很像默认的OSX频谱屏幕保护程序。我该怎么做呢?Objective-C看起来像一个巨大的CPU猪。我可以把OpenGL的背景放进这样的东西里吗?我希望能朝正确的方向推进 首先尝试最简单的方法:只需在该视图上设置backgroundColor属性,然后使用性能选择器:withObject:afterDelay:在适当延迟后更改为下一种颜色 除非你用OpenGL完成整个屏幕,否则那样

看到那丑陋的黄色在哪里了吗?我需要改变颜色。。。很多有点像一个三倍的kalidascope的东西,但始终只有一种颜色。很像默认的OSX频谱屏幕保护程序。我该怎么做呢?Objective-C看起来像一个巨大的CPU猪。我可以把OpenGL的背景放进这样的东西里吗?我希望能朝正确的方向推进


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


除非你用OpenGL完成整个屏幕,否则那样的速度不会更快。瓶颈很可能是在背景上合成“球”图像和文本,而不是创建纯色背景。配置它,而不是猜测或依赖我的猜测。

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


除非你用OpenGL完成整个屏幕,否则那样的速度不会更快。瓶颈很可能是在背景上合成“球”图像和文本,而不是创建纯色背景。将其轮廓化,而不是猜测或依赖于我的猜测。

让我们假设前景材质具有透明度。然后我们可以在它后面有一个占据整个屏幕的立体视图,我们可以通过前景材质看到该视图的颜色。然后,更改背景视图的颜色就足够了。如果希望在背景色中设置此更改的动画,请将视图层的背景色更改为CGColor;效果将自动设置动画。您需要链接到QuartzCore.framework并导入
,然后您可以说:

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

可以修改此彩色动画;例如,可以通过设置CATTransaction的动画持续时间(请参见CATTransaction类方法)来指定其持续时间(颜色更改的速度或速度)。我可以想象你会有一个重复的NSTimer,每次定时器启动时,你都会做另一个颜色变化动画。

让我们假设前景材质具有透明度。然后我们可以在它后面有一个占据整个屏幕的立体视图,我们可以通过前景材质看到该视图的颜色。然后,更改背景视图的颜色就足够了。如果希望在背景色中设置此更改的动画,请将视图层的背景色更改为CGColor;效果将自动设置动画。您需要链接到QuartzCore.framework并导入
,然后您可以说:

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

可以修改此彩色动画;例如,可以通过设置CATTransaction的动画持续时间(请参见CATTransaction类方法)来指定其持续时间(颜色更改的速度或速度)。我可以想象你会有一个重复的NSTimer,每次定时器启动时,你都会做另一个颜色更改动画。

你可以安排一个函数调用半秒钟,然后像这样更改那里的背景颜色

[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;

你可以安排一个函数调用半秒钟,然后像这样改变背景颜色

[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;

Magic-8球的版权归美泰所有。我一年多前提交的第一个应用就是这个应用。它被拒绝是因为版权问题。@Moshe Fortune Ball,另一方面……呃,也许吧。我想这是概念,不是名字。听着,我祝你一切顺利,但我不认为苹果会批准。Magic-8 ball版权归美泰所有。我一年多前提交的第一个应用就是这个应用。它被拒绝是因为版权问题。@Moshe Fortune Ball,另一方面……呃,也许吧。我想这是概念,不是名字。听着,我祝你一切顺利,但我认为苹果不会批准。