Ho un UIView di cui altezza e larghezza, in rotazione a 90 gradi, sono interscambiati. Ora, quando provo ad aumentare l'altezza o la larghezza, ottengo un aspetto anormale. Come cambio l'altezza di un UIView ruotato?Rotazione di un UIView senza il cambio del frame
risposta
La Documentazione di Apple afferma che la proprietà delle viste frame
diventa indefinita quando la vista transform
non è la trasformazione dell'identità.
La rotazione della vista modifica la trasformazione della vista.
Ora, perché questo invalida la cornice? La documentazione di Apple è in realtà un po 'imprecisa: la proprietà frame non diventa completamente priva di significato per le viste trasformate. Invece, rifletterà ora il rettangolo di delimitazione della vista, cioè il più piccolo rettangolo verticale in cui la vista trasformata può adattarsi.
Questo perché frame
è in realtà una proprietà derivata. Se si desidera modificare il "altezza reale" di una visione trasformata, che è, l'altezza in un proprio sistema di coordinate (prima di applicare la trasformazione), c'è una proprietà per questo: bounds
.
Quindi, in poche parole:
CGRect bounds = myView.bounds;
bounds.size.height = newHeight;
myView.bounds = bounds;
Quindi, se entro queste righe nel mio codice, dove dovrei aggiungere il CGAffineTransformMakeRotation parte? Dopo o prima? –
Amico, hai reso la mia giornata. Diamine, grazie. –
Grazie; felice di poterti aiutare! Per la cronaca (sono sicuro che hai capito questo fuori da soli, ormai): Se stai cambiando i limiti, non importa se si sta cambiando la trasformazione prima o dopo. Se stai cambiando il telaio, essere sicuri di fare questo solo mentre 'CGAffineTransformIsIdentity (myView.transform)' è SI (i. E. Prima di cambiare la trasformazione). Dai un'occhiata a questo post sul blog (non da me) per ulteriori informazioni sul frame vs. limiti cosa: http://ashfurrow.com/blog/you-probably-dont-understand-frames-and-bounds – fzwo
Usa seguente metodo ...
- (void) runSpinAnimationOnView:(UIView*)view duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = repeat;
[view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
- 1. Animare il frame di UILabel senza problemi
- 2. Disabilitazione della rotazione automatica per un UIView
- 3. UIWebView - Non ridimensiona il contenuto durante il cambio di rotazione?
- 4. Come cambio la dimensione di UIView?
- 5. Come rilevare la rotazione per un UIView programatically generato
- 6. Il CALayer si anima con cambio di frame?
- 7. L'animazione del cambio di fotogramma di UIView non è omogenea, produce un effetto rimbalzante
- 8. iPhone SDK: come attivare drawRect sulla sottoclasse UIView dopo il cambio di orientamento?
- 9. Sincronizza layout UIView su frame OpenGL
- 10. L'impostazione di una trasformazione di rotazione in un UIView o il suo livello non sembra funzionare?
- 11. ottenere la direzione di rotazione di UIView su touchesMoved
- 12. UIView in iOS 5 utilizzando Storyboard non ruota il contenuto sulla rotazione del dispositivo iPad
- 13. errore: proprietà 'frame' non trovato in oggetto di tipo 'UIView *'
- 14. Forza il senso di rotazione del CALayer?
- 15. Come cambio il carattere di un UILabel in swift senza modificare la dimensione del carattere?
- 16. Modifica del frame di un inputAccessoryView in iOS 8
- 17. Come impostare il centro di rotazione di un MKAnnotationView
- 18. Dopo la rotazione le coordinate di UIView vengono scambiate ma quelle di UIWindow no?
- 19. Come cambio il nome del processo di un Erlang VM?
- 20. Come cambio il colore del testo di un pulsante?
- 21. Cambiamenti di frame UIView da viewWillAppear: to viewDidAppear:
- 22. Come chiudere un frame gui emacsclient senza uccidere il server
- 23. cambio orientamento senza chiamata onCreate
- 24. Selettore del tempo di rotazione
- 25. Come impedire a ProgressDialog di ignorare il cambio di rotazione dello schermo in Android?
- 26. Problemi di rotazione del bufferImmagine
- 27. Dove ottenere le dimensioni del frame di UIView personalizzato nella sottoclasse
- 28. Tentativo di dissolvenza in un UIView senza esito positivo
- 29. Contenuto AirPrint di un UIView
- 30. Ottieni il frame di UIBarButtonItem in Swift?
Ho solo bisogno di un modo modificare l'angolo del modo in cui appare sullo schermo. –
'view.transform = CGAffineTransformMakeRotation (M_PI/2);' –
Le 90 gradi è stato un esempio. Sto ruotando la vista manualmente. L'altezza e la larghezza cambiano quando lo faccio. Devo solo cambiare l'angolo della vista sullo schermo. –