2015-09-21 6 views
13

Ich habe eine benutzerdefinierte UICollectionViewCell in meiner tvOS App. Es hat eine UIImageView und einige UILabel s drin. Ich kann die Zelle fokussieren, indem ich das UIFocusEnvironment Protokoll ohne irgendein Problem einführe, aber ich kann nicht herausfinden, wie man meiner kundenspezifischen Zelle das fokussierte Aussehen gibt. (Elevation und Reaktion auf Benutzerbewegung auf dem Touchpad).Animiere/zoome eine fokussierte benutzerdefinierte Ansicht in tvOS

Ich bin bewusst UIImageView 's adjustsImageWhenAncestorFocused Eigenschaft, aber das erhöht nur das Bild in meiner Zelle, nicht die gesamte Zelle.

Gibt es eine Möglichkeit, tvOS dazu zu bringen, das (scheinbar) standardmäßige Fokus-Aussehen/Verhalten auf meine benutzerdefinierte Ansicht anzuwenden, oder muss ich das alles manuell machen?

Vielen Dank im Voraus.

Antwort

16

Ich habe die gleiche Frage auf den Apple-Entwicklerforen gestellt. Apple Mitarbeiter antworteten:

Für benutzerdefinierte Ansichten müssen Sie das Fokus Aussehen selbst implementieren. In der Fokusaktualisierungsmethode können Sie beispielsweise eine Transformation anwenden und die UIMotionAffect API verwenden.

- (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator { 
    if (context.nextFocusedView == self) { 
     // handle focus appearance changes 
    } 
    else { 
     // handle unfocused appearance changes 
    } 
} 

Ich denke, es wäre sehr hilfreich sein, eine UIView Erweiterung um der Lage sein, das gleiche Verhalten auf jede benutzerdefinierte Ansicht anzuwenden.

Vielleicht möchten sie, dass wir mehr interessante Möglichkeiten implementieren, um den Fokus auf den Benutzer zu richten? Das wäre ein guter Grund, dies einfach nur für UIImageView zu aktivieren (Ganz zu schweigen davon, dass dieses Verhalten auch simuliertes Licht über die UIImageView hinzufügt, was schön ist, aber vielleicht nur für Bilder Sinn macht).

Verwandte Themen