iOS анимация затухания для нескольких объектов - PullRequest
0 голосов
/ 21 августа 2011

У меня есть приложение для iOS, в котором при каждой загрузке представления все объекты в представлении быстро исчезают.

В моем коде у меня есть

- (void)fadeInEverything

, и в этой функции я вызываю пять различных функций, с NSTimer на каждой из них, так что объекты постепенно появляются, как это:

[self fadeInLabel];


[NSTimer scheduledTimerWithTimeInterval:0.2
                                 target:self
                               selector:@selector(fadeInTextField)
                               userInfo:nil
                                repeats:NO];
[NSTimer scheduledTimerWithTimeInterval:0.4
                                 target:self
                               selector:@selector(fadeInButton)
                               userInfo:nil
                                repeats:NO];
[NSTimer scheduledTimerWithTimeInterval:0.6
                                 target:self
                               selector:@selector(fadeInTextView)
                               userInfo:nil
                                repeats:NO];
[NSTimer scheduledTimerWithTimeInterval:0.8
                                 target:self
                               selector:@selector(fadeInFlipsideViewButton)
                               userInfo:nil
                                repeats:NO];

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

- (void)fadeInTextView
{
    [resultView setAlpha:0];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];

    [resultView setAlpha:1];

    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];
}

Мой вопрос заключается в том, сможем ли мы создать одну функцию, которая бы принимала параметр (объект) и постепенно его увеличивала, чтобы мне не пришлось иметь пять почти идентичных функций? Это сэкономило бы мне много места и беспорядка.

1 Ответ

2 голосов
/ 21 августа 2011

Вы можете передать свой объект по ссылке, чтобы выполнить это:

-(void)fadeInView:(UIView **)aView { // the ** indicates that this method is expecting a reference
    // your fading code
    // this works, because all view's (UILabels, UITextFields etc. inherit UIView. 
}

И вызывающий метод может выглядеть так:

-(void)callFader {
    [self fadeInView:&mytextView]; // make sure to put the & before the variable so that it's sent as a reference
    // and more fadeInView calls...    
}
...