单元格聚焦时无法更改子视图的 alpha
Posted
技术标签:
【中文标题】单元格聚焦时无法更改子视图的 alpha【英文标题】:Can't change alpha of subview when cell is focused 【发布时间】: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 变化。
关于如何解决的任何想法?
【问题讨论】:
【参考方案1】:根据您的描述,您希望 imageView 最初是隐藏的,但在单击 UICollectionViewCell 时可见,但它不起作用。设置 UICollectionViewDelegate 时,必须调用 reloadData
函数,就像 UITableView 一样。也许你可以在单击单元格时尝试使用它。解决你的问题。
【讨论】:
我不应该重新加载数据来更改一次单元格的外观。似乎焦点 API 正在干扰单元格 UI 的更新。以上是关于单元格聚焦时无法更改子视图的 alpha的主要内容,如果未能解决你的问题,请参考以下文章
当collectionview中的第一个单元格聚焦时无法聚焦uibutton
更改UICollectionView单元格的alpha值无法正常工作
当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?