У меня есть некоторая анимация, прикрепленная к пользовательской кнопке в контроллере вида:
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *natSenButton = [UIButton buttonWithType:UIButtonTypeCustom];
natSenButton.frame = CGRectMake(114, 4, 93, 30);
[natSenButton setTitle:@"Comment" forState:UIControlStateNormal];
[natSenButton setTitleColor: [UIColor colorWithRed: 255 / 255.0 green:0 blue: 0 alpha:1.0] forState: UIControlStateNormal];
// text: color with dark red
[natSenButton addTarget:self action:@selector(displayNativeSentence) forControlEvents:UIControlEventTouchUpInside];
natSenButton.tag = 333;
[[natSenButton layer] setCornerRadius:8.0f];
[[natSenButton layer] setMasksToBounds:YES];
natSenButton.layer.borderWidth = 2.0;
natSenButton.layer.borderColor =
[UIColor colorWithRed: 25 / 255.0 green:255/ 255.0 blue: 255/255.0 alpha:1.0].CGColor;
// above is light blue color
natSenButton.layer.backgroundColor = [UIColor colorWithRed: 255 / 255.0 green:255/ 255.0 blue: 255/255.0 alpha:1.0].CGColor;
// background is white
// natSenButton.center = self.center;
natSenButton.titleLabel.font = [UIFont systemFontOfSize:15.0];
//Create an animation with pulsating effect
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"];
theAnimation.duration=1.0;
theAnimation.repeatCount= 999;
theAnimation.autoreverses=YES;
theAnimation.fromValue=[NSNumber numberWithFloat:1.0];
theAnimation.toValue=[NSNumber numberWithFloat:0.2];
[natSenButton.layer addAnimation:theAnimation
forKey:@"animateOpacity"];
[self.view addSubview:natSenButton];}
Однако иногда мне нужно скрыть эту кнопку:
for( UIView *view in self.view.subviews ) {
if( [view isKindOfClass:[UIButton class]] ) {
if( view.tag == 333 )
[view setHidden:YES];
}
}
... и затемчерез некоторое время мне нужно снова включить его:
for( UIView *view in self.view.subviews ) {
if( [view isKindOfClass:[UIButton class]] ) {
if( view.tag == 333 )
[view setHidden:NO];
[view setNeedsDisplay];
}
}
Все это работает нормально, кроме случаев, когда я нажимаю кнопку «Назад» и возвращаюсь к родительскому контроллеру представления, а затем возвращаюсь к этому viewController.В этих случаях мой "view setNeedsDisplay" больше не работает, а моя анимация не включена.
Вот где я создаю свой элемент задней панели в родительском контроллере представления:
- (id)init {
[super initWithStyle:UITableViewStylePlain];
[[self navigationItem] setTitle:@"Wordplay"];
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"<";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
return self;
}
.... и вот где родительский контроллер представления перемещает обратно в контроллер проблемного представления, которыйпотерял свою анимацию:
[[self navigationController] pushViewController:sentenceViewController animated:YES];
Может кто-нибудь сказать мне, почему я теряю свою анимацию и как я могу включить ее снова?Благодаря.