我的动画代码不起作用。在单击导航栏上的日历图标之前,日历的使用似乎是从顶部开始的,但是在更新为新的Xcode 12之后,该动画无法正常工作。
func show() {
self.backgroundView?.alpha = 0
self.doneBarView?.translatesAutoresizingMaskIntoConstraints = false
self.selectorView?.translatesAutoresizingMaskIntoConstraints = false
self.containerView?.addSubview(self.backgroundView!)
self.containerView?.addSubview(self.selectorView!)
self.containerView?.addSubview(self.doneBarView!)
self.containerView?.setNeedsLayout()
self.containerView?.layoutIfNeeded()
if (self.selectorViewHeightOrNil) != nil {
self.selectorView?.snp.makeConstraints({ (make) in
make.height.equalTo(self.selectorViewHeightOrNil!.floatValue)
})
}
self.containerView?.setNeedsLayout()
self.containerView?.layoutIfNeeded()
self.startOriginY = Float((self.containerView?.frame.size.height)!)
var endOriginY = (self.containerView?.frame.size.height)! - (self.doneBarView?.frame.size.height)! - (self.selectorView?.frame.size.height)!
if (!self.fromBottom!) {
self.startOriginY = -(Float(self.doneBarView!.frame.size.height + self.selectorView!.frame.size.height))
endOriginY = 0
}
self.doneBarView?.snp.makeConstraints({ (make) in
self.doneBarTopConstraint = make.top.equalTo(self.startOriginY!).constraint
})
self.selectorView?.snp.makeConstraints({ (make) in
make.left.right.equalTo(NumiLayoutConstant.zeroConstant)
make.top.equalTo((self.doneBarView?.snp.bottom)!)
})
self.containerView?.setNeedsLayout()
self.containerView?.layoutIfNeeded()
self.doneBarTopConstraint?.update(offset: endOriginY)
self.animating = true
self.selectorView?.alpha = 0.0
UIView.animate(withDuration: 0.5, animations: {
self.backgroundView?.alpha = 0.5
self.selectorView?.alpha = 1.0
self.containerView?.layoutIfNeeded()
}) { (_) in
self.animating = false
}
}
在早期版本上运行正常。