1

我目前有一个UICollectionView由图像网格组成的。我想要做的是,当我单击任何特定图像时,它应该打开一个图像视图,我可以在它周围平移。


问题

  1. 图像视图不会显示图像。
  2. 如果我为图像视图启用平移,整个网格视图将移动。

我该如何避免这些问题?

这是我尝试过的:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor whiteColor];
    [self.collectionView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellWithReuseIdentifier:@"CellID"];


    // Do any additional setup after loading the view, typically from a nib.
}


-(int)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{

    return 30;
}

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    Cell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"CellID" forIndexPath:indexPath];
    cell.backgroundColor=[UIColor whiteColor];
    UIImageView *imgView=(UIImageView *)[cell viewWithTag:1];
    imgView.image=[UIImage imageNamed:@"57.png"];
    return cell;
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    UIImageView *previewImage=[[UIImageView alloc]init];
    UIScrollView *imageScroll=[[UIScrollView alloc]init];
    imageScroll.clipsToBounds=YES;
    imageScroll.contentSize=previewImage.bounds.size;
    UIViewController *imageController=[[UIViewController alloc]init];
    imageController.view.backgroundColor=[UIColor whiteColor];
    [imageController.view addSubview:imageScroll];
    imageController.modalPresentationStyle=UIModalTransitionStyleCrossDissolve;
    imageController.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:imageController animated:YES completion:^{

    }];

}

任何指针?

4

2 回答 2

1

有几件事:

您将对象的 contentSize 设置为对象UIScrollViewimageScroll大小。因此你应该设置 frame以便知道它的 contentSize 并且你应该设置 frame以确保它会滚动(记住 frame必须小于它的 contentSize)。像这样的东西会起作用(你应该把它改成你想要的):UIImageViewpreviewImagepreviewImageimageScrollimageScrollUIScrollView

UIImageView *previewImage=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
UIScrollView *imageScroll=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];

您也没有将其添加previewImage为子视图imageScroll或设置其图像。

previewImage.image = //set image;
[imageScroll addSubview:previewImage];

UIScrollView正确设置后,用户可以轻松地平移 imageView 。

于 2013-08-13T12:59:32.653 回答
1

您有效地尝试做的是构建视图控制器层次结构。你不能像你尝试过的那样做到这一点。您最多需要将它呈现为一个弹出控制器,以便 UIImageView 甚至显示。但是你不能移动它。所以你的方法行不通。

一种想法可能是禁用 UICollectionView 上的用户交互,并将 UIImageView 显示为 UICollectionView 之上的子视图,然后在管理 UICollectionView 的同一控制器中进行控制器平移。

于 2013-08-13T13:23:20.143 回答