В моем приложении, когда я использую UIImagePickerController, я изменяю размер изображения, взятого из сборщика, чтобы уменьшить его с самого большого размера, с которого он начинается. На iPhone и iPod Touch он отлично работает, и есть небольшое отставание. Однако, поскольку экран iPad намного больше, он занимает MUCH, MUCH больше, так как я изменяю его размер в соответствии с пикселями.Изменение размера UIImage занимает много времени?
Это мой код:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGFloat screenScale = [[UIScreen mainScreen] scale];
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
UIGraphicsBeginImageContext(screenSize);
[image drawInRect:CGRectMake(0,0,screenSize.width,screenSize.height)];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
[currentDefaults setObject:UIImagePNGRepresentation(newImage) forKey:@"newImageKey"];
[currentDefaults synchronize];
[popoverController dismissPopoverAnimated:YES];
[picker dismissModalViewControllerAnimated:YES];
}
Есть ли способ, чтобы изменить его быстрее или сделать его другим способом, так что пользователь не заметит отставание, когда система изменения размера больших изображений?
Спасибо!
Спасибо, что этот код работал отлично, но можете ли вы показать мне пример того, что вы имеете в виду для своего второго совета? –
Также есть способ иметь обратный вызов для dispatch_async, чтобы я мог показать UIAlertView, когда это будет сделано? –
Nevermind, я закончил тем, что нашел ответы на все эти вопросы, так что теперь он отлично работает! –