2017-01-13 5 views
1

CAKeyframeAnimation을 사용하여 UIImageView를 회전하고 싶습니다. 문제는 그림자가 오브젝트와 함께 회전하여 비 실제 효과를내는 것입니다 ... The shadow must remain under the image, not rotating around itCAKeyframeAnimation 회전은 실제 그림자를 그리지 않습니다.

이것은 내 코드입니다. 매우 간단 :

let imagen:UIImageView = UIImageView(image:UIImage(named: "material6.png")) 

    self.view.addSubview(imagen) 

    imagen.center = CGPoint(x: 100, y: 100) 

    imagen.layer.shadowOpacity = 0.75 
    imagen.layer.shadowOffset = CGSize(width: 0, height: 15) 

    //Animación del ángulo 
    let animacionAngulo = CAKeyframeAnimation(keyPath: "transform.rotation.z") 

    var valoresAngulo = [NSNumber]() 
    let degrees:Float = 360 
    let radians = degrees * Float.pi/Float(180.0) 

    valoresAngulo.append(NSNumber(value: 0)) 
    valoresAngulo.append(NSNumber(value: radians)) 

    animacionAngulo.values = valoresAngulo 

    //Permite añadir varias animaciones y gestionarlas a la vez 
    animacionAngulo.repeatCount = Float.infinity 
    animacionAngulo.duration = 2.0 

    imagen.layer.add(animacionAngulo, forKey: nil) 

모든 솔루션?

+0

원하는 답변을 확인한 후 알려주십시오. – KrishnaCA

+0

네, 완벽 해요 ... 내 질문은 전체 애니메이션 (position, shadowOffset, size ...)의 일부일 뿐이므로 코드를 조금 변경해야하지만 내 문제는 그림자 방향에 관한 문제였습니다. 그래서, 해결되었습니다! 다시 한 번 감사합니다 –

+0

당신은 환영합니다 :) – KrishnaCA

답변

0

그림자가 이미지와 함께 회전하는 경우. UIImageView 아래에 UIImageView와 동일한 크기 인 UIView을 추가하여 문제를 해결할 수 있습니다. 그림자를 UIImageView 대신 UIView에 추가하면이 경우 원하는 효과를 얻을 수 있습니다.

let imagen:UIImageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) 
imagen.center = CGPoint(x: 100, y: 100) 
imagen.backgroundColor = UIColor.red 

let belowView: UIView = UIView(frame: imagen.frame) 
belowView.backgroundColor = UIColor.white 
belowView.layer.shadowOpacity = 0.75 
belowView.layer.shadowOffset = CGSize(width: 0, height: 15) 
self.view.addSubview(belowView) 

self.view.addSubview(imagen) 

    //Animación del ángulo 
let animacionAngulo = CAKeyframeAnimation(keyPath: "transform.rotation.z") 

var valoresAngulo = [NSNumber]() 
let degrees:Float = 360 
let radians = degrees * Float.pi/Float(180.0) 

valoresAngulo.append(NSNumber(value: 0)) 
valoresAngulo.append(NSNumber(value: radians)) 

animacionAngulo.values = valoresAngulo 

    //Permite añadir varias animaciones y gestionarlas a la vez 
animacionAngulo.repeatCount = Float.infinity 
animacionAngulo.duration = 2.0 

imagen.layer.add(animacionAngulo, forKey: nil) 
+0

대단히 감사합니다! 나는 이것을 며칠 동안 싸웠다 ... 해결책을 찾고 그것을 찾지 못했다 ... 나의 주를 구한다! ;) –

+0

당신은 환영합니다 :) – KrishnaCA