[英]Add UIView to cover the whole UITableViewCell along with accessory view in iOS 10
我有一个带有标准附件视图的相当简单的自定义单元。
在某个时候,我需要执行一个动画,以彩色视图覆盖整个单元,该彩色视图的中心是图像。 我在执行iOS 10.2的iPhone 5上遇到奇怪的问题。
这是我的工作:
使用nib文件创建UITableViewCell的子类。
在init方法中,将UIView coverView
作为子视图直接( self.addSubview(self.coverView)
)添加到我的自定义单元格中(因为我也需要覆盖辅助视图,因此无法将其添加到contentView
)。 coverView
是通过编程创建的,没有布局限制。 将UIImageView通过布局约束以编程方式添加到其中,并将translatesAutoresizingMaskIntoConstraints
设置为false
。
添加方法:
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 })
}
用户点击单元格时调用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.