iOS 10以降、レイアウトの変更にアニメーションが適用されています(layoutIfNeeded()
)がアニメーション化されていません。以下は、iOS 9以降でうまく動作するUIView拡張機能です。iOS 10のアニメーションバグ
func slideIn(from edgeConstraint: NSLayoutConstraint, withDuration duration: Double = 0.25, finishedAnimating: (() -> Void)? = nil) {
dispatch_async(dispatch_get_main_queue()) {
edgeConstraint.constant = 0
UIView.animateWithDuration(duration,
delay: 0.0,
options: .BeginFromCurrentState,
animations: { self.layoutIfNeeded() },
completion: { didComplete in
finishedAnimating?()
})
}
}
func slideOut(from edgeConstraint: NSLayoutConstraint, withDuration duration: Double = 0.25, finishedAnimating: (() -> Void)? = nil) {
dispatch_async(dispatch_get_main_queue()) {
edgeConstraint.constant = -self.frame.height
UIView.animateWithDuration(duration,
delay: 0.0,
options: .BeginFromCurrentState,
animations: { self.layoutIfNeeded() },
completion: { didComplete in
finishedAnimating?()
})
}
}
誰もがアニメーション化していない理由を知っていますか?
view.superview?.layoutIfNeeded()
のようにコールする必要があります本当のデバイス? –@DanLevyはいiPhone 6S iOS 10.0.1 – SeanRobinson159
「正しく動作しない」とはどういう意味ですか? – Aaron