1

ボタンの画像がボタンの長方形にスライドイン/スライドアウトするエフェクトを作成したいのですが、最終的なエフェクトは次のようになります。

スライドボタン

つまり、最初のものは「移行」を開始したばかりで、2番目は途中で、最後のものは完全にスライドアウトされます。

これを実現するために、ボタンのclipsToBoundsプロパティをYESに設定してから、ボタンのimageViewをアニメーション化します。

- (void)setupButtons
{
self.buttonsYOffset = -60.0;
self.buttonsOriginalY = self.twitterButton.imageView.center.y;

self.twitterButton.clipsToBounds = YES;
self.twitterButton.imageView.center = CGPointMake(self.twitterButton.imageView.center.x, self.buttonsOriginalY + self.buttonsYOffset);
}

と:

- (void)show
{
[UIView animateWithDuration:0.2 delay:0
    options:UIViewAnimationOptionCurveEaseOut
    animations:^ {
        self.twitterButton.imageView.alpha = 1.0;
        self.twitterButton.imageView.center = CGPointMake(self.twitterButton.imageView.center.x, self.buttonsOriginalY);
    }
    completion:^(BOOL success) {
    }
 ];
}

- (void)hide
{
[UIView animateWithDuration:0.2 delay:0.0
    options:UIViewAnimationOptionCurveEaseOut
     animations:^ {
         self.twitterButton.imageView.center = CGPointMake(self.twitterButton.imageView.center.x, self.buttonsOriginalY + self.buttonsYOffset);
     }
     completion:^(BOOL success) {

     }
 ];
}

ボタンが「非アクティブ」状態(タップされていない)のときにこのコードを起動すると、すべてが正常に機能します。スライドインとスライドアウトは正常に行われます。

この問題は、ボタンをタップした直後にhide()メソッドを起動すると開始します-スライドしません-ほんの一瞬ハイライトし、画像はしばらく「開いた」位置に留まり、その後「閉じた」位置にスキップしますすぐに。

ボタンのimageViewは、ボタンがデフォルトの非アクティブ状態にある場合にのみ使用されるようです。簡単に直せますか?

4

0 に答える 0