首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么UIView和UIImageView会有不同的动画?

为什么UIView和UIImageView会有不同的动画?
EN

Stack Overflow用户
提问于 2017-02-10 21:09:20
回答 1查看 102关注 0票数 0

我有4个按钮,都使用相同的动画功能

  • imageViewWithoutDelay
  • imageViewWithDelay
  • ViewWithoutDelay
  • ViewWithDelay

我的代码:

代码语言:javascript
复制
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的原始问题相切。

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 21:17:23

不管你怎么切,你所做的都是错误的。您不能同时添加视图并将其全部动画化。您只能动画一个已经在界面中的视图。

这就是为什么如果您添加延迟,它可以用于图像视图:当您动画时,图像视图已经进入界面,界面已经稳定下来。

事实上,它似乎适用于非图像视图,这只是愚蠢的运气。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42168704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档