【发布时间】:2015-11-18 01:09:17
【问题描述】:
我有一个简单的 imageView 添加到自定义 UICollectionViewCell。我在声明它时初始化它:
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 在单元格聚焦时动画,在未聚焦时动画。但这不是我想要的,似乎焦点引擎的动画在选择时阻止了我的 alpha 变化。
关于如何解决的任何想法?
【问题讨论】: