-1

UIToolbar を表示および非表示にする UIButton を取得しました。

- (IBAction)showHideToolbar:(id)sender{
    if (toolBar.hidden == NO) {
        [UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^(void){toolBar.alpha =0.0f;}completion:^(BOOL finished){
            toolBar.hidden = YES;}];
        NSLog(@"hides");
    }
    else
        if (toolBar.hidden == YES) {
            [UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^(void){toolBar.alpha =0.0f;}completion:^(BOOL finished){
                toolBar.hidden = NO;
            }];
            NSLog(@"show");
        }
}

問題は、ツールバーを非表示にしようとすると、正常に機能することです。しかし、もう一度表示しようとすると、表示されません。何か案は?

4

1 に答える 1

1

ツールバーの表示をアニメーション化するときは、アルファをブロックに設定する必要が1.0fあります。animations

以下は正しいコードです。コメントで変更した行をマークしました。

- (IBAction)showHideToolbar:(id)sender {
    if (toolBar.hidden == NO) {
        [UIView animateWithDuration:0.25f 
                              delay:0.0f 
                            options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction 
                         animations:^(void){ toolBar.alpha = 0.0f; }
                         completion:^(BOOL finished){ toolBar.hidden = YES; }];
        NSLog(@"hides");
}
else
    if (toolBar.hidden == YES) {
        [UIView animateWithDuration:0.25f 
                              delay:0.0f
                            options:UIViewAnimationCurveEaseIn | UIViewAnimationOptionAllowUserInteraction 
                         animations:^(void){ toolBar.alpha = 1.0f; } // Change from 0.0f to 1.0f
                         completion:^(BOOL finished){ toolBar.hidden = NO; }];
        NSLog(@"show");
    }
}
于 2012-05-27T13:50:56.920 に答える