0

カスタムビューがあります:

@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。必要な値をハードコアすることはできますが、標準のコントロールが機能するように機能することを期待しています。たとえば、回転する場合の自動サイズ変更などです。

私の誤解は何ですか?

4

1 に答える 1

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;
}
于 2013-08-12T22:48:03.163 に答える