我使用Imagepickerview控制器选择照片并使用imageview在uiview中显示它但我的问题是使用imageview只有一个图像能够显示不是两个。 如果我选择第二个,它会继续更换现有的。请提供一些如何显示两张照片的建议。
here is my source code.
-(void) ViewDidLoad
{
attachPhotoBtn = [UIButton buttonWithType:UIButtonTypeCustom];
attachPhotoBtn.frame = CGRectMake(400, 125, 44, 44);
UIImage *attachImg = [UIImage imageNamed:@"album_add_off.png"];
[attachPhotoBtn setImage:attachImg forState:UIControlStateNormal];
[attachPhotoBtn addTarget:self action:@selector(attachPhoto:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:attachPhotoBtn];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 125, 64, 52)];
// imageView.backgroundColor = [UIColor greenColor];
[self.view addSubview:imageView];
}
}
- (IBAction)attachPhoto:(id)sender {
[sender setImage:[UIImage imageNamed:@"album_add.png"] forState:UIControlStateNormal];
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
UIImagePickerController *imagePicker =[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,(NSString *)kUTTypeVideo,nil];
imagePicker.allowsEditing = NO;
// On iPad use pop-overs.
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
_popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[_popover presentPopoverFromRect:attachPhotoBtn.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
}
}
else
{
// On iPhone use full screen presentation.
// [[self presentingViewController] presentViewController:imagePicker animated:YES completion:nil];
}
newMedia = NO;
}
#pragma mark Image picker controller delegate methods
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
// [self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
imageView.image = image;
[picker dismissViewControllerAnimated:NO completion:nil];
}
答案 0 :(得分:2)
您正在使用单个UIImageView组件来显示图像,每次您将选择一个图像,它将被最新的图像覆盖..
有多种方式可以显示多个图像。
您可以在(void)中获取图像时动态创建UIImageView组件imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info function ..
您可以使用NSMutableArray放置所有图像,并可以在UITableView中显示。
或者,您可以在ScrollView中添加图像视图。
但最终你需要多个UIImageView组件来显示多个图像而不是一个。
希望这有帮助。
答案 1 :(得分:0)
您可以使用assest库
从照片库中获取所有图像<强> 1。添加AssetsLibrary.framework
<强> 2。 #import“AssetsLibrary / AssetsLibrary.h”
第3。得到所有结果数组
这是代码
void (^myAssetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL)
{
NSLog(@"See Asset: %@", result);
if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
{
[assetsArray addObject:result];
}
}
};
//This block of code used to enumerate ALAssetsGroup.
void (^myAssetGroupEnumerator)( ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
[group enumerateAssetsUsingBlock:myAssetEnumerator];
[self createScrollView];//Or you can use your `assetsArray` data, in UITableView,UICollectionView
}
//[activity stopAnimating];
// [activity setHidden:YES];
};
library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:myAssetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}
];
<强> 4。获取缩略图
ALAsset *asset=[assetsArray objectAtIndex:i];
UIImage*image = [UIImage imageWithCGImage:[asset thumbnail]];