如何使用imageview在iphone中显示相册照片

时间:2013-02-05 06:56:17

标签: iphone ios objective-c

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

  4. 但最终你需要多个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]];