1

私のアプリにはサムネイル ビューがあり、ユーザーが imageview を使用して次のビューに移動し、クリックされた特定のサムネイルを表示する必要があります。したがって、ユーザーが左または右にスワイプして他の画像を表示できるように、特定の画像を開いて特定のインデックスに配置する必要があります。これは、iPhone の写真アプリとまったく同じである必要があります。

どうすればこれを解決できますか?

私のコードは、

collectionview.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"])
    {
        NSIndexPath *selectedIndexPath = [[self.gallerycollection indexPathsForSelectedItems] objectAtIndex:0];

        // load the image, to prevent it from being cached we use 'initWithContentsOfFile'
        NSString *imageNameToLoad = [NSString stringWithFormat:@"interior_%d", selectedIndexPath.row];
        NSString *pathToImage = [[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"jpg"];
        UIImage *image = [[UIImage alloc] initWithContentsOfFile:pathToImage];

        GalleryImageScrollViewController *gallerydetailViewController = [segue destinationViewController];
        gallerydetailViewController.FullScreenImageScroller=image ;
    }
}

GalleryImageScrollViewcontroller.m

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSMutableArray *mutablearray = [NSMutableArray array];
    data=[MyDatabase new];
    slideImages=[data OpenMyDatabase:@"SELECT pic_name_big FROM interior":@"pic_name_big"];
    [mutablearray addObjectsFromArray:slideImages];
    temparr = [[NSMutableArray alloc]init];
    temparr=[NSMutableArray arrayWithArray:mutablearray];
        [self putImageViewsInScrollView:[temparr count]];
}




-(void) putImageViewsInScrollView:(int)numberOfImageViews
{
   for(int i=0 ;i<= numberOfImageViews; i++)
    {
       // UIImageView *fullScreenImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[temparr objectAtIndex:i]]];
        fullScreenImageView.frame = CGRectMake((WIDTH_OF_IMAGE * i)  , 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);
        [self.FullScreenImageScroller addSubview:fullScreenImageView];

    }

    [self.FullScreenImageScroller setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([temparr count]), HEIGHT_OF_IMAGE)];
    [self.FullScreenImageScroller setContentOffset:CGPointMake(0, 0)];
    [self.FullScreenImageScroller scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];
    self.FullScreenImageScroller.delegate=self;

   }
4

4 に答える 4

0

Three20ライブラリまたはAppleのUICatalogサンプルを参照用に使用できます。以下はリンクです:

https://developer.apple.com/library/ios/#samplecode/UICatalog/Introduction/Intro.html

https://github.com/facebook/three20

于 2013-03-14T05:22:28.520 に答える
0

このようにしてみてくださいそれはうまくいくかもしれません

1.サムネイル画像の場合、サムネイル画像をクリックしたときにimage.tag値を指定し、そのタグ値を次のビューコントローラ(detailviewControllerObj.index = image.tag)に渡します。

2.すべてのフルスクリーン画像(サイズ320 * 480)を詳細ページのscrollviewに追加し、そのscrollviewを表示に追加します。

3.サムネイル画像をクリックすると、インデックス値を詳細画面に渡すことができます。

4.その後、スクロールビューのコンテンツオフセットを詳細画面に設定します。

[scroll setContentOffset:CGPointMake(320*index, 0)];

その時にサムネイル画像を作成しているときはいつでも

for(int i=0;i<[imgarr count];i++)
{
    UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    imageView.image=[imgarr objectAtIndex:i];
    imageView.tag=i;
    [self.view addSubview:imageView];
}

その後、詳細ビューで1つの整数値をインデックスとして取得し、その特定の画像をクリックするとその変数が合成され、次のようになります。

detailviewControllerObj.index = image.tag

于 2013-03-14T05:28:08.763 に答える
0

これは役に立ちます

KTフォトブラウザ

TTThumbs

于 2013-03-14T05:20:22.887 に答える
0

最初に画像をサムネイルに追加するときに、配列内の画像のインデックスをサムネイル ビューの「タグ」にマップできます。

ThumbnailView *thumb = [UIView alloc] init];
thumb.image = [imagesArray objectAtIndex:i];
thumb.tag = i;

サムビューを選択すると、タグに従って配列から画像を取得できます

UIImage *image = [imagesArray objectAtIndex:thumb.tag];
于 2013-03-14T05:37:36.030 に答える