2013-10-12 5 views
1

Я использую акселерометр для перемещения изображения (вертолета) по экрану. Я пытаюсь добавить код, поэтому, когда вертолет движется вперед, он поворачивает uiimageview на 20 градусов, когда вертолет движется назад, он поворачивает изображение на -20 градусов, и идея состоит в том, чтобы создать эффект, который вертолет движется более реалистично. Однако, когда применяется вращение, uiimageview возвращается в исходное исходное положение (позиция, которую я разместил в рассказном барде). Любые идеи почему? Вот код:Вращение uiimageview перемещает изображение обратно в исходное положение раскадровки

-(void)outputAccelerationData:(CMAcceleration)acceleration 

{ 
if (helicoptervalueX>1.5){ 
    helicopterrotation = 1; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity,0.34906585); 
    NSLog(@"Tilt forward"); 
} else if (helicoptervalueX < -1.5){ 
    helicopterrotation = -1; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity, -0.34906585);  
    NSLog(@"Tilt backward");} 
else if (helicoptervalueX<=1.5 && helicoptervalueX>=-1.5){ 
    helicopterrotation = 0; 
    helicopter.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 0); 
    NSLog(@"Helicopter flat");} 




helicoptervalueX = -(acceleration.y*50.0)+calibrationx; 
helicoptervalueY = (acceleration.x*50.0)+calibrationy; 



int helicopternewX = (int)(helicopter.center.x + helicoptervalueX); 

if (helicopternewX > 518) { 
    helicopternewX = 518;} 

if (helicopternewX < 50){ 
    helicopternewX = 50;} 

int helicopternewY = (int)(helicopter.center.y - helicoptervalueY); 

if (helicopternewY > 295){ 
    helicopternewY = 295;} 


if (helicopternewY < 25){ 
    helicopternewY = 25;} 

CGPoint helicopternewCenter = CGPointMake(helicopternewX, helicopternewY); 

helicopter.center = helicopternewCenter; 

}

ответ

0

Пробовали ли вы это? Для сохранения существующего преобразования и применять ротацию на нем:

helicopter.transform = CGAffineTransformRotate([helicopter transform],angle); 

Затем, чтобы вернуться в горизонтальное положение, вы, возможно, придется применить отрицательный угол:

helicopter.transform = CGAffineTransformRotate([helicopter transform], -angle); 
Смежные вопросы