0

ここに固執する私はiCarouselのこのメソッドを次のように実装しました。

最初は固まっていて、数秒後にはスクロールできるようになります。また、スクロール中に画像が重ならないようにしたいので、すべての画像が各アイテム間で等距離になるようにします。

このコードの何が問題になっていますか?または私は何かが欠けていますか?

-(void)addiCarousel
{
    carousel.frame = CGRectMake(324, 50, 375, 195);
    [self.view addSubview:carousel];
    self.items = [[NSMutableArray alloc] initWithObjects:@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg",@"5.jpg", nil];
    carousel.type = iCarouselTypeCoverFlow2;
    [carousel reloadData];
}

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
    return [items count];
}

- (BOOL)carouselShouldWrap:(iCarousel *)carousel
{
    return NO;
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{

 //   if (view == nil)
   // {
        view = [[[UIImageView alloc] initWithFrame:CGRectMake(649, 50, 375 , 195)] autorelease];
        view.contentMode = UIViewContentModeCenter;
        view.layer.borderWidth = 8.0f;
        view.layer.borderColor = [[UIColor blackColor] CGColor];
    view.contentMode = UIViewContentModeScaleToFill;

//    }

     ((UIImageView *)view).image = [UIImage imageNamed:[self.items objectAtIndex:index]];

    NSLog(@"index : %d",index);
    NSLog(@"%@",[self.items objectAtIndex:index]);

    return view;
}
4

3 に答える 3

2

以下の方法を使用しましたか

- (CGFloat)carouselItemWidth:(iCarousel *)carousel
{
//usually this should be slightly wider than the item views
return 240;
}

この情報はチュートリアルに記載されており、使用できます

    [carousal scrollToItemAtIndex:3 animated:NO];

中央に3枚の写真が表示されるようにします。

于 2012-08-22T12:19:12.080 に答える
0

以下のコードを追加すると、スティックが停止し、スムーズにスクロールできるようになりました

欠けていた、

- (CATransform3D)carousel:(iCarousel *)_carousel transformForItemView:(UIView *)view withOffset:(CGFloat)offset
{
    //implement 'flip3D' style carousel

    //set opacity based on distance from camera
    view.alpha = 1.0 - fminf(fmaxf(offset, 0.0), 1.0);

    //do 3d transform
    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = carousel.perspective;
    transform = CATransform3DRotate(transform, M_PI / 8.0, 0, 1.0, 0);
    return CATransform3DTranslate(transform, 0.0, 0.0, offset * carousel.itemWidth);
}

一緒にcarousel.clipsToBounds = YES;

他の人を助けるかもしれません。

于 2012-08-23T09:54:08.950 に答える
0

カルーセルを作成した後に reloadData 呼び出しを削除してみてください。代わりに、項目配列を設定した後にカルーセルをサブビューとして追加してください。

于 2012-08-22T12:41:25.610 に答える