如何删除默认的iCarousel项目居中位置?

时间:2013-04-05 11:40:45

标签: icarousel

任何人都可以帮我解决,如何使用示例删除默认的iCarousel项目居中位置?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并且通过以下黑客来做这件事;)

<强>问题: 我需要有一个视图,只显示3个始终保持对齐的项目。

解决: 我所做的是总是至少制作3个项目。如果我有0,1或2个项目,我总是创建3个,但是那些不需要显示的项目我创建为空UIView。我总是有2个占位符,但在某些情况下,其中一个或两个都是空的。

e.g。 如果我们要显示2个项目,我实际上创建了3个,但第三个是空UIView。我正在创建两个占位符和一个Item。

  • 第一项是指数0
  • 的第一个占位符
  • 第二项是项目
  • 第三项是第二个占位符但空UIView

如果我们要显示1个项目,我再创建三个,但第二个和第三个是空的UIView。与前面的示例相同,我创建了两个占位符和一个Item。

  • 第一项是指数0
  • 的第一个占位符
  • 第二项是项目,但空UIView
  • 第三项是第二个占位符但空UIView

由于这个逻辑,我总是在重用([v removeFromSuperview])时清理视图,以确保它是干净的,如果需要显示新的,我正在添加它([view addSubview ...)。 占位符

的逻辑相同

如果您需要有超过3个显示的项目,您可以使用相同的逻辑,但将值3更改为其他值。如果我错了,请更新我;)

这是我的代码的一部分,对我有用;)

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
{
    return [[self getRecordings] count] > 3? [[self getRecordings] count] - 2: 1;
}

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    if (view == nil)
    {
        view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
    }
    else
    {
        // If reusing remove content from holder view for fake items
        for (UIView *v in view.subviews)
        {
            [v removeFromSuperview];
        }
    }

    if ([[self getRecordings] count] >= 2)
    {
        [view addSubview:[(RecordingItemViewController*)[_recordingItemViewControllers objectAtIndex:index + 1] view]];
    }

    return view;
}

- (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel
{
    return 2;
}

- (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
    if (view == nil)
    {
        view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
    }
    else
    {
    // If reusing remove content from holder view for fake items
        for (UIView *v in view.subviews)
        {
            [v removeFromSuperview];
        }
    }

    if (([[self getRecordings] count] > 0 && [[self getRecordings] count] < 3 && index == 0) || [[self getRecordings]count] >= 3)
    {
        [view addSubview:[(RecordingItemViewController*)(index == 0? [_recordingItemViewControllers objectAtIndex:0]: [_recordingItemViewControllers lastObject]) view]];
    }

    return view;
}