我將一個簡單的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
}
但是圖標不顯示。
- 如果我註釋掉初始
likeIcon.alpha = 0.0
則該圖標可見選擇或取消選擇,所以它的存在 toggleLikeButtonAnimated
肯定是叫- 框架是正確的框架
唯一我能想到,因爲這真的很奇怪,那就是焦點引擎的某些東西正在干擾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
動畫中在小區集中,出來的時候沒有重點。但這不是我想要的,並且它看起來像焦點引擎的動畫在選擇時阻止了我的字母變化。
有關如何解決的任何想法?
我不應該reloadData來改變一次單元的外觀。似乎焦點API干擾了單元UI的更新。 – Ramsel