web-dev-qa-db-ja.com

アニメーションのサイズの拡大/縮小imageViewiOS

次のように、CGAffineTransformMakeScaleを使用してカスタムボタンをアニメーション化しようとしています。

if (stateButton == 0) { //The button is gonna appear

    self.selected = YES;

    self.imageView.transform = CGAffineTransformMakeScale(0.01, 0.01);

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        // animate it to the identity transform (100% scale)
        self.imageView.transform = CGAffineTransformIdentity;
    } completion:nil];

}
else if (stateButton ==1) { //The button is gonna disappear


    self.imageView.transform = CGAffineTransformMakeScale(1, 1);

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        // decrease button
        self.imageView.transform = CGAffineTransformMakeScale(.01, .01);
    } completion:^(BOOL finished){

        self.selected = NO;
    }];
}   

ボタンは元のサイズに完全に拡大しますが、理由はわかりませんが、ボタンをクリックして縮小すると、元のサイズよりも100%大きいサイズから元のサイズに縮小します。コードで示したように、元のサイズが小さくなり、0.01のスケールが達成されます。

助けてください!!

19
user1708257

次のコードを使用して、画像ビューの拡大縮小サイズをアニメーション化できます。

[UIView animateWithDuration:2.0 animations:^{
    self.imageView.transform = CGAffineTransformMakeScale(0.5, 0.5);
} 
completion:^(BOOL finished){
    [UIView animateWithDuration:2.0 animations:^{
        self.imageView.transform = CGAffineTransformMakeScale(1, 1);    
    }];
}];

これにより、最初はイメージビューのサイズが小さくなり、アニメーションが終了すると、アニメーションで元のサイズに戻ります。

31
Geekoder

Swift 3バージョン

UIView.animate(withDuration: 2.0, animations: {() -> Void in
    self.imageView?.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
}, completion: {(_ finished: Bool) -> Void in
    UIView.animate(withDuration: 2.0, animations: {() -> Void in
        self.imageView?.transform = CGAffineTransform(scaleX: 1, y: 1)
    })
})
15
Oscar