我目前有UICollectionView
,其中包含图片网格。我想要做的是,当我点击任何特定的图像时,它应该打开一个图像视图,我可以平移它。
的问题:
如何避免这些问题?
这就是我的尝试:
- (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:^{
}];
}
任何指针?
答案 0 :(得分:1)
有几件事:
您可以将UIScrollView
对象imageScroll
的contentSize设置为UIImageView
对象previewImage
的大小。因此,您应该设置previewImage
的框架,以便imageScroll
知道其contentSize,您应该设置imageScroll
的框架以确保它会滚动(请记住UIScrollView
的框架必须小于其contentSize)。这样的东西会起作用(你应该把它改成你想要的):
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
后,用户可以轻松平移图像。
答案 1 :(得分:1)
你有效地尝试做的是构建一个viewcontroller hiearchy。你不能尝试这样做。您需要将它作为弹出控制器呈现,最好让UIImageView显示。但是你不能移动它。所以你的方法不会起作用。
一个想法可能是在UICollectionView上禁用userinteraction,并在UICollectionView上显示UIImageView作为子视图,然后在管理UICollectionView的同一个控制器中进行控制器平移。