我想在拖動時稍微旋轉UIView
。我設法使用UIPanGestureRecognizer
來拖動。我也嘗試使用CGAffineTransformRotate
旋轉,它工作。但是,當我同時應用拖動和旋轉時,UIView
只能旋轉,並且不會在超級視圖中拖動。這裏是我在手勢處理器中做的事情:拖動時的視圖旋轉
CGPoint translation = [gesture translationInView:self.view];
// to drag
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
// to rotate
gesture.view.transform = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4);
// return to default so that it doesn't accumulate
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
我該如何解決這個問題?
編輯: 這裏是整個代碼:
- (void)handlePan:(UIPanGestureRecognizer*)gesture{
if (gesture.state == UIGestureRecognizerStateBegan) {
// Save initial post center for snapping
point = CGPointMake(gesture.view.center.x, gesture.view.center.y);
} else if (gesture.state == UIGestureRecognizerStateChanged){
// Translate user movement across the screen to dragging coordinates
CGPoint translation = [gesture translationInView:self.view];
gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
CGAffineTransform rotate = CGAffineTransformRotate(gesture.view.transform, degreesToRadians(translation.x)/4);
gesture.view.transform = rotate;//CGAffineTransformConcat(translate, rotate);
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
} else if (gesture.state == UIGestureRecognizerStateEnded){
// Animate snap back to place
[UIView animateWithDuration:0.2 animations:^{
gesture.view.transform = CGAffineTransformIdentity;
// [self.imagePost setCenter:point];
}];
}
}
我明白你是不是想用兩個手指旋轉,你只是一個視圖在你平移時旋轉。如果這是您正在發佈的代碼的作品。所以這個問題一定在別的地方。 – Odrakir
@Odrakir當手勢識別器狀態發生變化時,上面的代碼被放置,當我移動它旋轉的視圖時,向上或向下移動它就會彈回它的位置。我會發布整個代碼。我想沒有任何東西會影響動畫。請在一分鐘內檢查它 – HusseinB
該代碼也可以工作。 – Odrakir