2015-09-21 1 views
13

Ho una personalizzata UICollectionViewCell nella mia app tvOS. Ha un UIImageView e alcuni UILabel s in esso. Posso mettere a fuoco la cella implementando il protocollo UIFocusEnvironment senza alcun problema, ma non riesco a capire come dare alla mia cella personalizzata l'aspetto mirato. (Elevazione e risposta al movimento dell'utente sul touchpad).Animazione/zoom di una vista personalizzata focalizzata in tvOS

Sono a conoscenza della proprietà UIImageView di adjustsImageWhenAncestorFocused, ma che eleva solo l'immagine nella mia cella, non l'intera cella.

C'è un modo per far sì che tvOS applichi l'apparenza/comportamento (apparentemente) di messa a fuoco standard alla mia vista personalizzata o devo fare tutto manualmente?

Grazie in anticipo.

risposta

16

Ho fatto la stessa domanda sui forum degli sviluppatori Apple. Il personale di Apple ha risposto:

Per le visualizzazioni personalizzate è necessario implementare l'aspetto di messa a fuoco autonomamente. Nel metodo di aggiornamento della messa a fuoco puoi fare cose come applicare una trasformazione e utilizzare l'API UIMotionAffect.

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

penso che sarebbe piuttosto utile per fare un estensione UIView per essere in grado di applicare lo stesso comportamento a qualsiasi visualizzazione personalizzata.

Forse vorrebbe che implementassimo modi più interessanti per mostrare attenzione all'utente? Sarebbe una buona ragione per abilitarla facilmente solo per UIImageView (Senza contare che questo comportamento aggiunge anche una luce simulata sullo UIImageView, che è bello, ma forse ha senso solo per le immagini).