0

我正在試驗社會框架。 我在想,如果有附加採取與目前正在使用從我的應用程序這種實現保存在相機膠捲的最後一張照片的任何可能的方式:IOS社交框架和圖像職位

- (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"]; 

一切正常,社交面板打開並具有所有必需的服務。我唯一的要求是瞭解如何從相機膠捲中調用最新的圖像。 我不確定是否需要圖像真實姓名,或者是否有其他方法可以實現我想要的效果:附帶圖片的帖子(最近的照片卷)。

任何幫助表示讚賞。

回答

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); 
         }]; 
+0

正是我在尋找的,非常感謝,它完美的作品。 – user1738407

+0

在我的具體實施中,看起來像傳遞的照片不是最後一次在相機膠捲中保存的照片。第一次效果很好,但是當新照片保存到相機膠捲時,SharingImage的照片不會更新。從某種意義上說,當應用程序啓動時,卡在相機膠捲中最後一張照片上。我應該發佈刷新任何東西,讓它更新,並始終選擇最新的相機膠捲照片? – user1738407

+0

換句話說,我將如何使用ALAssetsLibraryChangedNotification? – user1738407

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); 
         }]; 
} 

然後我打電話從新創建refreshAlbum使相同的按鈕啓用shareByActivity

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

這工作特別好,因爲我的應用程序沒有任何圖片共享,因爲它啓動。 imageShare首次啓用後,激活shareByActivity按鈕,現在攜帶refreshButton函數!

再次感謝,這真的工作。