Простое решение состоит в том, чтобы сохранить исходное изображение в папку и присвоить уменьшенное изображение, чтобы Scrollview. Это решение позволит вам добавить большее количество изображений в scrollview с минимальным использованием памяти.Вот пример кода
- (IBAction) selectImageBtnClicked: (идентификатор) отправитель {
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:nil];
[picker release]; }
- (Недействительными) imagePickerController: (UIImagePickerController *) Высотные didFinishPickingMediaWithInfo: (NSDictionary *) Информация {
[picker dismissViewControllerAnimated:YES completion:nil];
[[picker parentViewController] dismissViewControllerAnimated:YES
завершение: ноль];
UIImage *pTakenImage = [info objectForKey:UIImagePickerControllerEditedImage];
if (!pTakenImage)
pTakenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
[self performSelectorOnMainThread:@selector(proceedFURTHER:)
withObject: pTakenImage waitUntilDone: NO]; }
- (недействительными) proceedFURTHER: (UIImage *) pTakenImage { UIImage * pResizedImage = [собственной resizeImageToMaxSize: 640,0 Animage: pTakenImage];
[self saveOriginalImageToDir:pTakenImage];
//add pResizedImage to your scrolview here
[self.navigationController popViewControllerAnimated:YES]; }
- (UIImage *) resizeImageToMaxSize: (CGFloat) макс Animage: (UIImage *) Animage {
NSData * imgData = UIImageJPEGRepresentation(anImage, 1);
CGImageSourceRef imageSource =
CGImageSourceCreateWithData ((CFDataRef) imgData, NULL); if (! ImageSource) return nil;
CFDictionaryRef options =
(CFDictionaryRef) [NSDictionary dictionaryWithObjectsAndKeys:
(ID) kCFBooleanTrue, (ID) kCGImageSourceCreateThumbnailWithTransform,
(ID) kCFBooleanTrue, (ID) kCGImageSourceCreateThumbnailFromImageIfAbsent,
(ID) [ NSNumber numberWithFloat: max], (id) kCGImageSourceThumbnailMaxPixelSize, nil];
CGImageRef imgRef =
CGImageSourceCreateThumbnailAtIndex (ImageSource, 0, опционы);
UIImage* scaled = [UIImage imageWithCGImage:imgRef];
CGImageRelease(imgRef);
CFRelease(imageSource);
return scaled;
}
- (NSString *) getOriginalImageDirectoryPath {
NSArray * дорожки = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory, NSUserDomainMask, ДА);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath =
[documentsPath stringByAppendingPathComponent: @ "scaledimage.png"];
return filePath; }
- (Недействительными) saveOriginalImageToDir: (UIImage *) изображение {
NSString *filePath = [self getOriginalImageDirectoryPath];
if([[NSFileManager defaultManager] fileExistsAtPath:filePath])
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
NSData *data = UIImagePNGRepresentation(image);
[data writeToFile:filePath atomically:YES];
data = nil; }
Ленивая загрузка и делает эскизы изображения, когда не отображается на весь экран. – rckoenes