iCarousel 从 NSMutableArray 加载 UIViews

Posted

技术标签:

【中文标题】iCarousel 从 NSMutableArray 加载 UIViews【英文标题】:iCarousel loading UIViews from NSMutableArray 【发布时间】:2013-02-19 09:34:58 【问题描述】:

您好,我在我的应用中加入了 iCarousel 以显示视图列表。我现在面临一个问题。

    如果我将可见项目数设置为 3,则显示 3 的倍数索引视图 如果我没有设置显示 icarousel 视图的第一个和最后一个索引。

我对在 iCarousel 中重用视图的概念感到非常困惑。

这是我的代码

-(void)viewWillAppear:(BOOL)animated




ViewArray=[[NSMutableArray alloc]init];
for (int i=0; i<26; i++) 
 [ViewArray addObject:views];
    [carousel1 reloadData];


NSLog(@"%@",ViewArray);



- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel

//return the total number of items in the carousel
return 26;



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

 UIView *sub=nil;
 if (view==nil) 


view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 900, 387)];

    capitalBG.frame=CGRectMake(28, 29, 221, 329);
    capitalBG.tag=11;
    [view addSubview:capitalBG];

    capitalImage.frame=CGRectMake(28, 29, 221, 329);
           [view addSubview:capitalImage];
    capitalImage.tag=12;
    smallBG.frame=CGRectMake(678, 111, 198, 166);
           [view addSubview:smallBG];
    smallBG.tag=21;
    smallImage.frame=CGRectMake(678, 111, 198, 166);
           [view addSubview:smallImage];
    smallImage.tag=22;



else




capitalBG.frame=CGRectMake(28, 29, 221, 329);
[capitalBG setImage:[UIImage imageNamed:@""]];
[view addSubview:capitalBG];

capitalImage.frame=CGRectMake(28, 29, 221, 329);
[capitalImage setImage:[[[Global ImageCollection]objectForKey:@"CapitalWrite"]objectAtIndex:index]];
[view addSubview:capitalImage];

smallBG.frame=CGRectMake(678, 111, 198, 166);
[smallBG setImage:[UIImage imageNamed:@""]];
[view addSubview:smallBG];

smallImage.frame=CGRectMake(678, 111, 198, 166);
[smallImage setImage:[[[Global ImageCollection]objectForKey:@"SmallWrite"]objectAtIndex:index]];
[view addSubview:smallImage];
 return view;



- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value

if (option == iCarouselOptionSpacing)

    return value * 1.1f;


if (option==iCarouselOptionVisibleItems) 
    return 3;

return value;

【问题讨论】:

@08442 我拥有具有不同图像的常春藤数组,我需要在该图像视图上绘制。当我在所有视图中尝试相同的图像时效果很好。当我将数组中的所有图像组合在一起时这个问题,,, 分配 subViews-capitalBG.frame=[UIImageView alloc]initWithFrameCGRectMake(28, 29, 221, 329)];,对所有都做同样的事情 【参考方案1】:

显然,我没有得到您要求的内容。检查 I-carousal 的实现代码以显示图像。

     - (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel
  
//add all your images to an array,and use that array for count. 

return [items count];
 



     - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index     reusingView:(UIView *)view
  
    //create new view if no view is available for recycling
if (view == nil)

    view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 215.0f, 155.0f)];
    ((UIImageView *)view).image = [UIImage imageNamed:[self.items objectAtIndex:index ]];

    view.contentMode = UIViewContentModeCenter;


return view;

   - (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option          withDefault:(CGFloat)value
   
//customize carousel display

        return value+0.1;
     

【讨论】:

感谢您的回答...您已经提供了使用 UIImageView 的代码,并且图像来自 Array.. 我正在尝试显示 Array 中的 UIView.. 你想在视图中显示什么 它有 UIimageviews 按钮滑块等 @user1931314 方法中添加所有子视图到carousalView - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view 我也尝试过这种方法......但我仍然只得到我的第一个和最后一个视图。在滚动查看它隐藏时显示中间视图..请检查我的代码..

以上是关于iCarousel 从 NSMutableArray 加载 UIViews的主要内容,如果未能解决你的问题,请参考以下文章

从 segued View 返回时如何重新加载 iCarousel?

iCarousel + Parse:从 PFObject 加载异步图像

如何从 iCarousel 中的按钮创建到另一个视图的转场

无法从 web url 向 iCarousel 显示图像

从 Parse.com 下载图像并将其用于 iCarousel

iCarousel 配置任务