如何在相机滚动选择器中包含UIImagePickerController,类似于facebook和path所做的(见截图)。我只是想指向正确的方向,而不是专门寻找如何实现这一目标的代码..谢谢!
答案 0 :(得分:2)
我猜他们正在使用UICollectionView
并检查UICollectionViewCell
中的第一个collectionView:cellForItemAtIndexPath:
。当UICollectionViewDelegate
创建第一个单元格时,他们在该单元格上指定了一个按钮,按下时会显示UIImagePickerController
。
重要:强>
如果您决定使用额外的单元格设计自己的照片浏览器,请确保在项目数量为UICollectionViewDataSource方法中为+1。
E.g。
- (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;
}
这是基于他们创建了自己的专辑并且没有使用默认相机胶卷的假设。另外,我没有使用脸书或路径,所以我不确定他们是如何展示这张专辑的。这意味着,我不知道在UIImagePickerController中按下相机胶卷按钮时是否显示该相册。如果是这样,Facebook很可能会访问私有API,或者他们正在使用自己的相机覆盖,然后显示他们的自定义相册。
以下是Apple的一些示例代码,用于实现自定义相机覆盖。
修改强>
经过进一步调查后,您似乎必须创建自己的照片浏览器才能完成此操作。根据UIImagePickerController类参考:
创建用于浏览照片的完全自定义的图像选择器 库,使用Assets Library框架中的类。例如, 您可以创建一个显示更大缩略图的自定义图像选择器 图像,利用EXIF元数据,包括时间戳和 位置信息,或与其他框架集成的信息 地图套件。有关更多信息,请参阅资产库框架参考。 可以使用Assets Library框架进行媒体浏览 从iOS 4.0开始
所以理论上,您可以使用资源库创建自己的照片浏览器,从相机胶卷加载图像,并在显示UIImagePickerController的第一个(或任何一个)单元格中插入一个按钮,如上所述。 / p>
<强>参考:强>
完全自定义媒体捕获和浏览
祝你好运!希望这有帮助!