我有一个简单的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更改。
关于如何修复的任何想法?
答案 0 :(得分:0)
根据您的描述,您希望最初隐藏imageView,然后在单击UICollectionViewCell时可见,但它确实无效。当你设置UICollectionViewDelegate时,你必须调用reloadData
函数,就像UITableView.Maybe你可以尝试使用它来单击cell.Solve你问题。