2017-01-25 24 views
4

Я работаю над проектом tvOS. Этот проект содержит UICollectionView с UIImageView внутри каждого UICollectionViewCell. Прежде всего, я использую adjustsImageWhenAncestorFocused на изображении, потому что он хорошо выглядит, когда ячейка находится в фокусе, и я хочу иметь эффект «параллакса».Swift - Как добавить слой в UIImageView внутри UICollectionViewCell и сохранить эффект параллакса

Когда ячейка находится в фокусе, должна появиться надпись (для названия продукта), которая не является проблемой для создания. Но я хочу, чтобы заголовок был хорошо читаемым, поэтому я хочу наложить слой градиента поверх изображения.

Проблема: Когда я добавляю слой градиента в UIImageView, она идет поверх него, но это не «палка» к нему. Он должен идти с изображением, когда пользователь делает параллакса вещь, но она остается на своей позиции и исходное изображение вертится под слой с градиентом

Скриншот проблемы The actual problem

Кодекса

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?

ответ

1

Apple представила overlayContentView в tvOS 11. Вы должны добавить свой ярлык в этот вид, и он сделает фокус для вас!

Для получения более подробной информации читайте https://developer.apple.com/documentation/uikit/uiimageview/2882128-overlaycontentview?changes=latest_minor

+0

Кто-нибудь знает способ сделать это вручную до этого IOS 11 функции? – jakedunc