1

時計で睡眠タイマーを設定するアプリを作っています。基本的には片手で時計を動かして睡眠時間を設定できる時計です。uitouchで画像を回転させてみましが、真ん中から回転させたいのですが、先端から回転します。次に、ユーザーが画像の先端に触れたときにのみ画像が回転するようにしたいのですが、私のプロジェクトでは、使用時に画面の任意の部分に触れたときにも画像が回転します。また、画像を両方向に回転させたいです。しかし、私のプロジェクトでは、この方法のために時計回りにしか動きません

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");



    }
4

3 に答える 3

2

詳細には、rotateViewをカスタマイズしてから、次の操作を行うことができます。

1:「touchesBegan」のデリゲートメソッドで、fingerのinitialPointとinitialAngleを取得します。

2:「touchesMoved」中に、newPointoffingerを取得します。

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」で最終的な角速度を計算できます。

何か混乱している場合は、詳細について、書き戻すことができます。

于 2012-10-08T04:10:28.767 に答える
0

逆に回転させるには、次のようにします。

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

また、チップから回転するには、setAnchorPointを使用する必要があります(コードで使用したのと同じですが、[image setAnchorPoint]を使用する必要があると思います)。

主題の詳細:UIImageのsetAnchorPoint?

于 2011-03-03T14:58:06.067 に答える
0

uitouchで画像を回転させてみましたが、真ん中から回転しますが、先端から回転させたいです

SDKで要素をその端で回転させる方法がわかりません。その効果を出したい場合は、半分の部分が透明な長さの2倍の時計ハンドルの画像を撮ります。これは直接的な解決策ではありませんが、回避策です。

また、画像を両方向に回転させたいのですが、私のプロジェクトでは、この方法のために時計回りにしか移動しません

iOS開発者向けドキュメントによると、正の角度値は反時計回りの回転を指定し、負の値は時計回りの回転を指定します。

于 2011-03-03T08:55:10.710 に答える