Создайте массив UiImageVIews для подачи iCarousel из 2 массивов

Я пытаюсь создать NSMutableArray UIImageViews для подачи iCarousel. Каждый UIImageView должен иметь миниатюру видео и метки для имени и длины. Я обнаружил, что создание миниатюр видео при загрузке iCarousel приводит к недопустимой задержке, если загружено более 10 миниатюр видео. я не нашел асинхронного способа создания миниатюр видео, поскольку они требуются iCarousel.

Текущее решение, которое я пытаюсь сделать, - это сохранить как видео, так и соответствующий эскиз в папку документов приложений во время сохранения видео. Затем они загружаются в 2 отсортированных по времени массива (с одинаковым количеством).

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

Ранее я создавал превью и метки из массива видео, используя этот код.

 UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 135.0f)];
    ((UIImageView *)view).image = [UIImage imageNamed:@"page.png"];
    view.contentMode = UIViewContentModeCenter;

    UIImage *thumb = [UIImage imageWithContentsOfFile:anyPath];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:view.bounds];
    imageView.tag = 1000;
    [imageView setImage:thumb];
    [view addSubview:imageView];

    UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 150.f, 200.f, 25.f)];
    [nameLabel setTextAlignment:NSTextAlignmentLeft];
    [nameLabel setTag:2000];
    [nameLabel setTextColor:[UIColor whiteColor]];
    [nameLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.f]];
    [nameLabel setText:anyPath.lastPathComponent];
    [view addSubview:nameLabel];

    UILabel *lengthLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 150.f, 200.f, 25.f)];
    [lengthLabel setTextAlignment:NSTextAlignmentRight];
    [lengthLabel setTag:3000];
    [lengthLabel setTextColor:[UIColor whiteColor]];
    [lengthLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.f]];
    [lengthLabel setText:[MediaManager lengthOfVideoWithPath:anyPath]];
    [view addSubview:lengthLabel]; 

Любые предложения будут ценны.

1 ответ

ОК, решение было использовать блок для создания массива UIImageViews из двух массивов, например, так (это быстро загружает карусель)

  [self.aryVideos enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) {

    UIImageView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 135.0f)];
    ((UIImageView *)view).image = [UIImage imageNamed:@"page.png"];
    view.contentMode = UIViewContentModeCenter;

    UIImage *thumb = [UIImage imageWithContentsOfFile:self.aryThumbs[idx]];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:view.bounds];
    imageView.tag = 1000;
    [imageView setImage:thumb];
    [view addSubview:imageView];


    UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 150.f, 200.f, 25.f)];
    [nameLabel setTextAlignment:NSTextAlignmentLeft];
    [nameLabel setTag:2000];
    [nameLabel setTextColor:[UIColor whiteColor]];
    [nameLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.f]];
    NSString *path = [item lastPathComponent];
    [nameLabel setText:path];
    [view addSubview:nameLabel];

    UILabel *lengthLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 150.f, 200.f, 25.f)];
    [lengthLabel setTextAlignment:NSTextAlignmentRight];
    [lengthLabel setTag:3000];
    [lengthLabel setTextColor:[UIColor whiteColor]];
    [lengthLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.f]];
    [lengthLabel setText:[MediaManager lengthOfVideoWithPath:item]];
    [view addSubview:lengthLabel];


    [self.aryThumbViews addObject:view];
}];
Другие вопросы по тегам