當談到Core Animation時,我是一個noobie。我試圖實現簡單的動畫,其中UILabel
從A點移動到B點。我從動畫代碼示例中獲得以下代碼,但無法使其工作。標籤根本不會移動。我究竟做錯了什麼?Swift:核心動畫沒有動畫效果
let frame = self.view.frame
let blueBox = UIView(frame: frame)
blueBox.backgroundColor = UIColor(red: 46/255, green: 83/255, blue: 160/255, alpha: 1.0)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 400))
label.center = CGPoint(x: frame.size.width/2, y: frame.size.height/2)
label.textAlignment = .center
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.layer.position = label.center
var attrsA = [NSFontAttributeName: UIFont(name: "LemonMilk", size: 92), NSForegroundColorAttributeName: UIColor.white]
var a = NSMutableAttributedString(string:"Hello\n", attributes:attrsA)
var attrsB = [NSFontAttributeName: UIFont(name: "LemonMilk", size: 38), NSForegroundColorAttributeName: UIColor.white]
var b = NSAttributedString(string:"World", attributes:attrsB)
a.append(b)
label.attributedText = a
let theAnimation = CABasicAnimation(keyPath: "position");
theAnimation.fromValue = [NSValue(cgPoint: CGPoint(x: screenWidth/2, y: screenHeight/2))]
theAnimation.toValue = [NSValue(cgPoint: CGPoint(x: 100.0, y: 100.0))]
theAnimation.duration = 3.0;
theAnimation.autoreverses = false //true - reverses into the initial value either smoothly or not
theAnimation.repeatCount = 2
blueBox.addSubview(label)
view.addSubview(blueBox)
label.layer.add(theAnimation, forKey: "animatePosition");
這可能是一個更容易讓你只使用'UIView.animate(withDuration:)' – Pierce
@Pierce但那不回答問題 – matt
@matt - 我知道這就是爲什麼我沒有回答這個問題。我只是在評論中提出建議 – Pierce