Ios 在Swift中平滑扩展UIView动画

Ios 在Swift中平滑扩展UIView动画,ios,swift,animation,uiview,animatewithduration,Ios,Swift,Animation,Uiview,Animatewithduration,目标: 如何设置要展开以填充整个屏幕的ui视图的动画。ui视图在设置动画时需要以平滑、均匀和平衡的方式展开 我在屏幕上放置了一个红方块,开始很小,然后展开以适应屏幕。(图1。) 问题: 在Swift 2和Swift 3中,使用animateWithDuration,如何 为红方块ui视图以平衡、均匀的方式展开的视图设置动画 全方位的方式填满整个屏幕 UIView.animateWithDuration(1.0, delay: 0, options: nil, animations: {

目标:

如何设置要展开以填充整个屏幕的
ui视图
的动画。
ui视图
在设置动画时需要以平滑、均匀和平衡的方式展开

我在屏幕上放置了一个红方块,开始很小,然后展开以适应屏幕。(图1。)

问题:

在Swift 2和Swift 3中,使用
animateWithDuration
,如何 为红方块
ui视图
以平衡、均匀的方式展开的视图设置动画 全方位的方式填满整个屏幕

UIView.animateWithDuration(1.0, delay: 0, options: nil, animations: {

    ?????

}, completion: nil)
图1:


你可以试试这个,我将持续时间设置为5秒,但你知道了

let viewWidth = view.frame.width
let viewHeight = view.frame.height
UIView.animate(withDuration: 5) { 
    subview.frame = CGRect(x: 0, y: 0, width: viewWidth, height: viewHeight)
}

看起来你需要玩音阶

class ViewController: UIViewController {

var subview:UIView!

@IBOutlet weak var animateButton:UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    subview = UIView()
    subview.backgroundColor = .red
    subview.frame = CGRect(x: 60, y: 200, width: 50, height: 50)
    self.view.addSubview(subview)

    self.view.bringSubview(toFront: animateButton)
}

@IBAction func animateButtonPressed(sender:UIButton) {
    if(sender.tag == 0) {

        let screenCenter = CGPoint(x:UIScreen.main.bounds.midX, y: UIScreen.main.bounds.midY)
        let subviewCenter = self.view.convert(self.subview.center, to: self.view)
        let offset = UIOffset(horizontal: screenCenter.x-subviewCenter.x, vertical: screenCenter.y-subviewCenter.y)

        let widthScale = UIScreen.main.bounds.size.width/subview.frame.size.width
        let heightScale = UIScreen.main.bounds.size.height/subview.frame.size.height
        UIView.animate(withDuration: 1.0, animations: {
            let scaleTransform = CGAffineTransform(scaleX: widthScale, y: heightScale)
            let translateTransform = CGAffineTransform(translationX: offset.horizontal, y: offset.vertical)
            self.subview.transform = scaleTransform.concatenating(translateTransform)
        }, completion: { (finished) in
            sender.tag = 1;
        })

    } else {
        UIView.animate(withDuration: 1.0, animations: {
            self.subview.transform = CGAffineTransform.identity
        }, completion: { (finished) in
            sender.tag = 0;
        })
    }
}
}

谢谢你的建议。这很简单。非常感谢。
class ViewController: UIViewController {

var subview:UIView!

@IBOutlet weak var animateButton:UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    subview = UIView()
    subview.backgroundColor = .red
    subview.frame = CGRect(x: 60, y: 200, width: 50, height: 50)
    self.view.addSubview(subview)

    self.view.bringSubview(toFront: animateButton)
}

@IBAction func animateButtonPressed(sender:UIButton) {
    if(sender.tag == 0) {

        let screenCenter = CGPoint(x:UIScreen.main.bounds.midX, y: UIScreen.main.bounds.midY)
        let subviewCenter = self.view.convert(self.subview.center, to: self.view)
        let offset = UIOffset(horizontal: screenCenter.x-subviewCenter.x, vertical: screenCenter.y-subviewCenter.y)

        let widthScale = UIScreen.main.bounds.size.width/subview.frame.size.width
        let heightScale = UIScreen.main.bounds.size.height/subview.frame.size.height
        UIView.animate(withDuration: 1.0, animations: {
            let scaleTransform = CGAffineTransform(scaleX: widthScale, y: heightScale)
            let translateTransform = CGAffineTransform(translationX: offset.horizontal, y: offset.vertical)
            self.subview.transform = scaleTransform.concatenating(translateTransform)
        }, completion: { (finished) in
            sender.tag = 1;
        })

    } else {
        UIView.animate(withDuration: 1.0, animations: {
            self.subview.transform = CGAffineTransform.identity
        }, completion: { (finished) in
            sender.tag = 0;
        })
    }
}
}