Во-первых, вы должны действительно подумать о лучшем соглашении об именах.Вызов UILabel feed не очень поможет в будущем, когда вам придется вернуться и посмотреть на свой код.Я бы назвал это feedLabel .Затем, когда вы перебираете свой список каналов, вы можете просто for (NSString *feed in feeds)
, и это будет иметь больше смысла.И так будет feedLabel.text = feed;
.
В любом случае, проблема, которую я вижу с вашим кодом, заключается в том, что вы постоянно устанавливаете альфа в ноль в цикле, но вы никогда не устанавливаете его обратно в единицу.Другими словами, вы не вносите изменения в альфа-значение.Он остается неизменным в каждой итерации.
Так что, возможно, вы могли бы уточнить, что вы пытаетесь сделать.Если вы хотите постепенно менять текст между изменениями в тексте, вам понадобится другая анимация и методология.Вместо цикла, цепочка ваших анимаций так, что, когда ваш didStopSelector, вы устанавливаете текст и начинаете следующий.Что-то вроде:
- (void)performAnimation;
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:2.0f];
feed.alpha=0;
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];
[UIView commitAnimations];
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
feed.alpha = 1.0;
NSString *nextFeed = [self getNextFeed]; // Need to implement getNextFeed
if (nextFeed)
{
// Only continue if there is a next feed.
[feed setText:nextFeed];
[self performAnimation];
}
}