Bunun, ALAssetsLibrary'i ilk defa kullanıyorum diyerek bunu ön izlememize izin verin. Kullanıcının kayıtlı fotoğraf galerisinde en son fotoğrafa erişmem gerekiyor. Bunu yapmak için, bir ALAssetsLibrary örneği oluşturmalı ve son görüntüyü seçmeden önce kullanıcının galerisindeki her öğe üzerinde yinelemeliyim. Bu her zaman en kötü durum senaryosudur. Bu probleme yaklaşmanın daha hızlı/daha iyi bir yolu var mı?ALAssetsLibrary ile tek bir görüntüye erişme
cevap
Kullanıcının galerisinde fotoğrafları numaralandırmak yok. ALAssetsGroup sınıfı, numaralandırmak istediğiniz varlıkları belirtmek için kullanabileceğiniz - (void)enumerateAssetsAtIndexes:(NSIndexSet *)indexSet options:(NSEnumerationOptions)options usingBlock:(ALAssetsGroupEnumerationResultsBlock)enumerationBlock
yöntemine sahiptir.
Sizin durumunuzda, yalnızca sonuncu set upSetSet [NSIndexSet indexSetWithIndexesInRange:NSMakeRange([group numberOfAssets]-1, [group numberOfAssets])
için burada ALAssetsGroup grubudur.
@mithuntnt belirtildiği gibi, [[assetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop)
tek numaralandırma yöntemi yoktur. Yani bu tek yol.
Son içe aktarılan fotoğraflara ihtiyacım vardı. Buna benzer bir filtreniz olabilir.
[[assetsLibrary] enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if(group)
{
NSString * groupName = [group valueForProperty:ALAssetsGroupPropertyName];
if([@"Last Import" isEqualToString:groupName])
{
*stop = true;
...
bu konuda ne kullanarak fotoğraf kütüphanesi için ALAssetsGroup alabilirsiniz: Bir numaralandırma eğer
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result) {
*stop = YES;
//...
}
}];
kabul cevap görünmüyor çalışmak Bir filtre ayarladığınız ALAssetGroup
([group numberOfAssets]
, filtrelemeden sonra toplam varlıkları değil, toplam varlıkları döndürür). ! O döndü ALAsset = nil kontrol etmek
completionBlock
yılında
typedef void(^SMKMostRecentPhotoCompletionBlock)(ALAsset *asset);
- (void)mostRecentPhotoWithCompletionBlock:(SMKMostRecentPhotoCompletionBlock)completionBlock
{
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
__block ALAsset *mostRecentPhoto = nil;
if (group)
{
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if (result != NULL)
{
mostRecentPhoto = result;
*stop = YES;
}
}];
}
if (completionBlock)
{
completionBlock(mostRecentPhoto);
}
} failureBlock:^(NSError *error) {
if (completionBlock)
{
completionBlock(nil);
}
}];
}
, emin olun:
bunu kullandım.- 1. Sadece ALAssetsLibrary
- 2. Bağlantı oluşturulamıyor ALAssetsLibrary
- 3. ALAssetsLibrary enumerateGroupsWithTypes: - İş parçacığı eşitlemesi
- 4. ALAssetsLibrary gibi PHPhotoLibrary nasıl kullanılır
- 5. iOS'ta her üç BLE reklam kanalına tek tek erişme
- 6. Görüntüye sunucu yükleyemiyor Resim
- 7. UIBUTON özelliğine sahip bir UICollectionViewCell neden tek renkli/renkli bir görüntüye sahip?
- 8. Bir görüntü ile bir dikdörtgen doldurmak mümkün olduğum tek görüntü
- 9. Bir görüntüye nasıl bir .click() olayı eklerim?
- 10. Bir tiff'i bir tamponlu görüntüye dönüştürün (Java)
- 11. Python'da bir görüntüye nasıl bir DCT uygularım?
- 12. Java ile akıllı kartlara erişme
- 13. JSONP ile Wikipedia API'ye erişme
- 14. php GD görüntüye dolgu ekleme
- 15. Form değerlerine JavaScript ile erişme
- 16. OCR, bir görüntüye HTML yerleştirir mi?
- 17. Resimdeki görüntüye bir renk filtresi eklemek istiyorum
- 18. Hızlı yay animasyonunda bir görüntüye nasıl eklenir?
- 19. Python'dan bir MySQL veritabanına erişme
- 20. onun drawableLeft görüntüye
- 21. Wordpress'te Bir Görüntüye A Kategorisini Atama
- 22. imshow opencv kullanarak görüntüye bir görüntü uydurma
- 23. WPF denetimini bir görüntüye nasıl dönüştürebilirim?
- 24. Python'u kullanarak bir görüntüye nasıl köprü ekleyebilirim?
- 25. Resimde görüntüye belirli bir noktaya git
- 26. Swift'de bir görüntüye nasıl etiket ekleyebilirim?
- 27. Java'da bir MidiDevice'e erişme
- 28. Bir hash ile önceden sabitlenmiş bir JSON değişkenine erişme (#)
- 29. JFileChooser resmi arabelleğe alınmış görüntüye
- 30. Temel64 dizesini Java'daki Görüntüye dönüştürün
Sağol! Tam da aradığım şey bu. – Jacob
Bunu kullanıyorsanız, yukarıdaki yanıttaki küçük hata. NSMakeRange ([group numberOfAssets] -1, [group numberOfAssets]), NSMakeRange olmalıdır ([group numberOfAssets] -1, 1) (nsmakerange'ın ikinci param sayısı, end endeksi değil). Alternatif olarak, [NSIndexSet indexSetWithIndex: [group numberOfAssets] -1] biraz daha verimli. –