2
用“无主”
所以我一直都在做一些阅读UIViewPropertyAnimator和我一直在寻找的例子,他们做这样的事情:为什么UIViewPropertyAnimator
animator = UIViewPropertyAnimator(duration: 2.0, curve: .easeInOut, animations: {
[unowned self, redBox] in
redBox.center.x = self.view.frame.width
redBox.transform = CGAffineTransform(rotationAngle: CGFloat.pi).scaledBy(x: 0.001, y: 0.001)
})
我不理解“[无主的自我,redBox]在'它的一部分。任何人都可以解释我们使用它的目的吗?
我知道无主通常用于决定如何确定引用计数,并且它不能设置为零,因为引用将不存在一个没有另一个(作为弱的替代),但我不了解这里的用法,我不理解支架部分。它在我看来是一个im动画项目的数组和它位于的视图?
完整代码如下:
import UIKit
class ViewController: UIViewController {
var animator: UIViewPropertyAnimator!
override func viewDidLoad() {
super.viewDidLoad()
//redBox
let redBox = UIView(frame: CGRect(x: 10, y: 100, width: 100, height: 100))
redBox.translatesAutoresizingMaskIntoConstraints = false// lar oss redigere posisjon og sånn selv, uten at xcode setter posisjon/størrelse i stein.
redBox.backgroundColor = .red
redBox.center.y = view.center.y
view.addSubview(redBox)
animator = UIViewPropertyAnimator(duration: 2.0, curve: .easeInOut, animations: {
[unowned self, redBox] in
redBox.center.x = self.view.frame.width
redBox.transform = CGAffineTransform(rotationAngle: CGFloat.pi).scaledBy(x: 0.001, y: 0.001)
})
// slider
let slider = UISlider()
slider.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(slider)
slider.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
slider.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
slider.addTarget(self, action: #selector(sliderChanged), for: .valueChanged)
}
func sliderChanged(_ sender: UISlider){
animator.fractionComplete = CGFloat(sender.value)
}
}
Okey cool thanks!你是否也知道这部分是什么?:“[unowned self,redBox] in”是否只是某种完成处理程序与我们正在使用的实例数组? –
@LordFresh它不是一个数组,它被称为'捕获列表'。请参阅https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID57 – Sulthan