2015-11-18 46 views
0

我將一個簡單的imageView添加到自定義的UICollectionViewCell中。我初始化它,當我把它聲明:細胞聚焦時無法更改子視圖的alpha值

let likeIcon = UIImageView() 

然後我在類的初始化設置屬性:

likeIcon.image = UIImage(named: "heart_empty")! 
    likeIcon.alpha = 0.0 
    addSubview(likeIcon) 

沒有什麼太瘋狂了。我希望imageView最初被隱藏起來,但當單擊單元格時可見。

我有一個簡單的方法,當所選單元格,我稱之爲(它尚未動畫):

func toggleLikeButtonAnimated() { 

    likeIcon.frame = likeIconFrame() 
    likeIcon.alpha = 1.0 
} 

但是圖標不顯示。

  1. 如果我註釋掉初始likeIcon.alpha = 0.0則該圖標可見選擇或取消選擇,所以它的存在
  2. toggleLikeButtonAnimated肯定是叫
  3. 框架是正確的框架

唯一我能想到,因爲這真的很奇怪,那就是焦點引擎的某些東西正在干擾alpha變化。

我有這樣的代碼在小區現在:

// MARK: -- Focus 
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) { 
    super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator) 

    coordinator.addCoordinatedAnimations({() -> Void in 
     if self.focused { 
      self.focusItem() 
     } else { 
      self.unfocusItem() 
     } 
     }) {() -> Void in 
    } 
} 

func focusItem() { 

    self.overlay.alpha = 0.0 
} 


func unfocusItem() { 

    self.overlay.alpha = 0.6 
} 

overlay是下面的圖標,因此不應該干涉與它的知名度。所以,我想這一點:

// MARK: -- Focus 
    override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) { 
     super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator) 

     coordinator.addCoordinatedAnimations({() -> Void in 
      if self.focused { 
       self.focusItem() 
      } else { 
       self.unfocusItem() 
      } 
      }) {() -> Void in 
     } 
    } 

    func focusItem() { 

     self.overlay.alpha = 0.0 
     self.likeIcon.alpha = 1.0 
    } 


    func unfocusItem() { 

     self.overlay.alpha = 0.6 
     self.likeIcon.alpha = 0.0 
    } 

likeIcon動畫中在小區集中,出來的時候沒有重點。但這不是我想要的,並且它看起來像焦點引擎的動畫在選擇時阻止了我的字母變化。

有關如何解決的任何想法?

回答

0

根據您的描述,您希望imageView最初被隱藏,但當單擊UICollectionViewCell時可見,但它沒有工作。當你設置UICollectionViewDelegate時,你必須調用reloadData函數,就像UITableView.Maybe你可以嘗試使用這個,當你點擊cell.Solve你的問題呢。

+0

我不應該reloadData來改變一次單元的外觀。似乎焦點API干擾了單元UI的更新。 – Ramsel