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 をUIScrollViewオブジェクトimageScrollのサイズに設定しUIImageViewますpreviewImage。したがって、 contentSize を認識できるように のフレームを設定し、確実にスクロールできるように のフレームを設定する必要があります ( のフレームはpreviewImageそのcontentSize よりも小さくなければならないことに注意してください)。このようなものが機能します (これを必要なものに変更する必要があります):imageScrollimageScrollUIScrollView

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 に答える