2

我正在开发一个应用程序,它允许您选择照片并将它们放置在不同的位置。工作流程基本上是:

  1. 点击屏幕的某个区域
  2. UIImagePickerController显示
  3. 选择一张照片
  4. 照片显示在屏幕的点击区域

我希望这样,如果用户第二次执行此工作流程,则UIImagePickerController显示时将显示用户上次所在的同一专辑以及该专辑中的位置。

我尝试保存对 和 的引用UIImagePickerControllerUIPopoverController以便它们只创建一次。但是,每次我展示包含 的弹出框时UIImagePickerController,它都会回到主照片菜单(例如,相机胶卷、照片库、我的照片流)。

关于如何实现我所追求的任何想法?

4

5 回答 5

1

您可以使用ALAssetsLibrary。但这会花费你更多的精力。第一次使用– enumerateGroupsWithTypes:usingBlock:failureBlock:列出所有专辑并记住用户的选择。而在第二次。只需使用该专辑:ALAssetsGroup列出– enumerateAssetsUsingBlock:所有图像和视频。Apple 有几个 demo 你可以看看PhotosByLocation MyImagePicker

于 2012-11-08T12:43:28.637 回答
1

在 .h 类中保留一个UIImagePickerControllerobj(例如imagePicker

分配 obj 一次(例如在 中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 回答
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 回答
0

只是为了给你指出正确的方向。您可以使用资产库将图像显示为选择器。您可以使用苹果示例代码MyImagePicker。该方法[[assetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)可用于相册。使用资产库,您可以检查最后选择了哪个图像,然后使用该方法,

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

您下次可以使用此方法来枚举您想要枚举的图像。此方法可以接受一个 indexSet 作为[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(index, count)]它应该有助于指示最后选择的图像。

要了解有关如何使用资产库的更多信息,请查看此

于 2012-11-11T10:11:17.097 回答