[英]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.