2

UIImagePickerControllerを使用してフォトライブラリから複数の画像を選択できるようにしようとしています。フォトピッカーの下部にサブビューを追加して、このアプリのように見せたいと思います。

それはあなたがそれをすることができる簡単な方法がありますか?私のコードは現在、標準的な方法で画像をポップするだけですが、6つの画像をロードしたときにのみコントローラーを閉じます

重要なのは、例のように、フォトピッカービューに小さなビュー/ツールバーを追加できる場合は、残りの作業を実行できることです。

外観の例-下部にカスタムツールバーがあります

    - (void)getMediaFromSource:(UIImagePickerControllerSourceType)sourceType{
      //get all available source types
      NSArray *mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:sourceType];

      //if source type available and supported media type is not null
      if ([UIImagePickerController isSourceTypeAvailable:sourceType
           && [mediaTypes count] > 0]) {

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        //picker.mediaTypes = mediaTypes;   //allow videos
        picker.delegate = self;
        picker.sourceType = sourceType; //set source type to the given type

        /** WANT TO ADD A CUSTOM VIEW IN THE PHOTO PICKER VIEW **/

        [self presentViewController:picker animated:YES completion:nil];
      } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error accessing media"
                                                        message:@"Device doesn't support that media type"
                                                       delegate:nil
                                              cancelButtonTitle:@"Drat !"
                                              otherButtonTitles: nil];
        [alert show];
      }
    }

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
      self.lastChosenMediaType = [info objectForKey:UIImagePickerControllerMediaType];  //record media type

      //if media type is image
      if ([lastChosenMediaType isEqual:(NSString *) kUTTypeImage]) {
        UIImage *chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];    //load image

        //save the image if is from camera shot
        if (imageOrVideoSourceType == UIImagePickerControllerSourceTypeCamera) {
          UIImageWriteToSavedPhotosAlbum (chosenImage, nil, nil , nil);
        }

        [images addObject:chosenImage]; //add to image list
        imageNum++;
      }

      changeImageOrVideo = true;

      if(imageNum >= 5){
          [picker dismissViewControllerAnimated:YES completion:nil];
      }
    }
4

1 に答える 1

4

UIImagePickerControllerを上にシフトし、選択した画像を下に表示するなどのハックを使用する主な理由は、アセットライブラリの代替手段では、写真が撮影された場所に関する情報が画像メタデータで利用可能であるため、ユーザーが場所へのアクセスを求められるためです。

iOS 6では、ユーザーはアプリが自分の写真(場所ではなく)にアクセスできるようにするかどうかを尋ねられ、アセットライブラリアプローチとUIImagePickerControllerアプローチの両方でこの質問が表示されます。

そのため、上記のようなハックはその有用性の終わりに近づいていると思います。他にもアセットライブラリを使用して複数の画像を選択できるライブラリへのリンクは次のとおりです。

于 2012-10-26T22:38:07.583 に答える