关注 tvOS 上的 UICollectionViewCells
Posted
技术标签:
【中文标题】关注 tvOS 上的 UICollectionViewCells【英文标题】:Focus for UICollectionViewCells on tvOS 【发布时间】:2015-11-23 05:13:24 【问题描述】:我是 tvOS 的新手。我在 Objective-C 中使用 XIB 文件创建了 UICollectionView。如何聚焦 UICollectionViewCell?
我在单元格中有一个标签和一个图像视图,我想同时关注标签和图像视图。
【问题讨论】:
详细说明你做了什么以及你面临的问题,不要要求教程和解释。 【参考方案1】:UICollectionViewCell
默认不显示焦点,但您可以通过自己添加来实现。
- (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator
if (self.focused)
// Apply focused appearence,
// e.g scale both of them using transform or apply background color
else
// Apply normal appearance
或
如果您只想关注ImageView
,比如在集合视图单元格获得焦点时将其放大,您可以在awakeFromNib
方法中这样做
self.imageView.adjustsImageWhenAncestorFocused = YES;
self.clipToBounds = NO;
【讨论】:
应该是 'clipsToBounds'('s' 缺失)。【参考方案2】:将此添加到collectionview
的自定义类中:
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator)
if (self.focused)
collectionView.image.adjustsImageWhenAncestorFocused = true
else
collectionView.image.adjustsImageWhenAncestorFocused = false
【讨论】:
【参考方案3】:将以下方法添加到您的 collectionview 单元格。它将显示焦点单元格的标题,仅提供完整的焦点外观。
override func awakeFromNib()
super.awakeFromNib()
// These properties are also exposed in Interface Builder.
imageView.adjustsImageWhenAncestorFocused = true
imageView.clipsToBounds = false
title.alpha = 0.0
// MARK: UICollectionReusableView
override func prepareForReuse()
super.prepareForReuse()
// Reset the label's alpha value so it's initially hidden.
title.alpha = 0.0
// MARK: UIFocusEnvironment
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator)
/*
Update the label's alpha value using the `UIFocusAnimationCoordinator`.
This will ensure all animations run alongside each other when the focus
changes.
*/
coordinator.addCoordinatedAnimations(
if self.focused
self.title.alpha = 1.0
else
self.title.alpha = 0.0
, completion: nil)
【讨论】:
以上是关于关注 tvOS 上的 UICollectionViewCells的主要内容,如果未能解决你的问题,请参考以下文章
tvOS 上的 UIViewControllerTransitioningDelegate 未被调用