将自定义 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 添加到 UIScrollView 之上的 Stackview?
如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT