2014-06-10 9 views
11

sto cercando di animare i limiti di un'UIButton utilizzando Facebook pop POPSpringAnimation, ma non riesco a trovare quello che dovrei usare in rapido in sostituzione di NSValue.valueWithCGRectSwift NSValue.valueWithCGRect

Questo è quello che ho' m cercando di fare:

@IBAction func buttonTapped(sender : UIButton) { 

    var springAnimation = POPSpringAnimation() 
    springAnimation.property = POPAnimatableProperty.propertyWithName(kPOPLayerBounds) as POPAnimatableProperty 
    springAnimation.springBounciness = 12.0 
    springAnimation.springSpeed = 10.0 

    springAnimation.toValue = NSValue.valueWithCGRect(newBounds) 

    shutterButton.pop_addAnimation(springAnimation, forKey: "size") 

} 

risposta

20

Questo compilerà:

let rect = CGRect(x: 0,y: 0,width: 1,height: 1) 
let val = NSValue(CGRect: rect) 

Questa è "la sintassi di inizializzazione"

+0

Dov'è questo documentato? Non ottengo risultati per questo con completamento automatico o – rounak

+0

Grazie, ha funzionato benissimo. –

+1

@rounak: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-XID_27 – newacct

1

Ecco la mia soluzione:

func scaleView(view: UIView, magnitude: CGFloat) { 
    var springAnimation = POPSpringAnimation() 
    springAnimation.property = POPAnimatableProperty.propertyWithName(kPOPViewScaleXY) as POPAnimatableProperty 
    springAnimation.springBounciness = 12.0 
    springAnimation.springSpeed = 10.0 

    let newRect = CGRect(x: (view.bounds.origin.x + (view.bounds.size.width/2.0)) - ((view.bounds.size.width/2.0) * magnitude), y: (view.bounds.origin.y + (view.bounds.size.height/2.0)) - ((view.bounds.size.height/2.0) * magnitude), width: view.bounds.size.width * magnitude, height: view.bounds.size.height * magnitude) 

    springAnimation.fromValue = NSValue(CGRect: view.bounds) 
    springAnimation.toValue = NSValue(CGRect: newRect) 
    view.pop_addAnimation(springAnimation, forKey: "size") 
} 
0

In Swift:

let hover = CABasicAnimation(keyPath: "position") 
    hover.additive = true 
    hover.fromValue = NSValue(CGPoint: CGPointZero) 
    hover.toValue = NSValue(CGPoint: CGPointMake(0.0, -10.0)) 
    hover.autoreverses = true 
    hover.duration = 0.2 
    hover.repeatCount = Float(Int.max) 
    button.layer.addAnimation(hover, forKey: "myHoverAnimation")