He visto que otras personas que han tenido esta pregunta, pero la mayoría de las respuestas no están trabajando en las últimas 3.0 build de iPhone OS. De todos modos, me pregunto cómo puedo programáticamente girar un UIView sin ninguna entrada del acelerómetro. El código que he encontrado hasta ahora:

CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2);
view.transform = transform;
CGRect contentRect = CGRectMake(-80, 80, 480, 320);
view.bounds = contentRect;

Sin embargo, esto no funciona para UIView (en mis pruebas). Hay algo que tengo que hacer mi AppDelegate para que esta/otros el código de la función, o hay una mejor manera de hacer la misma cosa?

Gracias por la ayuda!

InformationsquelleAutor PF1 | 2009-08-29

3 Comentarios

  1. 40

    esto funciona para mí

     CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2);
     self.view.transform = transform;
    
     //Repositions and resizes the view.
     CGRect contentRect = CGRectMake(0,0, 480, 320);
     self.view.bounds = contentRect;
    • Uso M_PI en lugar de 3.14159
    • Y el uso M_PI_2 en lugar de M_PI/2
  2. 1

    I tenido éxito con que:

    CATransform3D rotationTransform = CATransform3DIdentity;
    [view.layer removeAllAnimations];
    rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1);
    view.layer.transform = rotationTransform;
    • Hola Marco: En el código anterior, ¿cuál sería el «ángulo» del ser?
    • Además, este no parece ser capaz de construir a pesar de que he importado el QuartzCore marco.
    • El ángulo es el ángulo en radiantes el punto de vista se pueden girar. No construir tal vez a causa de otros errores. ¿Qué registro de generación de decir?
    • Dice ‘CATransform3D’ no declarado (primer uso en esta función) y ‘rotationTransform’ no declarado (primer uso en esta función)
    • ¿De importación QuartzCore.h?
    • Sí, tengo, pero todavía genera ese error.
    • Sé que esto es super viejo, pero creo que PF1 podría haber sido confundirse con la diferencia entre la «importación» de la QuartzCore marco, y teniendo el real #import <QuartzCore/QuartzCore.h> declaración en la parte superior del archivo.

  3. 0

    No estoy seguro si esto se considera privada de la API, por lo que usted no quiere usar, pero si quieres forzar la orientación a cambio sin inclinar el dispositivo, puede intentar llamar a:

    [[UIDevice currentDevice] performSelector:@selector(setOrientation:)
                          withObject:(id)UIInterfaceOrientationLandscapeLeft];

    No he probado que todavía funciona en 3.1.2. a pesar de que sé que funciona en 3.0.

Dejar respuesta

Please enter your comment!
Please enter your name here