ios UIImagePickerController里面的相机滚动?

sud*_*udo 5 uiimagepickercontroller ios camera-roll

如何在相机卷选择器中包含UIImagePickerController,类似于facebook和path所做的(见截图).我只是想指向正确的方向,而不是专门寻找如何实现这一点的代码..谢谢!

在此输入图像描述

Jon*_*han 2

我的猜测是他们正在使用 aUICollectionView并检查 中的第UICollectionViewCell一个collectionView:cellForItemAtIndexPath:。当创建第一个单元格时,他们在该单元格上指定了一个按钮,按下时UICollectionViewDelegate显示。UIImagePickerController

重要的:

如果您决定使用额外的单元格设计自己的照片浏览器,请务必在 UICollectionViewDataSource 方法中的项目数+1。

例如

- (void)showImagePicker:(id)sender
{
    // Present the UIImagePickerController
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return [self.photos count] + 1;
}    

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0)
    {
        // You could also just as easily add a button to a UICollectionViewCell
        // Instead of creating a custom subclass.
        CameraButtonCell * cell = ...;
        [cell.button addTarget:self action:@selector(showImagePicker:) forControlEvents:UIControlEventTouchUpInside];

        return cell;
    }

    UICollectionViewCell * cell = ...;

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

这是基于他们创建了自己的相册并且不使用默认相机胶卷的假设。另外,我不使用 facebook 或 path,所以我不确定他们如何显示该专辑。意思是,我不知道在 UIImagePickerController 中按下相机胶卷按钮时是否会显示该相册。如果是这样,Facebook 很可能可以访问私有 API,或者他们正在使用自己的相机覆盖层,然后显示他们的自定义相册。

以下是 Apple 提供的一些示例代码,用于实现自定义相机覆盖层。

https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010196

编辑:

经过进一步调查,您似乎必须创建自己的照片浏览器才能完成此操作。根据 UIImagePickerController 类参考:

要创建完全自定义的图像选择器来浏览照片库,请使用资产库框架中的类。例如,您可以创建一个自定义图像选择器来显示更大的缩略图,利用 EXIF 元数据(包括时间戳和位置信息),或者与 Map Kit 等其他框架集成。有关更多信息,请参阅资产库框架参考。从 iOS 4.0 开始,可以使用资产库框架进行媒体浏览

因此,理论上,您可以使用资源库创建自己的照片浏览器来加载相机胶卷中的图像,并在第一个(或任何一个)显示 UIImagePickerController 的单元格中插入一个按钮,就像我上面提到的那样。

参考:

完全定制的媒体捕获和浏览

https://developer.apple.com/library/ios/documentation/uikit/reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html

祝你好运!希望这有帮助!