将 xib 中的子视图添加到自定义 UIView
Posted
技术标签:
【中文标题】将 xib 中的子视图添加到自定义 UIView【英文标题】:Add a subview in xib to a custom UIView 【发布时间】:2012-07-20 04:59:33 【问题描述】:首先,我有一个存在Asset.m/Asset.h
,它是subclass of UIView
。然后我创建一个空的 xib 文件并将 xib 文件的所有者类更改为 Asset。然后我为这个xib创建一个视图和一个标签,我可以在UIView
中拖拽创建IBOutlet
。
IBOutlet UIView *videoOverlay;
IBOutlet UILabel *videoTimeLable;
然后我想使用 addSubview 将 videoOverlay 添加到 Asset.m 的视图中。
self = [super initWithFrame:CGRectMake(0, 0, 0, 0)];
[self addSubview:videoOverlay];
但是视图——videoOverlay 没有显示出来。
我打印出videoOverlay的大小,全为0:
NSLog(@"width =%f height= %f", videoOverlay.frame.size.width, videoOverlay.frame.size.height);
为什么?
【问题讨论】:
试试 [self.view addSubview: videoOverlay] 看来你已将大小设置为零,不是吗?CGRectMake(0, 0, 0, 0);
:D
是的,但是 videoOverlay 在 xib 文件中有大小。
Asset是一个UIView,所以没有self.view,本身就是一个view。
【参考方案1】:
最后,我自己找到了解决方案。在代码下使用添加这个视图(videoOverlay和videoTimeLable属于这个视图)在:
UIView *thumbs;
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ELCAsset" owner:self options:nil];
thumbs = [nib objectAtIndex:0];
[self addSubview:thumbs];
然后videoOverlay和videoTimeLable就可以出现了。
【讨论】:
以上是关于将 xib 中的子视图添加到自定义 UIView的主要内容,如果未能解决你的问题,请参考以下文章
使用 xib 将 tapGestureRecognizer 添加到自定义 UIView
xcode - 将 xib 文件附加到自定义 UIView 类时出错
是否可以将 GestureRecognizer 添加到自定义 UIView 子视图中的标签
将 IBoulets 添加到自定义 UIView 子类崩溃“不符合键值”