2013-07-17 62 views
-1

我想圍繞它的當前位置旋轉對象,變換工作不

CGAffineTransform trans = CGAffineTransformMakeRotation(compass_heading); 
trans = CGAffineTransformTranslate(trans, 0, 90); 
sun_image.transform = trans; 

但它有沒有效果,sun_image不動! 但是,如果我改變它並在X軸上翻譯,它會移動!這是什麼意思?

CGAffineTransform trans = CGAffineTransformMakeRotation(compass_heading); 
trans = CGAffineTransformTranslate(trans, 90, 0); 
sun_image.transform = trans; 
+0

是圖像設置任何自動佈局或自動調整大小的選項視圖? –

回答

2

下面是可以旋轉的物體:

CGFloat rotation = M_PI_2; 

    CGAffineTransform currentTransform = sun_image.transform; 
    CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); 

    [sun_image setTransform:newTransform]; 

隨着CGAffineTransformTranslate可以移動的對象,所以你必須使用CGAffineTransformRotate

對於外景經理:

-(void) locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 
{  
    //set the anchorPoint as the lower right corner of the layer 
    sun_image.layer.anchorPoint = CGPointMake(1, 1); 

    [sun_image.layer setAffineTransform:CGAffineTransformMakeRotation(-1*newHeading.trueHeading*3.14159/180)]; 
} 
+0

但是,當羅盤傳感器發生變化時,我需要旋轉它,所以sun_image.transform始終在變化,那麼我應該怎麼做? – AVEbrahimi

+0

如果你正在使用位置管理器,就像在我的回答中那樣做。 – soryngod

+0

我需要圍繞屏幕中心旋轉它,所以我先旋轉它,然後翻譯爲我的圓的半徑,但是它不會在第一步中進行翻譯。 – AVEbrahimi

1

我一般做這個翻譯轉換:您UIImageView與像波紋管你的看法中心物業

sun_image.transform = CGAffineTransformMakeTranslation(dx,dy); 
1

第一組中心..

yourImageView.center = self.view.center; 

後套GestureRecognizer像波紋管..

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
    [rotationRecognizer setDelegate:self]; 
    [yourImageView addGestureRecognizer:rotationRecognizer]; 
    [rotationRecognizer release]; 

,然後使用旋轉UIImageView

這種波紋管方法
-(void)rotate:(id)sender 
{ 
    UIView *imgTempGest = [sender view]; 

    if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) 
    { 
     lastRotation = 0.0; 
     return; 
    } 
    CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]); 

    CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform; 
    CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation); 

    [[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform]; 

    [imgTempGest setTransform:newTransform]; 

    lastRotation = [(UIRotationGestureRecognizer*)sender rotation]; 
} 

採取的CGFloat像波紋管lastRotation變量..

CGFloat lastRotation;