Come posso attivare Core Animation su un proxy animatore durante una chiamata per ridimensionare SubviewWithOldSize?

StackOverflow https://stackoverflow.com/questions/114970

  •  02-07-2019
  •  | 
  •  

Domanda

Ho alcune NSVview che sto inserendo in uno dei due layout a seconda delle dimensioni della mia finestra.

Sto regolando il layout quando la relativa superview riceve il metodo resizeSubviewsWithOldSize.

Funziona, ma mi piacerebbe animare il cambiamento. Quindi, naturalmente, ho provato a chiamare il proxy animatore quando ho impostato i nuovi frame, ma l'animazione non verrà eseguita mentre l'utente sta ancora trascinando. Se rilascio il mouse prima che l'animazione sia programmata, vedo la fine dell'animazione, ma nulla fino ad allora. Ho provato ad assicurarmi che kCATransactionDisableActions fosse impostato su NO, ma questo non ha aiutato.

È possibile avviare una nuova animazione e averla effettivamente eseguita durante il ridimensionamento?

È stato utile?

Soluzione

Non credo che tu possa farlo facilmente perché le animazioni di CA vengono eseguite tramite un timer e il timer non si attiva durante le modalità runloop attive mentre l'utente sta trascinando.

Se riesci a controllare il runloop mentre l'utente sta trascinando, gioca con le modalità runloop. Questo lo farà funzionare. Non credo che tu possa cambiarlo dal lato CA.

Altri suggerimenti

Questa non è davvero una risposta, ma sconsiglio di animare qualsiasi cosa mentre trascini per ridimensionare una finestra. Lo schermo è già animato (dalla finestra in movimento) - ulteriori animazioni probabilmente saranno visivamente confuse ed estranee.

Gli effetti CoreAnimation sono utilizzati al meglio per spostarsi da uno stato noto a un altro, ad esempio quando una finestra delle preferenze viene ridimensionata per accompagnare il contenuto di un nuovo riquadro e si conoscono le dimensioni vecchie e nuove o quando si sta sbiadendo un oggetto dentro o fuori (o entrambi). Fare animazione mentre il ridimensionamento della finestra sarà visivamente confuso e renderà più difficile per l'utente concentrarsi sull'ottenere la dimensione della finestra dove vuole che sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top