아래 코드를 사용하여 UIView를 UIImage로 변환하려고합니다.renderincontext 메인 스레드에서 사용하지 않으면 메모리 누수가 발생했습니다.
+ (UIImage *) imageWithView:(UIView *)view{
float scale = 1.0f;
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
view.layer.contents = nil;
return img;
}
이 코드에는 두 가지 문제점이 있습니다.
1. 나는 renderInContext가 백그라운드 스레드에서 호출 될 때 메모리 누수 문제에 직면
배경 스레드 (! mainThread)에서이 코드를 실행합니다.
2. 메인 스레드에서이 코드를 실행하면
아무 메모리 누수가 없지만 아이 패드 3에 내가 (내 UI가이 메서드를 호출 할 때 응답)으로 UIView에서 이미지를 생성하는 동안 몇 가지 성능 문제에 직면하고있다 . UI가 멈추도록 초당 5 번 이상이 함수를 호출해야하므로 매우 나쁜 사용자 경험을 제공합니다.
내가 여기 뭔가 잘못하고있다면 안내를 해 주시겠습니까?
샘플 코드를 보았습니까? 'outputImage'는'imageWithCGImage :'를 통해'UIImage'를 생성하는 데 사용할 수있는 CGImageRef입니다.하지만 주 스레드에서 마지막 단계를 수행해야합니다 ... – sergio
혼란이 있습니다. UIView로 변환하고 싶습니다. UIImage. –
아우 ... 당신 말이 맞아 ... 제발, 제 편집 된 코드를보십시오. 이 일을해야합니다. – sergio