首页 文章

表格视图中的UIView转换

提问于
浏览
1

我想在表格视图单元格中转换视图 . 更确切地说,当用户点击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的帮助 .

1 回答

  • 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();
    

相关问题