0

アニメーションで非表示/非表示にする必要があるカスタム ビューがあります。UIView アニメーションが隠しプロパティで機能しない。

そのため、アニメーションでアルファを変更する setHidden をオーバーライドしました。

動作しますが、非表示にしている間は、表示される速度よりも常に遅いように見えます。持続時間として 0.3 を与えていますが、それでも消えるのはゆっくりです...そして現れると速いです!

マイコード

/* Will modify alpha instead of hidden var */
-(void)setHidden:(BOOL)hidden
{

    [UIView animateWithDuration:0.5 animations:^{
        self.alpha = hidden?0.0:1.0;
    }];


}

/* need to override this so that, .hidden returns value based on alpha as we are not modifying the hidden ivar */
-(BOOL)isHidden
{

    return (self.alpha == 0.0);
}
4

1 に答える 1

0

わかりましたので、代わりにこれを使用しました。

/* Will modify alpha instead of hidden var */
-(void)setHidden:(BOOL)hidden
{
    CATransition *animation = [CATransition animation];
    animation.type = kCATransitionFade;
    animation.duration = 0.2;
    [self.layer addAnimation:animation forKey:nil];

    [super setHidden:hidden];
}
于 2013-06-12T12:41:24.853 に答える