Анимированный фон в iOS - PullRequest
       1

Анимированный фон в iOS

2 голосов
/ 05 января 2012

Я хочу анимировать свой фон после загрузки представления в моем приложении iOS. Это работает со сплошными цветами, но я не могу позволить этому работать с использованием фоновых изображений. Это мой код:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [UIView animateWithDuration:5.0 animations:^{
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
    }];

    [UIView commitAnimations];
}

Кто-нибудь знает правильный способ сделать это?

Спасибо

Ответы [ 3 ]

16 голосов
/ 05 января 2012

Вы анимируете такие вещи:

view.backgroundColor = INITIAL COLOR
[UIView animateWithDuration:5.0 animations:^{
    view.backgroundColor = FINAL COLOR
}];

Метод animate анимирует изменение текущего состояния на то, что вы настроили в блоке анимации.Блок анимации - это не список шагов.

Поэтому я думаю, что вам нужно следующее:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
[UIView animateWithDuration:5.0 animations:^{
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
}];

Кроме того, НЕ вызывайте commitAnimations после этого, это только если вы 'используется старый стиль beginAnimations.Прочитайте документацию, а не просто вызывайте методы, чтобы увидеть, работают ли они.

3 голосов
/ 05 января 2012

Не все свойства могут быть анимированы, как это. Весьма вероятно, что фоновое изображение является одним из них. То, что вы можете сделать, это иметь второй вид сверху с новым изображением и анимировать его альфа от 0 до 1.

0 голосов
/ 05 января 2012

Ты это:

[UIView animateWithDuration:5.0 animations:^{
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
    } completion:^(BOOL finished)
    {
        self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_dark.png"]];
    }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...