我有4个按钮,都使用相同的动画功能
我的代码:
import UIKit
class ViewController: UIViewController {
@IBAction func imageViewithoutDelay(_ sender: AnyObject) {
let circleImage = UIImageView()
// kindly add your own image.
circleImage.image = UIImage(named: "empty")
animate(inputView: circleImage, delay: false)
}
@IBAction func imageViewWithDelay(_ sender: UIButton) {
let circleImage = UIImageView()
circleImage.image = UIImage(named: "empty")
animate(inputView: circleImage, delay: true)
}
func animate(inputView : UIView, delay: Bool){
inputView.layer.cornerRadius = inputView.frame.size.width / 2
inputView.clipsToBounds = true
inputView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(inputView)
let screenSize = UIScreen.main.bounds
let screenHeight = screenSize.height * 0.10
inputView.center.y = screenHeight
view.setNeedsLayout()
view.setNeedsDisplay()
if delay == true{
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
UIView.animate(withDuration: 2.5, animations: {
inputView.alpha = 0.0
let screenSize = UIScreen.main.bounds
let screenHeight = screenSize.height * 0.10
inputView.center.y -= screenHeight
})
})} else{
UIView.animate(withDuration: 2.5, animations: {
inputView.alpha = 0.0
let screenSize = UIScreen.main.bounds
let screenHeight = screenSize.height * 0.10
inputView.center.y -= screenHeight
})
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
}让我感到好笑的是UIview & UIImageView的不同行为。
如果我使用延迟,UIImageView实例只会按预期(从原点向上)动画。但是,在不使用延迟块的情况下,UIImageView实例首先会下降,然后动画会上升到原点)。
UIView没有显示不同的行为。它是从它的起源而来并上升的。

这是个虫子吗?
这个问题与this的原始问题相切。
发布于 2017-02-10 21:17:23
不管你怎么切,你所做的都是错误的。您不能同时添加视图并将其全部动画化。您只能动画一个已经在界面中的视图。
这就是为什么如果您添加延迟,它可以用于图像视图:当您动画时,图像视图已经进入界面,界面已经稳定下来。
事实上,它似乎适用于非图像视图,这只是愚蠢的运气。
https://stackoverflow.com/questions/42168704
复制相似问题