我正在研究一个tvOS项目。此项目包含UICollectionView
,每个UIImageView
内部UICollectionViewCell
。首先,我在图像上使用adjustsImageWhenAncestorFocused
,因为当单元格处于焦点并且我希望具有“视差”效果时它看起来很好。
当一个单元格处于焦点时,应该在图像上弹出一个标签(对于产品的标题),这不是一个问题。但我希望标题具有良好的可读性,这就是为什么我要在图像顶部放置渐变图层。
问题: 当我将渐变图层添加到UIImageView时,它会在它上面,但它不会“粘住”它。当用户进行视差操作时,它应该与图像一起使用,但它保持在其位置,原始图像确实在渐变层下移动
代码
let gradientLayer = CAGradientLayer()
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
gradientLayer.colors = [UIColor(red:0.00, green:1.00, blue:1.00, alpha:0.3).cgColor, UIColor(red:1.00, green:0, blue:1.00, alpha:0.3).cgColor]
gradientLayer.frame = productImageView.focusedFrameGuide.layoutFrame
gradientLayer.isHidden = true
self.productImageView.layer.addSublayer(self.gradientLayer)
if (self.isFocused){
gradientLayer.isHidden = false
}
else {
gradientLayer.isHidden = true
}
}
其他问题
这是一个错误吗?因为我还没弄清楚如何解决这个问题。我应该把它交给Apple吗?
答案 0 :(得分:4)
Apple在tvOS 11中引入了overlayContentView
。你应该将你的标签添加到这个视图中,它会为你做好准备!