0

現在、次のコードを使用して画像を回転させています

- (void)myImageRotate:(UIRotationGestureRecognizer *)gesture
{
     if(arr==nil)
        {
            arr=[[NSMutableArray alloc] init ];
        }

     if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) 
        {
            currentRotation =(float) [gesture rotation];

        self.transform=CGAffineTransformRotate(self.transform,currentRotation);
        [gesture setRotation:0];
        [arr addObject:[NSNumber numberWithFloat:currentRotation]]; 
    }
    NSLog(@"Rotation Value: %f", currentRotation);

//今、すべての回転値を配列に保存し、逆配列を実行して、//最後の回転値を取得しています

NSArray *reversedArray = [[arr reverseObjectEnumerator] allObjects];
NSLog(@"Array: %@", arr);
NSLog(@"Reversed Array: %@", reversedArray);

//これで、反転配列は常に 0.0 で始まるように表示されます。回転が何であれ、値のように"、"0.01224673"、"0.006139159"、"0.006149054"、"0.01850212"、"0.01237607"、)

lastRotationValue = 0.0;
for (NSString* stringValue in [arr reverseObjectEnumerator]) {
    double value = [stringValue doubleValue];
    if (value != 0.0) {

        //Note: 1 degree=0.0174532925 radian

        lastRotationValue = value;
        break;
    }
}

if (lastRotationValue != 0.0) {
    NSLog(@"My firstNonZeroValue of Rotation Degree:%f",lastRotationValue);
}
}

今、最後の回転値を xml ファイルに書き込んでいます。アプリを閉じて再起動すると、XML ファイルから最後の正確な値を読み取ることができます。

ただし、最後の回転値は実際の回転値ではないため、画像は最後の状態まで完全に回転していません。

そのため、ハードコードされた値と画像を完全に回転させてみました。

self.transform = CGAffineTransformMakeRotation(1.57);//By 90 Degree

したがって、画像の正確な回転値を取得するための解決策は何ですか。

4

1 に答える 1

1

これを試してみてください

.h にこのフロート角度を入れます。

-(void)viewDidLoad
{
[super viewDidLoad];

UIRotationGestureRecognizer *recognizer = [[[UIRotationGestureRecognizer alloc]                                          initWithTarget:self                                        action:@selector(handleRotate:)] autorelease];

[self.rotatedView addGestureRecognizer:recognizer];

}
- (void)handleRotate:(UIRotationGestureRecognizer *)recognizer {
    // current value is past rotations + current rotation
    float rotation = angle + -recognizer.rotation;  
    self.rotatedView.transform = CGAffineTransformMakeRotation(-rotation);

    // once the user has finsihed the rotate, save the new angle
    if (recognizer.state == UIGestureRecognizerStateEnded) {
        angle = rotation;

        NSLog(@"Last Rotation: %f",angle);
    }
}
于 2011-11-15T19:26:47.850 に答える