Есть несколько сообщений, которые я нашел, но ни один из них не полезен для меня.Поворот изображения (не UIImageView) на один градус каждый раз при нажатии кнопки
Я хочу повернуть изображение (по часовой стрелке/против часовой стрелки за раз). Я сделал это, выполнив следующий код, но когда я назначаю повернутое изображение на изображение, изображение становится меньше после каждого щелчка.
Я отлаживал и обнаружил, что при каждом повороте (по часовой стрелке/против часовой стрелки) размер изображения увеличивается. Я знаю, когда изображение поворачивается, а размер изображения немного увеличивается, но здесь размер изображения увеличивается намного сильнее, чем ожидание.
//code for image rotation
- (UIImage *)imageRotatedByDegrees:(UIImage*)oldImage deg:(CGFloat)degrees{
// calculate the size of the rotated view's containing box for our drawing space
UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,oldImage.size.width, oldImage.size.height)];
CGAffineTransform t = CGAffineTransformMakeRotation(degrees * M_PI/180);
rotatedViewBox.transform = t;
CGSize rotatedSize = rotatedViewBox.frame.size;
// Create the bitmap context
UIGraphicsBeginImageContext(rotatedSize);
CGContextRef bitmap = UIGraphicsGetCurrentContext();
// Move the origin to the middle of the image so we will rotate and scale around the center.
CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);
// // Rotate the image context
CGContextRotateCTM(bitmap, (degrees * M_PI/180));
// Now, draw the rotated/scaled image into the context
CGContextScaleCTM(bitmap, 1.0, -1.0);
CGContextDrawImage(bitmap, CGRectMake(-oldImage.size.width/2, -oldImage.size.height/2, oldImage.size.width, oldImage.size.height), [oldImage CGImage]);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
- (IBAction)btnRotateImageTapped:(UIButton *)sender {
static NSInteger degree = 0;
if (sender.tag == 471) { //rotate left btn tag
degree += 1;
} else if (sender.tag == 472) { //rotate right btn tag
degree += -1;
}
UIImage *img = [self imageRotatedByDegrees:self.imgViewTeethTemplate.image deg:degree];
self.imgViewTeethTemplate.image = img;
}
Я не знаю, правильно это или нет. Если нет, кто-нибудь может мне помочь. Любая помощь должна быть оценена.
может быть [этот вопрос SO] (http://stackoverflow.com/questions/19219855/uiimageview-get-transformed-uiimage) был бы полезен для вас – heximal
Я не то изображение, которое стало меньше. Когда вы поворачиваете изображение, холст изображения изменяется, чтобы сохранить размер изображения. Изображение, вращающееся до 45 °, не может помещаться в холст изображения без вращения. Поэтому вам нужно обновить фрейм UIImageView. – ejanowski
Я попытался обновить рамку просмотра изображения, но каждый раз, когда я получаю больший размер ... и в конце он выходит за пределы экрана. –