繁体   English   中英

添加UIView以覆盖整个UITableViewCell以及iOS 10中的附件视图

[英]Add UIView to cover the whole UITableViewCell along with accessory view in iOS 10

我有一个带有标准附件视图的相当简单的自定义单元。

在某个时候,我需要执行一个动画,以彩色视图覆盖整个单元,该彩色视图的中心是图像。 我在执行iOS 10.2的iPhone 5上遇到奇怪的问题。

这是我的工作:

  1. 使用nib文件创建UITableViewCell的子类。

  2. 在init方法中,将UIView coverView作为子视图直接( self.addSubview(self.coverView) )添加到我的自定义单元格中(因为我也需要覆盖辅助视图,因此无法将其添加到contentView )。 coverView是通过编程创建的,没有布局限制。 将UIImageView通过布局约束以编程方式添加到其中,并将translatesAutoresizingMaskIntoConstraints设置为false

  3. 添加方法:

    func animateCState(){

     self.coverView.frame = self.bounds self.coverView.frame.origin.y = -self.frame.size.height self.bringSubview(toFront: self.coverView) UIView.animate(withDuration: 0.3, animations: { self.coverView.frame.origin.y = 0 }) 

    }

  4. 用户点击单元格时调用animateCState

我的期望: 绿色视图的顶部幻灯片位于中间

我得到的是: 显然透明的视图从顶部滑动,并在动画结束时几乎闪烁为绿色。 我可以看到imageView在适当的位置滑动。

问题:如何在单元格中添加一个覆盖整个UITableViewCell(带有附件视图)的视图并使其具有动画效果?

好。 看来我已经知道了。

显然的UITableView或UITableViewCell的做一些事情(设置.clear颜色作为背景)任后直接加入到小区内所有的观点prepareForReuse或在某个时间点等。 在执行动画之前,我必须在animateCState函数中设置所需的颜色。

所以我有效的方法如下所示:

func animateCState() {

    self.coverView.frame = self.bounds
    self.coverView.frame.origin.y = -self.frame.size.height
    self.bringSubview(toFront: self.coverView)
    self.coverView.backgroundCOlor = .green
    UIView.animate(withDuration: 0.3, animations: {
        self.coverView.frame.origin.y = 0
    })  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM