0

addSubview を使用してコードでいくつかの画像をレイアウトしようとしていますが、表示されません。

UIView をサブクラス化するクラス (myUIView) を作成し、IB の nib ファイルのクラスを myUIView に変更しました。

次に、次のコードを挿入しましたが、まだ空白の灰色の画面が表示されます。

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
        [self setupSubviews];
    }
    return self;
}

- (void)setupSubviews
{
    self.backgroundColor = [UIColor blackColor];

    UIImageView *black = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"black.png"]];
    black.center = self.center;
    black.opaque = YES;

    [self addSubview:black];

    [black release];
}
4

2 に答える 2

2

はい、initWithCoder を実装するだけです。

initWithFrame は、UIView がコードから動的に作成されるときに呼び出されます。.nib ファイルからロードされたビューは常に initWithCoder を使用してインスタンス化され、コーダーは .nib ファイルから設定を読み取ります。

initWithCode と initWithFrame の両方を実装して (必要に応じて独自の初期化メソッドも)、別のメソッドで初期化を行う習慣を取りました。

于 2012-11-13T12:57:16.493 に答える
0

時々実装しinitWithCoder:てみてください IB に問題があり、initWithFrame:

または、少なくともロギング呼び出しを追加して、init メソッドが実行されているかどうかを確認します

于 2009-04-15T21:33:18.297 に答える