在xib中添加子视图到自定义UIView

问题描述:

首先,我有一个存在Asset.m/Asset.h,它是subclass of UIView。然后我创建一个空的xib文件,并将xib文件的所有者类更改为Asset。然后我为这个xib创建一个视图和一个标签,我可以在UIView中拖动并创建IBOutlet在xib中添加子视图到自定义UIView

IBOutlet UIView *videoOverlay; 
IBOutlet UILabel *videoTimeLable; 

然后我想videoOverlay添加到使用addSubview 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); 

为什么?

+0

尝试[self.view addSubview:videoOverlay] – WaaleedKhan 2012-07-20 09:46:07

+2

看来**你**已经将尺寸设置为零,对不对? 'CGRectMake(0,0,0,0);':D – holex 2012-07-20 09:47:17

+0

是的,但videoOverlay在xib文件中有大小。 – 2012-07-23 01:20:56

最后,我自己找到解决方案。在代码中使用添加在此视图(videoOverlay和videoTimeLable属于这一观点):

UIView *thumbs; 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ELCAsset" owner:self options:nil]; 
    thumbs = [nib objectAtIndex:0]; 
    [self addSubview:thumbs]; 

然后videoOverlay和videoTimeLable可以显示出来。