2015-10-27 2 views
1

Я хочу сделать переход вида внутри ячейки представления таблицы. Точнее, когда пользователь нажимает кнопку в UITableViewCell, представление должно перемещаться с правой стороны ячейки, и это представление должно вернуться в исходное положение, когда пользователь нажимает кнопку на слайдере. Я мог бы сделать все это, кроме анимации отправки скользящего вида обратно в исходное положение.UIView Transition в виде таблицы

Для выполнения этого, что я сделал до сих пор, создан xib-файл для ячейки представления таблицы, который содержит два вида бок о бок, пусть это будет view1 и view2. Когда tableview загружается на экран, пользователю видна только view1. И установите ограничение автоматического макета для view1.trailingedge и view2.leadingedge как 0, ограничение связано с cell.swift и называется leftConstraint. Теперь, когда кнопка в view1 щелчке VIEW2 слайдов с правой стороны ячейки, используя следующий код: -

self.view2.transform = CGAffineTransformMakeTranslation(UIScreen.mainScreen().bounds.width, 0) 
UIView.animateWithDuration(0.4, animations: {() -> Void in 
    self.view2.transform = CGAffineTransformIdentity 
    self.leftConstraint.constant -= UIScreen.mainScreen().bounds.width 
}) 

Когда пытался отправить обратно view2 свою старую позицию (это должно произойти по щелчку кнопка в представлении2) т.е. правая часть анимации ячейки не работает, все элементы в представлении2 просто исчезают. Используя следующий код для отправки изображения в правую сторону ячейки: -

self.view2.transform = CGAffineTransformMakeTranslation(UIScreen.mainScreen().bounds.width, 0) 
UIView.animateWithDuration(0.4, animations: {() -> Void in 
    self.view2.transform = CGAffineTransformIdentity 
    self.leftConstraint.constant += UIScreen.mainScreen().bounds.width 
}) 

Спасибо за помощь за помощь. И особое спасибо @MarkHim за помощь.

ответ

0

Поскольку вам нужно преобразование для позиции RightOut дважды, сначала для анимации, а затем для анимации out, вы можете сохранить ее в переменной, например rightOutTransform. Попробуйте:

CGAffineTransform rightOutTransform = CGAffineTransformMakeTranslation(self.view.fame.size.width, 0); 
// assuming view2 is currently in the cell 
UIView.animateWithDuration(0.4, animations: { 
    self.view2.transform = rightOutTransform // 
}) 

Вы можете думать об удалении взгляды не нужно больше с точки зрения иерархии, как это, когда анимация завершена

view2.removeFromSuperview(); 
+0

Еще раз спасибо Марк и извините за ответ поздно, я буду проверьте это и обновите поток! :) – OSD

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