2017-01-13 11 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

はい、それは完璧です...私の質問は全体のアニメーション(位置、shadowOffset、サイズ...)の一部にすぎないので、コードを少し変更する必要がありますが、私の問題は影の向きに関するものでした。だから、解決しました!再度ありがとう –

+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

関連する問題