UIView.backGroundColor является анимируемым, поэтому это может работать
button.backGroundColor = [UIColor blueColor];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
button.backGroundColor = [UIColor whiteColor];
[UIView commitAnimations];