Как отобразить несколько импортированных фотографий с целью - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать приложение, которое имеет страницу импорта, похожую на приложение VSCO.Но я не могу понять, как отобразить все картинки в представлении после того, как пользователь выбрал несколько фотографий из галереи, максимум должно быть 10 фотографий.

Чтобы получить изображение, я использовал этот код, и он хорошо работает для одного выбора изображения:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self dismissViewControllerAnimated:false completion:nil];

// transfer to the main screen
dispatch_async(dispatch_get_main_queue(), ^{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    PreviewVC *prevVC = (PreviewVC *)[storyboard instantiateViewControllerWithIdentifier:@"PreviewVC"];


    passedImage = image;

    prevVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:prevVC animated:true completion:nil];
});

}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
[self dismissViewControllerAnimated:false completion:nil];

// Go to the Main Screen
dispatch_async(dispatch_get_main_queue(), ^{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    PreviewVC *prevVC = (PreviewVC *)[storyboard instantiateViewControllerWithIdentifier:@"PreviewVC"];

    // Passing Image to Preview VC
    passedImage = image;

    prevVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:prevVC animated:true completion:nil];
});

}

ПослеЯ использовал предварительный просмотр, чтобы показать импортированную фотографию, прежде чем вы сможете ее редактировать:

@implementation PreviewVC

// Hide the Status Bar
- (BOOL)prefersStatusBarHidden {
    return true;
}

-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    // Create a bitmap context.
    UIGraphicsBeginImageContextWithOptions(newSize, true, image.scale);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}

1 Ответ

0 голосов
/ 10 декабря 2018

Если идея состоит в том, чтобы создать несколько изображений в PreviewVC, тогда запустите средство выбора и сохраните массив изображений в качестве свойства.Этот массив изображений, в свою очередь, становится источником данных для табличного представления в vc предварительного просмотра.В общих чертах ...

// in PreviewVC.m
// in the private interface
@property (nonatomic, weak) IBOutlet UITableView *tableView;  // attach this in IB, don't forget to set datasource to this vc
@property (nonatomic, strong) NSArray *images;

- (void)userDidPressPickImageButton:(id)sender {
    // launch image picker vc from here
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissViewControllerAnimated:false completion:nil];
    image = [self imageWithImage:image scaledToSize:someSize]; // move this method here, too

    // here's the key
    [self.images addObject:image];
    [self.tableView reloadData];
}

Сделайте так, чтобы ваш источник данных табличного представления отвечал на self.images.count для numberOfRows, и, конечно, cellForRow должен сконфигурировать ячейку, используя self.images[indexPath.row]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...