2012-02-01 13 views
10

Quiero rotar una vista mediante programación para el que he utilizado a continuación código:Ancho y aumento de la altura después de CGAffineTransformRotate aplican a un UIView

CGAffineTransform rotateTransform = contentView.transform; 
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate); 
contentView.transform = rotatenewTransform; 

Cuando hago esto el ancho y la altura de contentView (mi UIView) aumento .

¿Qué debo hacer para que contentView permanezca como está y también gire?

gracias de antemano.

Aquí estoy explicando mi problema en más detalles:

mi contentView contiene unos botones y una imageView en ella. este contenidoVer agregado en segundo plano y este contentView no debería salir de este fondo boundry.

pero cuando giro este contenido por código superior, el ancho y alto de contentView aumenta y por eso algunas veces sale de fondo.

Espero que esto quede claro para usted. :)

+0

por favor seleccione la respuesta si es verdadero – GameLoading

+1

@fasttrack sigue enfrentando el mismo problema. – Prashant

+0

Encontré una solución para esto, he guardado la transformación de la vista y funciona bien ahora. – Prashant

Respuesta

9

El ancho y la altura (presumiblemente está tomando esto de frame.size) tienen que cambiar porque describen el rectángulo más pequeño que contiene toda la vista girada: si gira un rectángulo en 45 grados, el rectángulo para el rectángulo girado es más ancho y más alto que el rectángulo original.

El tamaño "real" de su vista girada seguirá estando disponible en el rectángulo bounds, esto se expresa en el sistema de coordenadas interno de la vista que no se gira.

Por lo tanto, si el original era frame origen (100.100), el tamaño (100,50), la vista girada tendría un frame donde el origen y el tamaño era un rectángulo que podría adaptarse a su vista girada dentro de ella, se describe en el sistema de coordenadas de la supervista Si ahora hizo esto:

CGFloat width = contentView.frame.size.width; 

Obtendrá el valor cambiado. Sin embargo, si hiciera esto:

CGFloat width = contentView.bounds.size.width; 

Obtendría su valor de ancho original de 100.

+0

puede explicarlo por algún código de ejemplo. – Prashant

+0

Intenté establecer los límites de contentView, pero sus elementos secundarios permanecen fuera de contentView. – Prashant

+0

Quiero rotar una vista, pero el ancho y el alto de la vista no deberían cambiar. – Prashant

Cuestiones relacionadas