Изменение цвета фона UIView - PullRequest
1 голос
/ 12 июня 2011

Видишь, где этот уродливый желтый? Мне нужно, чтобы этот цвет менялся ... очень. Вроде как триповая штука калидаскопа, но с одним цветом все время. Очень похоже на заставку OS X Spectrum по умолчанию. Как мне это сделать? Objective-C может показаться огромной загрузкой процессора. Могу ли я поместить фон OpenGL в нечто подобное? Хотел бы получить толчок в правильном направлении.

enter image description here

Ответы [ 3 ]

3 голосов
/ 12 июня 2011

Ну, вы можете запланировать вызов функции примерно на полсекунды, а затем изменить цвет фона там следующим образом:

[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 голосов
/ 12 июня 2011

Сначала попробуйте самое простое: просто установите свойство backgroundColor для этого вида, а затем используйте performSelector:withObject:afterDelay: для перехода к следующему цвету после подходящей задержки.

Если вы не выполняете весь экранс OpenGL вряд ли так будет быстрее.Узким местом, скорее всего, является наложение фона и текста «шарика» поверх фона, а не создание сплошного фона.Профилируйте его, вместо того, чтобы угадывать или полагаться на мои догадки.

2 голосов
/ 12 июня 2011

Давайте предположим, что материал переднего плана имеет прозрачность.Тогда у нас может быть сплошное представление, занимающее весь экран, и мы видим цвет этого вида через материал переднего плана.Затем достаточно изменить цвет этого фона.Если вы хотите анимировать это изменение цвета фона, измените backgroundColor слоя представления (на CGColor);эффект будет автоматически анимирован.Вам нужно будет связаться с QuartzCore.framework и импортировать <QuartzCore/QuartzCore.h>, и тогда вы сможете сказать:

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

Вы можете изменить эту цветную анимацию;например, вы можете указать его продолжительность (насколько быстро или медленно изменяется цвет), установив продолжительность анимации для CATransaction (см. методы класса CATransaction).Я могу представить, что у вас будет повторяющийся NSTimer, где каждый раз, когда срабатывает таймер, вы делаете еще одну анимацию смены цвета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...