簡體   English   中英

選擇單元格時在 UICollectionView 中調暗其他單元格

[英]Dimming other cells in UICollectionView when a cell is selected

我正在嘗試為消息傳遞應用程序構建UICollectionView ,其中UICollectionViewCell中的每個UICollectionView對應於一條消息。 我正在使用MessageKit ,它擴展了UICollectionView ,來處理消息。 當用戶點擊消息時,我想顯示有關消息的信息(發送時間、用戶對消息的反應等)。

GroupMe 通過 (1) 垂直擴展消息以顯示信息,以及 (2)使視圖中的其余消息變暗並禁用用戶交互,從而以非常優雅的方式完成此操作 請注意,突出顯示的cell仍然啟用交互。 請參閱下面的前/后圖像。

點擊消息前

點擊消息后

在這里,我專注於實現(2),即當點擊消息時,我想使所有其他cells變暗並禁用它們的用戶交互。 我還希望能夠為這種變化設置動畫,以便在短時間內使所有其他cells變暗。 當用戶點擊視圖中的任何位置時,我希望突出顯示的cell “取消突出顯示”,並為所有單元格重新啟用用戶交互,並類似地為還原設置動畫。

我對如何實現這種行為有點困惑 - 關於如何在Swift實現這一點的任何想法? 任何可以讓我朝着正確方向開始的指針將不勝感激!

您可以為每個 Cell 的子視圖添加一個 UIView,除了選定的那個。 這個視圖可以通過改變帶有淡入淡出/出現效果的 alpha 值來制作動畫。

您可以在自定義UICollectionViewCell override isSelected屬性來處理用戶交互和cell選擇的alpha ,即

class CollectionViewCell: UICollectionViewCell {
    override var isSelected: Bool {
        didSet {
            self.isUserInteractionEnabled = self.isSelected
            self.alpha = self.isSelected ? 1.0 : 0.5
        }
    }
    
    //rest of the code...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM