「閉じるボタン」ビューを含むUIScrollViewから継承するカスタムクラスがあります。 "閉じるボタン"を押すと、アニメーションスケールの変換を行い、その後、SuperViewから全体のビューを削除したいと思います。swift UIView.animateはアニメーションをスキップします
class AddReview : UIScrollView {
override init(frame: CGRect){
super.init(frame: frame)
let closeButton = CloseButtonView()
closeButton.frame = CGRect(x:frame.maxX - 50, y:0, width: 50, height: 50)
self.addSubview(closeButton)
let tapCloseGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(closeButtonPressed))
closeButton.isUserInteractionEnabled = true
closeButton.addGestureRecognizer(tapCloseGestureRecognizer)
}
func closeButtonPressed(){
UIView.animate(withDuration: 0.3){
self.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
}
UIView.animate(withDuration: 0.2, delay: 0.4, animations: {() -> Void in
self.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
}, completion: { (finished: Bool) -> Void in
if (finished)
{
//self.removeFromSuperview()
}
})
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
私の問題は、アニメーションが発生しないことです。ビューが直ちに削除されるか、またはremoveFromSuperview
がコメントアウトされている場合、アニメーションなしでそのサイズが10%にリサイズされます。
私はlayoutIfNeeded
、メインキューのディスパッチなどを試しましたが、他にもたくさんありましたが、nothigは動作していました。
さらに、私はときどき動作していることに気付きましたが、ほとんどの場合動作しません。
何が問題なのですか? アドバイスをいただきありがとうございます:)
二 '最初の1が完了するまでUIView.animate'は待ちません。 2番目のものは最初のものが終了する前に開始されます。私は推測しています.2番目のものは最初のものを上書きし、ビューを削除します。次々に実行したい場合は、連鎖する必要があります。 – Magnas