2

写真を選択して別の位置に配置できるアプリを開発しています。ワークフローは基本的に次のとおりです。

  1. 画面の領域をタップします
  2. UIImagePickerControllerディスプレイ
  3. 写真を選択
  4. 画面のタップ領域に写真が表示されます

ユーザーがこのワークフローを 2 度目に実行するUIImagePickerController場合、表示されるときに、ユーザーが最後にいたのと同じアルバムとそのアルバム内の位置が表示されるようにしたいと思います。

UIImagePickerController、およびへの参照を保存して、UIPopoverController一度だけ作成されるようにしました。ただし、 を含むポップオーバーを表示するたびにUIImagePickerController、メインの写真メニュー (カメラ ロール、フォト ライブラリ、マイ フォト ストリームなど) に戻ります。

私が求めているものを達成する方法についてのアイデアはありますか?

4

5 に答える 5

1

UIImagePickerControllerobj を .h クラスに保持します(例imagePicker)

obj を 1 回割り当てます (たとえばviewDidLoad)

imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self; 
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self.view addSubview:imagePicker.view];
imagePicker.view.hidden = YES;
imagePicker.view.frame  = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
imagePicker.view.bounds  = CGRectMake(0,20,self.view.frame.size.width, self.view.frame.size.height);

didFinishPickingMediaWithInfo

if([[info valueForKey:UIImagePickerControllerMediaType] isEqualToString:@"public.image"]){
    imagePicker.view.hidden = YES;
}

imagePickerViewジャストドゥを見せたい時

imagePicker.view.hidden = NO;
于 2012-11-09T12:49:25.707 に答える
1

ALAssetsLibraryを使用できます。しかし、これにはより多くの労力がかかります。– enumerateGroupsWithTypes:usingBlock:failureBlock:すべてのアルバムを一覧表示し、ユーザーの選択を記憶するために初めて使用します。そして2回目。その album: を使用するだけで、すべてALAssetsGroup– enumerateAssetsUsingBlock:画像とビデオを一覧表示できます。Apple には、 PhotosByLocation MyImagePickerを見ることができるいくつかのデモがあります。

于 2012-11-08T12:43:28.637 に答える
0

あなたを正しい方向に向けるだけです。アセット ライブラリを使用して、画像をピッカーとして表示できます。Appleのサンプル コードMyImagePickerを使用できます。この方法[[assetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)はフォト アルバムに使用できます。アセット ライブラリを使用すると、最後に選択された画像を確認してから、メソッドを使用できます。

- (void)enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock;

次回はこのメソッドを使用して、列挙する画像以降を列挙できます。[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(index, count)]このメソッドは、最後に選択された画像を示すのに役立つindexSet を受け入れることができます。

アセット ライブラリの使用方法の詳細については、こちらを確認してください。

于 2012-11-11T10:11:17.097 に答える
0

UITableView結果に到達して、その内容のオフセットを見つけることができるはずです。UIImagePickerControllerこれを行うには、のviewプロパティのサブビューでテーブル ビューを検索します。

for (UIView *view in controller.view) {
  if ([view isKindOfClass:[UITableView class]]) {
    contentOffset = [(UITableView *)view contentOffset];
  }
}

ビュー コントローラを表す場合、同様の方法でコンテンツ オフセットを復元する必要があります。

のビュー階層を確認するために実際にテストしていないことに注意してくださいUIImagePickerController。サブビューを出力して構造を確認します。また、プライベート実装に飛び込むため、構造が同じままであるという保証もありません (ただし、実際にはプライベート API を使用していないため、これは問題ありません)。

于 2012-10-31T06:56:36.957 に答える
0

AlAssetsLibrary を使用します。アプリケーションの下で画像とビデオのキャプチャを制御します。アップルのデモがあります。

https://developer.apple.com/library/ios/#documentation/AssetsLibrary/Reference/ALAssetsLibrary_Class/Reference/Reference.html

これを探すか、

画像とビデオのカスタマイズ アルバムを作成する場合は、ここが良い例です。

https://github.com/Kjuly/ALAssetsLibrary-CustomPhotoAlbum

于 2012-11-09T01:42:02.157 に答える