2016-09-26 2 views
1

Следующий код больше не работает на iOS10. Данные изображения остаются незатронутыми.Является ли [UIImage imageWithCIImage: шкала: ориентация] сломанной на iOS10?

Я подтвердил, что этот код работает на прошивкой 8 и 9.

CIImage *i = [[CIImage alloc] initWithImage:image]; 
imageView.image = [UIImage imageWithCIImage:i scale:image.scale orientation:UIImageOrientationRight]; 

Кто-нибудь столкнулся с этой же проблемой? Это ошибка или намеченное изменение?

ответ

2

Я предполагаю, что что-то изменилось с точки зрения того, как UIImageView обрабатывает флаги вращения изображения. Я не могу найти изменения, упомянутые где-нибудь, но, по крайней мере, ниже приведен код. Taken from here.

- (UIImage*)rotateImage:(UIImage*)sourceImage clockwise:(BOOL)clockwise 
{ 
    CGSize size = sourceImage.size; 
    UIGraphicsBeginImageContext(CGSizeMake(size.height, size.width)); 
    [[UIImage imageWithCGImage:[sourceImage CGImage] 
         scale:1.0 
        orientation:clockwise ? UIImageOrientationRight : UIImageOrientationLeft] 
    drawInRect:CGRectMake(0,0,size.height ,size.width)]; 

    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
0

Если вам нужно изменить ориентацию CIImage, попробуйте это.

let newCIImage: CIImage 
if #available(iOS 11.0, *) { 
    newCIImage = myCIImage.oriented(.right) 
} else { 
    newCIImage = myCIImage.oriented(forExifOrientation: Int32(CGImagePropertyOrientation.right.rawValue)) 
} 
Смежные вопросы