自定义视图中的self.view.size返回[0,0]

时间:2013-08-12 21:47:12

标签: ios

我有自定义视图:

@interface MailAttributesView : UIView 
{
...


@implementation MailAttributesView
{
    UIView *_selectionView;
}
(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        DLog(@"frame.size.width -[%f]; frame.size.height -[%f] ",frame.size.width, frame.size.height);
    }
    return self;
}

-(void)awakeFromNib
{
    [self initView];
}

-(void)initView
{
    DLog(@"self.frame.size.width -[%f]; self.frame.size.height -[%f] ",self.frame.size.width, self.frame.size.height);

    CGRect sectionSize = CGRectMake(0, 0 , self.frame.size.width, self.frame.size.height);
    _selectionView = [[UIView alloc] initWithFrame:sectionSize];
    [_selectionView setBackgroundColor:[UIColor clearColor]];

    fromField = [[JSTokenField alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, ROW_HEIGHT)];
    [[fromField label] setText:@"  From:"];
    [fromField setDelegate:self];
    [_selectionView addSubview:fromField];

在我的故事板中,我创建了一个视图并将其设置为我的自定义视图类。问题在我看来我调用self.view来定义视图的宽度 - 但它总是返回0。 我可以硬核需要的值 - 但我希望它能像标准控件那样工作 - 我的意思是例如旋转时自动调整大小等等。

我的误解是什么?

1 个答案:

答案 0 :(得分:2)

如果要在故事板中添加自定义视图,则不会使用initWithFrame:

而是使用initWithCoder:

试试这个:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder]) {
        DLog(@"self.frame.size.width -[%f]; self.frame.size.height -[%f] ",self.frame.size.width, self.frame.size.height);
    }

    return  self;
}