Domanda

Sto creando un app iPad e voglio aggiornare l'utente con la dimensione attuale di una vista. Ho usato per fare questo calcolando la scala di una CGAffineTransform e moltiplicando il xScale per la larghezza (della relativa vista) e la yScale per l'altezza. Mi piacerebbe continuare a fare questo, ma io non sono più facendo trasformazioni 2d, e sono sicuro che cosa equazione da usare per estrarre le informazioni di scala da CATransform3D.

Potete aiutarmi?

È stato utile?

Soluzione

Per ottenere la scala corrente del livello che avete appena eseguito un valueForKeyPath: sullo strato:

CGFloat currentScale = [[layer valueForKeyPath: @"transform.scale"] floatValue];

Altri tasti può essere trovato in noreferrer Mele core Animation Programmazione Guida

Altri suggerimenti

Non ho dimestichezza con gli sguardi API, ma CATransform3D come un normale matrice 4x4 di trasformazione per fare 3D trasformazioni.

Supponendo che rappresenta nient'altro che una combinazione di scala, rotazione e traslazione, i fattori di scala possono essere estratte mediante calcolo delle grandezze di ciascuna delle righe o colonne di 3x3 superiore sinistro a seconda che CATransform3D è rispettivamente di riga o colonna principale .

Ad esempio, se è row-major, la scala nella direzione x è la radice quadrata di (m11 m11 *) + (m12 m12 *) + (m13 m13 *). I yez scale sarebbero similmente le ampiezze della seconda e della terza fila.

Dalla documentazione per CATransform3DMakeTranslation risulta che CATransform3D è infatti row-major.

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