There might be a way to do this with Core Animation, but it is not necessary. You are not animating the highlighted property, you are just switching it on and off.
I created a simple view-based iPhone application to do this with timers. Here is the code from the view controller:
SimonTestViewController.h:
#import <UIKit/UIKit.h>
@interface SimonTestViewController : UIViewController {
IBOutlet UIButton *redButton;
IBOutlet UIButton *blueButton;
IBOutlet UIButton *greenButton;
IBOutlet UIButton *yellowButton;
}
- (void)highlightButton:(UIButton*)button Delay:(double)delay;
- (void)highlightOn:(NSTimer*)timer;
- (void)highlightOff:(NSTimer*)timer;
@end
SimonTestViewController.m:
#import "SimonTestViewController.h"
@implementation SimonTestViewController
const double HIGHLIGHT_SECONDS = 0.5; // 500 ms
const double NEXT_SECONDS = 0.6; // 600 ms
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self highlightButton:redButton Delay:0.0];
[self highlightButton:blueButton Delay:NEXT_SECONDS];
[self highlightButton:greenButton Delay:NEXT_SECONDS * 2];
[self highlightButton:blueButton Delay:NEXT_SECONDS * 3];
[self highlightButton:yellowButton Delay:NEXT_SECONDS * 4];
[self highlightButton:redButton Delay:NEXT_SECONDS * 5];
}
- (void)highlightButton:(UIButton*)button Delay:(double)delay {
[NSTimer scheduledTimerWithTimeInterval:delay target:self selector:@selector(highlightOn:) userInfo:button repeats:NO];
}
- (void)highlightOn:(NSTimer*)timer {
UIButton *button = (UIButton*)[timer userInfo];
button.highlighted = YES;
[NSTimer scheduledTimerWithTimeInterval:HIGHLIGHT_SECONDS target:self selector:@selector(highlightOff:) userInfo:button repeats:NO];
}
- (void)highlightOff:(NSTimer*)timer {
UIButton *button = (UIButton*)[timer userInfo];
button.highlighted = NO;
}