回転可能なViewControllerに画像を追加しようとしています。
問題は、可動オブジェクトを回転させようとするとすぐに、オブジェクトが初期化された場所、原点 x、y に移動し、その場で回転するのではなく、そこで回転することです。私の質問は、どうすればこれを防ぐことができるかということです。移動が終了したらすぐにオブジェクトの位置を設定する方法はありますか?
#import "MovableImageView.h"
@implementation MovableImageView
-(id)initWithImage:(UIImage *)image
{
self = [super initWithImage:image];
if (self) {
UIRotationGestureRecognizer *rotationGestureRecognizer= [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotations:)];
[self addGestureRecognizer:rotationGestureRecognizer];
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
}
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
float deltaX = [[touches anyObject] locationInView:self].x - [[touches anyObject] previousLocationInView:self].x;
float deltaY = [[touches anyObject] locationInView:self].y - [[touches anyObject] previousLocationInView:self].y;
self.transform = CGAffineTransformTranslate(self.transform, deltaX, deltaY);
}
-(void) handleRotations: (UIRotationGestureRecognizer *) paramSender
{
self.transform= CGAffineTransformMakeRotation(self.rotationAngleInRadians + paramSender.rotation);
if (paramSender.state == UIGestureRecognizerStateEnded) {
self.rotationAngleInRadians += paramSender.rotation;
}
}
@end