В настоящее время я использую следующий код для поворота моего изображения
- (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,
0,
«0,001174212»,
«0,006030798»,
"0.01210225",
"0.01215386",
"0.01220191",
"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
Итак, каким должно быть решение для получения точного значения поворота изображения.