UIView の初期化子をカスタマイズして値を初期化子に渡すことができるようにする最良の方法を決定しようとしています。この値はdrawRect
.
現在、私はデフォルトを使用しており、この UIView を作成するクラスは、呼び出し後にinitWithFrame
iVar を値に設定しますが、実際には機能しています。UIView が初期化された後に設定されていても、何らかの形でこの iVar の値を取得しています。initWithFrame
drawRect
したがって、次の2つのいずれかが必要です。
drawRect
1) これで問題ないという自信: UIView が初期化された後に iVar が別のオブジェクトによって設定されるように、描画を少し遅らせることに頼ることができます。その場合、UIView の初期化がdrawRect
呼び出されるのはいつですか?
または、
(CGRect)frame
2)初期化中に値を渡す必要があります。これは、引数として以上を取るカスタム初期化子を作成するための最良の方法ですか?initWithFrame.
これを行うのと同じくらい簡単でしょうか:
myNewView=[[MyCustomView alloc] initWithFrame:myRect andMore:myValue];
そして、MyCustomView.m で:
- (id)initWithFrame:(CGRect)frame andMore:(int)someValue
{
self = [super initWithFrame:frame];
if (self) {
myIvar=someValue;
... //continue as normal
}
}
このコードは良いアプローチでしょうか? drawRect
そうすれば、呼び出される前に値がそこにあることを安心して知ることができます。