1
我正在嘗試在Z軸上翻譯CALayer,以便讓用戶更接近屏幕的感覺。但我無法讓它工作。這裏是我的代碼:如何在Z軸上翻譯和動畫CALayer?
func createCircle(size : CGFloat, color : UIColor) {
let layer = CALayer();
let parentLayer = self.visualView.layer;
// layer testing properties
layer.backgroundColor = color.CGColor;
layer.cornerRadius = size/2.0;
layer.borderWidth = 2.0;
layer.frame = CGRectMake(CGFloat(arc4random() % uint(parentLayer.frame.width)), CGFloat(arc4random() % uint(parentLayer.frame.height)), size, size);
// transform properties
let identity = CATransform3DIdentity;
// have tried both -50 and +50 for the Z-Axis and got nothing.
layer.transform = CATransform3DTranslate(identity, 0, 0, 50);
// animation
let animationGroup = self.createAnimationForLayer(layer);
layer.addAnimation(animationGroup, forKey: nil);
parentLayer.addSublayer(layer);
}
func createAnimationForLayer(layer : CALayer) -> CAAnimationGroup {
let transformChange = CABasicAnimation(keyPath: "transform");
transformChange.fromValue = NSValue(CATransform3D: layer.transform);
transformChange.toValue = NSValue(CATransform3D: CATransform3DIdentity);
let animationGroup = CAAnimationGroup();
animationGroup.animations = [transformChange];
animationGroup.duration = 1.0;
animationGroup.delegate = self;
animationGroup.setValue(layer, forKey: "animationLayer");
animationGroup.fillMode = kCAFillModeForwards;
return animationGroup;
}
翻譯根本沒有發生。該對象不會移動。我想也許問題出在翻譯本身,但如果我給X或Y的價值,對象會移動。我不能在CALayer中使用Z軸嗎?
的你似乎沒有任何的角度,所以你不會看到任何變化,當沿z層移動-axis –
我發現CALayer將自己投射到Z = 0(我不知道這句話在技術上是否正確,並希望它有道理)。所以,我發現了CATransformLayer。但是,我仍然不知道如何製作動畫。我如何設定一個觀點? – Gasim