0

私のxibファイルには、いくつかのビューがあります。そして、私はPainViewクラス(UIView)を持っています。PaintViewこのビューに設定して作成した ID インスペクターで@property (strong, nonatomic) IBOutlet PaintView *paintView;

描画方法を変更することに決めたまでは、問題なく機能していました。このファイルからコードをコピーし、PaintView.m (PaintView.h と同じ) に貼り付けました。

しかし、それは私が書いた場合にのみ機能します

[self.view addSubview:[[PaintView alloc] initWithFrame:self.view.bounds]];

ただし、他のすべてのレイヤー、ボタンなどの上に新しいレイヤーを作成します。このクラスを既存のビューに接続する必要があります。

試しpaintView = [[PaintView alloc] initWithFrame:self.view.bounds];ましたがうまくいきませんでした。

コンソールでは、無効なコンテキストが常に表示されます。

<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextGetBaseCTM: invalid context 0x0
<Error>: CGContextConcatCTM: invalid context 0x0
<Error>: CGContextSetBaseCTM: invalid context 0x0
<Error>: CGContextSetBaseCTM: invalid context 0x0

助けてくれませんか?前もって感謝します。

4

1 に答える 1

1

名前と同じ初期化で別のinitメソッドを実装する必要がありますinitWithFrame: 。名前は次のとおりです。

- (id)initWithCoder:(NSCoder *)coder 
{
  ...
}

initWithCoder:は、NIBファイルからロードされるビュー用に呼び出されるinitメソッドです。

于 2012-04-05T15:18:52.320 に答える