Граница изображения, сфокусированного на AppleTV, не масштабируется

Я делаю приложение для tvOS. У меня есть ячейка представления коллекции, в которой есть UIImageView. Я отмечаю «Настроить изображение при фокусировке» в построителе интерфейса, поэтому я могу использовать предоставленный системой эффект фокусировки для изображения. Проблема в том, что я также устанавливаю границу для изображения. Граница не масштабируется вместе с изображением, когда представление получает фокус и изображение увеличивается. Любые идеи, как я могу обновить размеры границы, когда вид сфокусирован?


person Rados    schedule 23.12.2016    source источник


Ответы (1)


Я думаю, вы должны поместить свой imageView в объект UIView, а затем указать границу этого представления. после этого вы должны переопределить метод "didUpdateFocus" и сделать анимацию по своему усмотрению. см. В моем случае я поместил imageView в объект «viewBg» и дал анимацию этому объекту.

В вашем классе:

func viewAnimation(view:UIView , isNormal:Bool)
{
    UIView.animate(withDuration: 0.5, animations: { () -> Void in
        if isNormal{
            view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0);
        }
        else{
            view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3);
        }

        })
    { (finished) -> Void in

    }
}

override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
    if(context.previouslyFocusedView != nil)
    {
        if (context.previouslyFocusedView is testCell)
        {
            let cell:testCell = context.previouslyFocusedView as! testCell
            self.viewAnimation(view: cell.viewBg, isNormal: true)
        }
    }
    if(context.nextFocusedView != nil)
    {
        if (context.nextFocusedView is testCell)
        {
            let cell:testCell = context.nextFocusedView as! testCell
            self.viewAnimation(view: cell.viewBg, isNormal: false)
        }
    }
}

В вашем методе CollectionViewCell:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell:testCell = collectionView.dequeueReusableCell(withReuseIdentifier: "testCell", for: indexPath) as! testCell
    cell.imgIcon.image  = UIImage(named:arrayIconImages.object(at: indexPath.row) as! String)
    cell.viewBg.layer.borderColor = UIColor.black.cgColor
    cell.viewBg.layer.borderWidth = 10.00
    return cell
}

Таким образом, вы можете дать анимацию с рамкой при просмотре изображения.

person vikas prajapati    schedule 26.12.2016