0

我已经使用 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];
}
4

2 回答 2

2

您正在使用单个 UIImageView 组件来显示图像,每次选择图像时,它将被最新的图像覆盖。

有多种方法可以显示多个图像。

  1. 当您在(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info函数中获取图像时,您可以动态创建 UIImageView 组件。

  2. 您可以使用 NSMutableArray 来放置所有图像并可以在 UITableView 中显示。

  3. 或者,您可以在 ScrollView 中添加图像视图。

但最终你将需要多个 UIImageView 组件来显示多个图像而不是一个。

希望这可以帮助。

于 2013-02-05T07:01:58.207 回答
0

您可以使用资产库从照片库中获取所有图像,

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]];
于 2013-02-05T07:09:32.600 回答