在 Swift 中为对象设置动画?
Posted
技术标签:
【中文标题】在 Swift 中为对象设置动画?【英文标题】:Animate objects in Swift? 【发布时间】:2014-06-08 20:50:57 【问题描述】:在swift中,我正在将一个对象过渡到视图中,我需要它滑入或淡入。如何在我的程序中获得这种类型的动画?
我在没有 IB(接口生成器)的情况下以编程方式制作了所有视图元素
有没有我可以参考的文档?我找不到。
【问题讨论】:
与 Objective C 中的方法相同。 我找不到任何我想要的动画类型。我只是想要一个简单的滑入或淡入。不是 OpenGL 游戏。 查找UIView
的动画方法。它们在 Swift 中的工作方式与在 Obj-C 中的工作方式相同。
对于幻灯片或淡入淡出动画,您需要 CABasicAnimation
或 CAKeyframeAnimation
,您可以在其中通过动画设置 x/y 位置或不透明度。请参阅说明如何在 Objective-C 中执行此操作的文档或其他问题,其中有很多。如果您遇到困难,请使用您尝试执行的操作以及对无效操作的说明更新此问题。
【参考方案1】:
我习惯使用 [UIView animateWithDuration ...],但我发现一开始将块语法切换到 Swift 有点棘手。这是一个快速的惰性代码:
view.alpha = 0.0
UIView.animateWithDuration(0.25, animations:
view.alpha = 1.0
, completion:
(value: Bool) in
println(">>> Animation done.")
)
【讨论】:
你能告诉我如何连续制作动画吗?? 或许可以试试***.com/questions/28644335/…【参考方案2】:或者动画从屏幕左侧出现的位置:
// some variables for the UIView
let width = 200
let height = 100
let yPosition = 10
// create view and position it offscreen to the left
let view = UIView()
// you could have also used the new more verbose Swift way of making a CGRect:
// CGRect(x: xValue, y: yValue, width: widthValue, height: heightValue)
view.frame = CGRectMake(-width, yPosition, width, height)
view.backgroundColor = UIColor.blueColor() // etc...
// animation position over 1.0 second duration
UIView.animateWithDuration(1.0, animations:
view.frame = CGRectMake(0, yPosition, width, height)
)
如果您对 UIView 动画 API 完全陌生,我在这里写了一篇文章,其中涵盖了一系列 swift 动画选项:http://mathewsanders.com/prototyping-ios-iPhone-iPad-animations-in-swift/
【讨论】:
【参考方案3】:斯威夫特 3 & 4 请添加必要的对象,如 tableView
import UIKit
class SecondViewController: UIViewController,UITableViewDelegate,UITableViewDataSource
@IBOutlet var tabl: UITableView!
var name = ["tony","abu"]
override func viewDidLoad()
super.viewDidLoad()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func numberOfSections(in tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return name.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = UITableViewCell()
cell.textLabel?.text = name[indexPath.row]
return cell
override func viewWillAppear(_ animated: Bool)
tabl.center.x = self.view.frame.width/5
UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity:0.45, options: [], animations: (
self.tabl.center.x = self.view.frame.width/3
//self.buttonAction.center.x = self.view.frame.width/2
), completion: nil)
【讨论】:
【参考方案4】:Apples Core 动画在这里看到https://developer.apple.com/library/Mac/DOCUMENTATION/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html 这非常有趣。 youtube吧
【讨论】:
链接已损坏,因此 -1以上是关于在 Swift 中为对象设置动画?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中为 NSLayoutConstraint 设置动画?