Вещь не оживляет спину
Я хочу оживить и медленно затемнить фон, когда я поднимаю сборщик. И затем я хочу медленно оживить это, когда я его снимаю. По какой-то причине это работает, когда я открываю 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
}];