通过UICollectionView点击全屏图像视图

时间:2016-11-03 22:03:00

标签: ios objective-c uicollectionview fullscreen gestures

我的应用程序的JSON UICollectionView部分。我对代码的最初想法已经改变了,现在我只是希望选择的图像全屏显示为具有全缩放手势控制的“灯箱”样式效果。

我无法通过手势或其他方法为我的集合视图获取任何代码。

以下是视图生成的片段:

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

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
                 cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

    CustomColumnCell *myCell = [collectionView
                                dequeueReusableCellWithReuseIdentifier:@"myCell"
                                forIndexPath:indexPath];

    NSDictionary *tmpDict = [myObject objectAtIndex:indexPath.row];

    NSURL *url = [NSURL URLWithString:[tmpDict objectForKey:path]];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img = [[UIImage alloc] initWithData:data];

    myCell.displayImage.image = img;
    myCell.displayDetail.text= [tmpDict objectForKey:name];

    return myCell;
}

如何简单地启用点按图像的全屏视图?我可以在一个新的视图控制器中得到它,但我只需要一个'灯箱'风格的效果,其中图像动画到主屏幕并填充它的纵横比?

下面的代码显示了我如何能够点击项目以生成简单的视图控制器。但是我需要在同一个屏幕上显示它,只是全屏覆盖:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {

        NSIndexPath *IndexPath = [[self.collectionView indexPathsForSelectedItems] objectAtIndex:0];
        NSDictionary *tmpDict = [myObject objectAtIndex:IndexPath.row];

        [[segue destinationViewController] setImageItem:[tmpDict objectForKey:path]];
        [[segue destinationViewController] setDetailItem:[tmpDict objectForKey:name]];

    }
}

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

只需通过这个库,它非常有用且易于实现 https://github.com/jaredsinclair/JTSImageViewController

答案 1 :(得分:0)

如果您想使用动画浏览所选图像,可以使用JTSImageViewController

添加库类并执行此代码。

    // Create image info
    JTSImageInfo *imageInfo = [[JTSImageInfo alloc] init];
    imageInfo.imageURL = [NSURL URLWithString:[[self.attachments objectAtIndex:indexPath.row] valueForKey:@"attach_file"]];
    imageInfo.referenceRect = self.frame;
    imageInfo.referenceView = self.superview;

    // Setup view controller
    JTSImageViewController *imageViewer = [[JTSImageViewController alloc]
                                           initWithImageInfo:imageInfo
                                           mode:JTSImageViewControllerMode_Image
                                           backgroundStyle:JTSImageViewControllerBackgroundOption_Blurred];

    // Present the view controller.
    [imageViewer showFromViewController:self transition:JTSImageViewControllerTransition_FromOriginalPosition];

我希望它可以帮到你。