2015-09-04 5 views
0

Я использую функцию insertRowAtIndexPath, чтобы вставить ряд строк внутри моего вида таблицы. Однако стили анимации in-build (.Fade, .Top, .Bottom e.t.c.) не полностью заполняют мои потребности.

Мне нужно создать свои собственные анимации, я знаю, что это можно сделать, переопределив UITableViewRowAnimation, но я не уверен, как это следует обрабатывать.Переопределение стилейRowAnimation для вставки строк в Swift

Ждем ваших предложений.

Оцените любые идеи.

+0

Это может помочь: HTTP: //stackoverflow.com/questions/11379614/can-you-do-custom-animations-for-uitableview-cell-inserts –

+0

@johnykumar спасибо. да, я это видел. проблема заключается в том, что она написана в ObjC, и я не могу реплицировать решение, к сожалению. –

+0

ok Позвольте мне попробовать быстро, ответит вам в ближайшее время. –

ответ

1
Try This in your UITableView subclass. 
override func insertRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) { 
    super.insertRowsAtIndexPaths(indexPaths, withRowAnimation: UITableViewRowAnimation.None) 

    self.endUpdates() 
    self.beginUpdates() 

    for indexPath:NSIndexPath in indexPaths{ 

     let cell:UITableViewCell? = (super.cellForRowAtIndexPath(indexPath)); 
     if cell != nil { 
      var frame:CGRect = (cell?.frame)! 
      frame.origin.x = (cell?.frame.size.width)! 
      cell?.frame = frame 
      frame.origin.x = 0; 
      let animationBlock = {() -> Void in 
       cell!.frame = frame; 
      } 
      if UIView.respondsToSelector(Selector("animateWithDuration(duration: , delay: , usingSpringWithDamping dampingRatio: , initialSpringVelocity velocity: , options: , animations: , completion: ")){ 

       // UIView.animateWithDuration(0.3, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options:0.0, animations: animationBlock, completion:nil) 
       UIView.animateWithDuration(0.3, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: animationBlock, completion: nil) 
      }else{ 
       UIView.animateWithDuration(0.3, delay: 0.0, options:UIViewAnimationOptions.CurveEaseIn, animations: animationBlock, completion: nil) 
      } 
     } 



    } 
} 
+0

Почему 'endUpdates()' и 'beginUpdates()'? – NRitH

+0

@NRitH его просто быстрый конвертированный код ссылки, который я предлагаю follow.i, только преобразовал его в быстрый. –

+0

благодарим вас за большие усилия. хотя у меня возникла проблема при реализации кода. У меня нет класса 'UITableView', я просто использую' UITableViewDatasource' и 'UITableViewDelegate', а также' UIViewController' для основных функций таблицы - когда я пытаюсь добавить класс 'UITableView' или заменить текущий 'UIViewController' я получаю сбой. –

Смежные вопросы