2016-12-23 6 views
0

Ich mache eine TVOS App. Ich habe eine Sammlungsansicht Zelle, die eine UIImageView hat. Ich überprüfe "Bild anpassen, wenn fokussiert" im Interface-Generator, damit ich den vom System bereitgestellten Fokus-Effekt für das Bild verwenden kann. Das Problem ist, dass ich auch eine Grenze für das Bild einstelle. Der Rahmen wird nicht mit dem Bild vergrößert, wenn die Ansicht scharf wird und das Bild größer wird. Irgendwelche Ideen wie kann ich die Abmessungen des Rahmens aktualisieren, wenn die Ansicht fokussiert ist?AppleTV fokussierte Bild Grenze skaliert nicht

Antwort

1

Ich denke, Sie sollten Ihre imageView in UIView-Objekt setzen und dann den Rand dieser Ansicht geben. Danach sollten Sie die "didUpdateFocus" -Methode überschreiben und die Animation wie gewünscht gestalten. siehe, In meinem Fall habe ich imageView in "ViewBg" -Objekt setzen und diesem Objekt Animation geben.

In Ihrer Klasse:

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) 
     } 
    } 
} 

In Ihrer CollectionViewCell Methode:

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 
} 

So Auf diese Weise können Sie Animation mit Grenze bei Bildansicht geben.