我想在表格视图单元格中转换视图。更确切地说,当用户点击UITableViewCell中的按钮时,视图应该从单元格的右侧滑入,当用户单击滑动视图中的按钮时,该视图应该滑回其原始位置。除了将滑动视图发送回其原始位置的动画之外,我可以完成所有这些操作。
为了实现这一点,我到目前为止所做的是,为表视图单元创建了一个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发送回其旧位置时(这应该发生在view2中点击按钮),即。单元格动画的右侧不起作用,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
})
先谢谢你的帮助。特别感谢@MarkHim的帮助。
答案 0 :(得分:0)
由于您需要对rightOut位置进行两次转换,首先是动画中的动画,然后是动画的后期,您可以将其保存在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();