Получить изображение по URL-адресу и отобразить его в галерее изображений AlAsset

Я знаю, что этот вопрос может быть задан много раз, но я новичок, поэтому будьте любезны быть нежными - это скромная просьба.

Я пытаюсь создать галерею изображений, в которой отображаются все изображения URL-адреса.

Я использовал всю структуру ресурсов и создал простую галерею, которая возвращает изображения с камеры, я хочу иметь изображение некоторого URL-адреса, поэтому, пожалуйста, помогите мне получить изображения с URL-адреса и отобразить их в галерее изображений.

Вот файл заголовка контроллера представления

#import <UIKit/UIKit.h>
#import <AssetsLibrary/AssetsLibrary.h>

@interface ViewController : UIViewController <UICollectionViewDelegate,UICollectionViewDataSource>
@property (retain, nonatomic) IBOutlet UICollectionView *collectionView;
@property(nonatomic, strong) NSArray *assets;

Вот файл реализации, в котором я зарегистрировал файл .NIB для добавления ячейки в мой CollectionView

#import "ViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>
#import "MyCell.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.collectionView registerNib:[UINib nibWithNibName:@"MyCell" bundle:nil] forCellWithReuseIdentifier:@"CELL"];





_assets = [@[] mutableCopy];
__block NSMutableArray *tmpAssets = [@[] mutableCopy];
// 1

здесь вызывается метод defaultAssetsLibrary, который вы увидите позже

 ALAssetsLibrary *assetsLibrary = [ViewController defaultAssetsLibrary];
    // 2
    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {


  if(result)
            {

                // 3
                [tmpAssets addObject:result];
            }
        }];

        // 4
        //NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
        //self.assets = [tmpAssets sortedArrayUsingDescriptors:@[sort]];
        self.assets = tmpAssets;

        // 5
        [self.collectionView reloadData];
    } failureBlock:^(NSError *error) {
        NSLog(@"Error loading images %@", error);
    }];



}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#pragma mark - collection view data source


- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return self.assets.count;
}

// The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:



- (MyCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CELL" forIndexPath:indexPath];

    ALAsset *asset = self.assets[indexPath.row];
    cell.asset = asset;
    cell.backgroundColor = [UIColor redColor];
    ////
    //=


    cell.cellLabel.text = [NSString stringWithFormat:@"cell %i",indexPath.row];
    return cell;
}

- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    ALAsset *asset = self.assets[indexPath.row];
    ALAssetRepresentation *defaultRep = [asset defaultRepresentation];
    UIImage *image = [UIImage imageWithCGImage:[defaultRep fullScreenImage] scale:[defaultRep scale] orientation:0];

    // Do something with the image

}

А вот и тот метод, которым я думаю вернуть фототеку

+ (ALAssetsLibrary *)defaultAssetsLibrary
{


    static dispatch_once_t pred = 0;
    static ALAssetsLibrary *library = nil;
    dispatch_once(&pred, ^{
        library = [[ALAssetsLibrary alloc] init];
    });
    return library;
}

Пожалуйста, помогите мне получить изображения с URL-адреса и отобразить их в галерее изображений.

Что касается файла MyCell.

Вот файл MYCell.m

@interface MyCell ()
// 1
@property(nonatomic, strong) IBOutlet UIImageView *photoImageView;
@end

@implementation MyCell

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void) setAsset:(ALAsset *)asset
{


    // 2
    _asset = asset;
    self.photoImageView.image = [UIImage imageWithCGImage:[asset thumbnail]];
    }

person Exception    schedule 05.12.2013    source источник
comment
Плохой тон - удалить вопрос, а затем задать его снова. Все полезные комментарии к вашему последнему вопросу теперь потеряны. Не тратьте время людей.   -  person rmaddy    schedule 06.12.2013
comment
Я попытался опубликовать лучший вопрос, я знаю, что он должен иметь NSURl, но я хочу знать, что следует отредактировать в существующем коде, поскольку я не очень эксперт, как вы, товарищ @rmaddy, и я надеюсь, что решение этого вопроса будет ответом для дюжины людей запросы.   -  person Exception    schedule 06.12.2013
comment
Ваш код успешно отображает изображения, сохраненные в вашей фотопленке, и вы хотите только сохранить все изображения с URL-адреса в вашу фотопленку и отображать их оттуда?   -  person Ayan Sengupta    schedule 06.12.2013
comment
нет, я просто хочу отображать изображения с URL bhai @AyanSengupta   -  person Exception    schedule 06.12.2013
comment
и да, он отображает изображения, хранящиеся в фотопленке @AyanSengupta   -  person Exception    schedule 06.12.2013
comment
Во-первых, я не вижу причин, по которым вы должны использовать для этого ALAssetLibrary. Если вы хотите отображать изображения только с URL-адреса в виде таблицы, я думаю, что эта ссылка может вам помочь. . Это немного исчерпывающе, но очень эффективно. Удачного кодирования.   -  person Ayan Sengupta    schedule 06.12.2013
comment
Я не знаю причину, но я хочу что-то вроде галереи, которую вы знаете, например, это что отображаемые изображения имеют формат галереи   -  person Exception    schedule 06.12.2013
comment
Не понял, что ты задумал? Вам нужно только заполнить свои изображения в UICollectionView вместо UITableView, и все остальные процессы должны быть такими же, как по ссылке, которую я дал выше.   -  person Ayan Sengupta    schedule 06.12.2013
comment
я не понял, что я хочу иметь изображение какого-то URL-адреса...   -  person Shamsudheen TK    schedule 09.12.2013
comment
В этом руководстве хорошо описывается, создание галереи изображений.   -  person Shamsudheen TK    schedule 09.12.2013


Ответы (1)


Если мы получаем изображения по URL-адресу, нам действительно не нужно AlAsset для галереи изображений.

Я следовал этому руководству, чтобы сделать галерею изображений Guide, и Simple передал массив URL, и это сработало для меня.

person Exception    schedule 09.01.2014