将自定义 UIView 添加到 iCarousel

Posted

技术标签:

【中文标题】将自定义 UIView 添加到 iCarousel【英文标题】:Adding Custom UIView to iCarousel 【发布时间】:2014-07-25 16:12:13 【问题描述】:

将视图添加到 iCarousel“viewForItemAtIndex”方法时遇到问题

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



UIView *sub = nil;
//iCarousel *temp;

//create new view if no view is available for recycling
if (view == nil)

    UIViewController * viewController = [self.storyboard  instantiateViewControllerWithIdentifier:@"UIidentifier"];
    view = [viewController.view viewWithTag:20];

    CGRect  Frame = CGRectMake(view.frame.origin.x, view.frame.origin.y + 100, view.frame.size.width, view.frame.size.height);
    view.frame = Frame;


UILabel *label=(UILabel*)[view viewWithTag:23];
label.text = [[listOfAnimalsNames objectAtIndex:index]nameOfTheCompanie];
return view;


我想显示一个 UIView“mockUp”并使用 iCarousel 的“索引”用一些数据填充标签,我创建了自己的 UIViewController,其中包含“mockup”UIView。问题是当我调用这个 UIView 时(如代码中所示),什么也没有发生。 (我加载数据后使用reloadData方法)

【问题讨论】:

在设置视图框架时尝试使用 view.bounds 而不是 view.frame。 【参考方案1】:

为什么每个视图都需要自己的 ViewController?它们都应该由控制 iCarousel 视图(或至少它的数据源)的任何东西控制。此外,UILabel 应该只实例化一次。

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

UIView *sub = nil;

if (view == nil)

    view = [UIView alloc] initWithFrame:CGRectMake(...);
    UILabel *label=[[UILabel alloc] initWithFrame:(...)];
    [view addSubview:label];


label.text = [[listOfAnimalsNames objectAtIndex:index]nameOfTheCompanie];
return view;

【讨论】:

因为我想在 StoryBoard 中以图形方式设计/编辑“模型”,而我不知道其他方法。 不幸的是,由于 iCarousel 显然没有提供与 Storyboard 的适当接口,因此没有无痛的方法可以做到这一点。很多时候,我会在 storyboard 中打开一个 UIView 并进行图形化设计,然后将坐标和帧传递给代码。 现在它正在工作,但我不知道为什么视图的偏移量为 1/2 view.width 和 1/2 view.heigth(我无法上传图片,因为我没有声誉够了) 嗯...这很奇怪。必须是帧来源问题。视野是不是歪了? (即看起来宽度和高度是否小于应有的值) 你为什么使用view.frame.origin.y + 100

以上是关于将自定义 UIView 添加到 iCarousel的主要内容,如果未能解决你的问题,请参考以下文章

将带有自动布局的自定义 UIView 添加到 iCarousel

将自定义 UIView 添加到 TableViewCell

如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?

如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT

使用 iCarousel 时,我的自定义 UIView 显示但里面啥都没有?

如何将 UIView 添加到 CALayer