2015-01-07 18 views
6

Seguo THIS tutorial e il raggiungimento di tale animazione con questo codice:TableViewCell dell'animazione in rapida

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    cell.layer.transform = CATransform3DMakeScale(0.1,0.1,1) 
    UIView.animateWithDuration(0.25, animations: { 
     cell.layer.transform = CATransform3DMakeScale(1,1,1) 
    }) 

} 

Ma io voglio aggiornare qualcosa in questa animazione cellulare come quando lo scorrimento nella tableView la cella è piccola come (0.1,0.1,1) a l'inizio e dopo che scala come (1,1,1) ma voglio applicare come effetto del tipo di bolla come è piccolo all'inizio dopo che arriva alla sua scala originale come (1,1,1) e uno è lo zoom e di nuovo arriva nella sua scala originale come (1,1,1).

per favore guidami come posso realizzare quell'animazione?

EDIT:

Ho provato a farlo ma non è quel tipo di liscio e non esatto quello che voglio.

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    cell.layer.transform = CATransform3DMakeScale(0.1,0.1,1) 
    UIView.animateWithDuration(0.3, animations: { 
     cell.layer.transform = CATransform3DMakeScale(1,1,1) 
    }) 
    UIView.animateWithDuration(1, animations: { 
     cell.layer.transform = CATransform3DMakeScale(2,2,2) 
    }) 
    UIView.animateWithDuration(0.3, animations: { 
     cell.layer.transform = CATransform3DMakeScale(1,1,1) 
    }) 

} 

risposta

16

Ciò di cui hai bisogno è un'animazione rilassante. Per ulteriori informazioni consulta http://easings.net

È possibile effettuare le animazioni parametriche usando questa libreria https://github.com/jjackson26/JMJParametricAnimation/tree/master/JMJParametricAnimationDemo

Per il momento, l'effetto che si sta cercando di fare può essere approssimativamente fatto utilizzando il codice qui sotto. Devi fare l'animazione di ridimensionamento uno dopo l'altro. Il modo in cui hai fatto fa partire tutte le animazioni.
L'aggiunta del codice di animazione successivo nel blocco di completamento viene avviata dopo l'animazione. Puoi modificare ulteriormente i tempi per ottenere l'effetto approssimativo di cui hai bisogno.

cell.layer.transform = CATransform3DMakeScale(0.1,0.1,1) 
    UIView.animateWithDuration(0.3, animations: { 
     cell.layer.transform = CATransform3DMakeScale(1.05,1.05,1) 
     },completion: { finished in 
      UIView.animateWithDuration(0.1, animations: { 
       cell.layer.transform = CATransform3DMakeScale(1,1,1) 
      }) 
    }) 
+0

grazie per l'aiuto fratello. –

+0

ho modificato il codice per renderlo migliore. – rakeshbs

+0

ok grazie ...... –

7

Swift 3 versione funziona come fascino!

cell.layer.transform = CATransform3DMakeScale(0.1, 0.1, 1) 
    UIView.animate(withDuration: 0.3, animations: { 
     cell.layer.transform = CATransform3DMakeScale(1.05, 1.05, 1) 
    },completion: { finished in 
     UIView.animate(withDuration: 0.1, animations: { 
      cell.layer.transform = CATransform3DMakeScale(1, 1, 1) 
     }) 
    }) 
1

Usa questo codice per ottenere cellule spirale animazione nella vostra Tableview

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    //1. Setup the CATransform3D structure 
    var rotation = CATransform3DMakeRotation(CGFloat((90.0 * M_PI)/180), 0.0, 0.7, 0.4); 
    rotation.m34 = 1.0/-600 


    //2. Define the initial state (Before the animation) 
    cell.layer.shadowOffset = CGSize(width: 10.0, height: 10.0) 
    cell.alpha = 0; 

    cell.layer.transform = rotation; 
    cell.layer.anchorPoint = CGPoint(x: 0.0, y: 0.5) 


    //3. Define the final state (After the animation) and commit the animation 
    cell.layer.transform = rotation 
    UIView.animate(withDuration: 0.8, animations:{cell.layer.transform = CATransform3DIdentity}) 
    cell.alpha = 1 
    cell.layer.shadowOffset = CGSize(width: 0, height: 0) 
    UIView.commitAnimations() 

} 
+0

Considera di aggiungere alcuni commenti al tuo codice. – HDJEMAI

+0

@Sai Kumar Reddy Grazie mille. Funziona perfettamente con le esigenze di – Rex

0

Utilizzare questo codice per ottenere l'animazione nella vostra Tableview

func tableView(_ tableView: UITableView, willDisplay cell: 
    UITableViewCell, forRowAt indexPath: IndexPath) { 
     let rotationAngleInRadians = 360.0 * CGFloat(M_PI/360.0) 
     let rotationTransform = CATransform3DMakeRotation(rotationAngleInRadians, -500, 100, 0) 
    let rotationTransform = CATransform3DMakeRotation(rotationAngleInRadians, 0, 0, 1) 
     cell.layer.transform = rotationTransform 
     UIView.animate(withDuration: 1.0, animations: {cell.layer.transform = CATransform3DIdentity}) 
} 
4

Swift 4

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    cell.transform = CGAffineTransform(scaleX: 0.8, y: 0.8) 
    UIView.animate(withDuration: 0.4) { 
     cell.transform = CGAffineTransform.identity 
    } 
} 
+0

sostituite .. – tsukimi

+1

Impressionante, proprio quello di cui avevo bisogno –