0

我正在试验社会框架。我想知道是否有任何可能的方法可以使用我的应用程序中的此实现附加上一张拍摄并当前保存在相机胶卷中的照片:

 - (IBAction)shareByActivity:(id)sender {
    NSArray *activityItems;

    if (self.sharingImage != nil) {
        activityItems = @[self.sharingImage, self.sharingText, self.addURL];
    } else {
        activityItems = @[self.sharingText, self.addURL];
    }

    UIActivityViewController *activityController =
    [[UIActivityViewController alloc] initWithActivityItems:activityItems
                                      applicationActivities:nil];

    [self presentViewController:activityController
                       animated:YES completion:nil];
}

如果是这样,我该如何修改我的shareImage特定部分中的名称-(void)viewDidLoad

self.sharingImage = [UIImage imageNamed:@"notSureWhatToPutHere"];

一切正常,社交面板打开并提供所有需要的服务。我唯一的要求是找出如何从相机胶卷中调用最新图像。我不确定我是否需要图像真实姓名,或者是否有任何其他方式来实现我想要的:附有图片的帖子(相机胶卷中的最新图片)。

任何帮助表示赞赏。

4

2 回答 2

0

您可以使用资产库框架轻松获取相机胶卷中的最后一张图像。试试这个:

#import <AssetsLibrary/AssetsLibrary.h>

然后获取图像:

ALAssetsLibrary *cameraRoll = [[ALAssetsLibrary alloc] init];
[cameraRoll enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *images, BOOL *stop) {
    [images setAssetsFilter:[ALAssetsFilter allPhotos]];
    [images enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:[images numberOfAssets] - 1] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop){
        if (result) {
            ALAssetRepresentation *rep = [result defaultRepresentation];
            self.sharingImage = [UIImage imageWithCGImage:[rep fullScreenImage]];
        }
    }];


}
                        failureBlock: ^(NSError *error) {
                            NSLog(@"An error occured: %@",error);
                        }];
于 2012-10-27T04:18:11.660 回答
0

感谢 NSPostWhenIdle 的大力帮助!

通过将我ALAssettsLibrary的代码块移开viewDidLoad并创建一个refreshAlbum

 - (void) refreshAlbum
{
ALAssetsLibrary *cameraRoll = [[ALAssetsLibrary alloc] init];
[cameraRoll enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *images, BOOL *stop) {
    [images setAssetsFilter:[ALAssetsFilter allPhotos]];
    [images enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:[images numberOfAssets] - 1] options:0 usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
     {
         if (result) {

             ALAssetRepresentation *rep = [result defaultRepresentation];
             self.sharingImage = [UIImage imageWithCGImage:[rep fullScreenImage]];
         }
     }];
}
                        failureBlock: ^(NSError *error) {
                            NSLog(@"An error occured: %@",error);
                        }];
}

然后我从启用 shareByActivity 的同一个按钮调用新创建的 refreshAlbum

- (IBAction)refreshButton:(id)sender {
    [self refreshAlbum];
}

这项工作特别好,因为我的应用程序在启动时没有任何图片要分享。第一次imageShare可用是在激活shareByActivity现在也带有该refreshButton功能的按钮之后!

再次感谢,这真的有效。

于 2012-10-28T00:41:42.757 回答