Исчезает мой взгляд действительно странным образом с использованием анимации и таймера. Как я могу улучшить это? - PullRequest
1 голос
/ 06 августа 2009
- (void) hideMenu {
  UIView *currentView = [self view];
  [UIView beginAnimations:nil context: nil];
  [UIView setAnimationDuration: 0.5];
  [currentView setFrame:CGRectMake(0, 480, [currentView bounds].size.width, [currentView bounds].size.height)];
  [UIView commitAnimations];

  self.timer = [NSTimer scheduledTimerWithTimeInterval:(.5)
                        target:self
                        selector:@selector(removeAfterAnimate)
                        userInfo:nil
                        repeats:NO];
}


- (void) removeAfterAnimate {
  [self.view removeFromSuperview];  
  NSLog(@"removed the view");
}

Ответы [ 2 ]

2 голосов
/ 06 августа 2009

Было бы полезно лучше объяснить «действительно странный путь» здесь. Похоже, ваша цель состоит в том, чтобы переместить currentView в определенное место и затем ваш обзор исчез? Вы хотели использовать self.view или currentView в обоих случаях?

Не используйте NSTimer здесь. NSTimers не подходят для анимации. Используйте +setAnimationDidStopSelector:. Примерно так:

- (void) hideMenu {
  UIView *currentView = [self view];
  [UIView beginAnimations:@"hideMenu" context:currentView];
  [UIView setAnimationDuration: 0.5];
  [UIView setAnimationDelegate:self];
  [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
  [currentView setFrame:CGRectMake(0, 480, [currentView bounds].size.width, [currentView bounds].size.height)];
  [UIView commitAnimations];
}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
  [self.view removeFromSuperview];
  NSLog(@"removed the view");
}
0 голосов
/ 06 августа 2009

Разве вы не должны поместить removeFromSuperview в блок анимации? Разве ты не хочешь оживить это вращением или чем-то еще. И сейчас ничего не произойдет, потому что вы не установили

[UIView setAnimationTranstion:(ex. UIViewAnimationTransitonFlipFromRight) forView:(ex. self.view) cache:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...