簡體   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