0

ピッカーを起動したときに背景をアニメーション化してゆっくりと暗くしたい。そして、それを下げるときにゆっくりとアニメートしたいと思います。何らかの理由で、ピッカービューを立ち上げたいときではなく、ピッカービューを立ち上げたときにのみ機能します。

このコードは機能します:

-(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];
}

なぜそうしないのか誰にも分かりますか?

4

1 に答える 1

0

categoryViewの直後を隠していcommitAnimationsます。そのため、最初は非表示になり、アニメーションを見ることができなくなります。

「古い方法」beginAnimationsなどを使用し、 を使用してsetAnimationDidStopSelector:そこでビューを非表示にすることができます。

または、ブロックを使用して最新の方法を使用します。

[UIView animateWithDuration:0.2
 animations:^{
    // your animations
 }
 completion:^(BOOL finished){ 
    // hide the view
 }];
于 2013-02-14T12:39:32.090 に答える