2011-03-03 227 views
1

我做了一個應用程序,它設置了睡眠定時器的時鐘。基本上它是單手時鐘,用戶可以移動以設置他的睡眠時間。我試圖旋轉圖像uitouch但它從中間旋轉,但我希望它從tip.Secondly旋轉。其次,我希望該圖像只旋轉時,用戶正在觸摸圖像的提示,但在我的項目中,圖像也旋轉時使用觸摸任何部分的screen.Also我想在兩個方向上旋轉圖像,但在我的項目是由於這種方法旋轉圖像

image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1));

只移動順時針

任何人都可以給我提示或解決方案,如何做到這一點?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    // 

     touch = [[event allTouches] anyObject]; 
     touchLocation = [touch locationInView:touch.view]; 

     NSLog(@"began"); 

    } 


    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
     // get touch event 

     [image.layer setAnchorPoint:CGPointMake(0.0,0.0)]; 



     if ([touch view] == image) { 
      image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1)); 

     //image.center = touchLocation; 
    } 

     } 

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
     NSLog(@"end"); 



    } 

回答

0

要旋轉它,你只需要使用其他方法:

image.transform = CGAffineTransformRotate(image.transform, degreesToRadians(1)); 

而旋轉形成你應該使用setAnchorPoint(就像你在你的代碼中使用的提示,但我認爲你應該做的:[圖像setAnchorPoint] )。

更多關於這個問題:setAnchorPoint for UIImage?

+0

你能解釋一下這個過程嗎?我從代碼中不太明白它,你如何設置所有東西來旋轉視圖? – 8vius 2011-06-27 20:02:57

0

我試着旋轉與uitouch的形象,但它從中間旋轉,但我希望它從頂端

我不知道在SDK的任何方式來旋轉元素旋轉在其極端。如果你想得到這個效果,你可以使用時鐘手柄圖像,你有兩倍的長度和半透明的部分。這不是一個直接的解決方案,而是一種解決方法。

此外,我想在兩個方向,但在我的項目將圖像旋轉它只能移動順時針由於這種方法

按照iOS的開發者文檔,正角度值指定逆時針旋轉和負值指定順時針旋轉。

2

詳細,你可以自定義一個rotateView,則:

1:在 「的touchesBegan」 的委託方法,讓手指和initialAngle的initialPoint。

2:在 「touchesMoved」,得到newPoint手指:

CGPoint newPoint = [[touches anyObject] locationInView:self]; 
[self pushTouchPoint:thePoint date:[NSDate date]]; 
double angleDif = [self angleForPoint:newPoint] - [self angleForPoint:initialPoint]; 
self.angle = initialAngle + angleDif; 
[[imageView layer] setTransform:CATransform3DMakeRotation(angle, 0, 0, 1)]; 

3:最後,在 「touchesEnded」 就可以計算出最終AngularVelocity。

如果有什麼困惑,更詳細的信息,你可以回信。