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アクティブにした後です!shareByActivityrefreshButton

繰り返しますが、これは本当にうまくいきます。

于 2012-10-28T00:41:42.757 に答える