Вещь не оживляет спину

Я хочу оживить и медленно затемнить фон, когда я поднимаю сборщик. И затем я хочу медленно оживить это, когда я его снимаю. По какой-то причине это работает, когда я открываю pickerView, а не когда хочу его отключить.

Этот код работает:

-(IBAction)chooseCategory:(id)sender{
    [self.chooseCategoryView setHidden:NO];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.4];
    self.categoryPicker.frame = CGRectMake(0, 151, 320, 367);
    self.categoryPickerToolbar.frame = CGRectMake(0, 106, 320, 45);
    self.pickerViewBackground.alpha = 0.6;
    [UIView commitAnimations];
    [self.scrollView setUserInteractionEnabled:NO];
}

Но это не

-(IBAction)hideCategory:(id)sender {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.4];
    self.pickerViewBackground.alpha = 0;
    self.categoryPicker.frame = CGRectMake(0, 545, 320, 367);
    self.categoryPickerToolbar.frame = CGRectMake(0, 500, 320, 367);
    [UIView commitAnimations];
    [self.chooseCategoryView setHidden:YES];
    [self.scrollView setUserInteractionEnabled:YES];
}

Кто-нибудь знает, почему это не так?

1 ответ

Решение

Вы прячете categoryView сразу после commitAnimations, Таким образом, он будет скрыт в самом начале, и вы не сможете увидеть анимацию.

Вы можете использовать "старый способ" с beginAnimations и т. д. и использовать setAnimationDidStopSelector: и скрыть вид там.

Или вы используете современный способ, используя блоки:

[UIView animateWithDuration:0.2
 animations:^{
    // your animations
 }
 completion:^(BOOL finished){ 
    // hide the view
 }];
Другие вопросы по тегам