【问题标题】:Changing Background Color of UIView更改 UIView 的背景颜色
【发布时间】:2011-06-12 02:07:18
【问题描述】:

看到那个难看的黄色在哪里了吗?我需要改变那种颜色……很多。有点像一个迷幻的 kalidascope 东西,但始终只有一种颜色。很像默认的 OS X Spectrum 屏幕保护程序。我该怎么做呢? Objective-C 看起来像一个巨大的 CPU 猪。我可以将OpenGL背景放入这样的东西吗?希望朝着正确的方向前进。

【问题讨论】:

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

标签: objective-c opengl-es background


【解决方案1】:

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

[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】:

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

    除非您使用 OpenGL 处理整个屏幕,否则这种方式不太可能更快。瓶颈很可能是在背景上合成“球”图像和文本,而不是创建纯色背景。剖析它,而不是猜测或依赖我的猜测。

    【讨论】:

      【解决方案3】:

      假设前景材质具有透明度。然后我们可以在它后面有一个占据整个屏幕的实体视图,我们可以通过前景材料看到该视图的颜色。然后改变该背景视图的颜色就足够了。如果您希望对背景颜色的这种变化进行动画处理,请更改视图层的背景颜色(更改为 CGColor);效果将自动动画化。你需要链接到 QuartzCore.framework 并导入 <QuartzCore/QuartzCore.h>,然后你就可以说:

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-22
        • 2014-09-25
        • 1970-01-01
        • 2017-05-30
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多