任何人都可以帮我解决,如何使用示例删除默认的iCarousel项目居中位置?
答案 0 :(得分:0)
我遇到了同样的问题并且通过以下黑客来做这件事;)
<强>问题:强> 我需要有一个视图,只显示3个始终保持对齐的项目。
解决:强> 我所做的是总是至少制作3个项目。如果我有0,1或2个项目,我总是创建3个,但是那些不需要显示的项目我创建为空UIView。我总是有2个占位符,但在某些情况下,其中一个或两个都是空的。
e.g。 如果我们要显示2个项目,我实际上创建了3个,但第三个是空UIView。我正在创建两个占位符和一个Item。
如果我们要显示1个项目,我再创建三个,但第二个和第三个是空的UIView。与前面的示例相同,我创建了两个占位符和一个Item。
由于这个逻辑,我总是在重用([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;
}