0

いくつかのオプションで初期化できるUIViewクラスを作成したいと思います。

drawRect()問題は方法だと思います。次のような特定のオプションでクラスを初期化することは可能ですか?

[[MyUIView alloc]initWithColor:[UIColor blueColor]]

drawRect()オブジェクトを初期化せずにメソッドを呼び出さないでください。

では、手動で呼び出さずに上記のステートメントを実現するにはどうすればよいですか?

私がこれまでに試したこと:

ビューを初期化してからメソッドを呼び出すだけでよいと思いました

[MyView changeColorTo:green]

ビューを再描画しようとしますが、それを機能させることができませんでした。

coreGraphicsメソッドで丸みを帯びた長方形を使用して(特定の色で、選択可能である必要があります)描画することが重要かもしれませんdrawRect()

どうすれば希望の動作を実装できますか?

4

1 に答える 1

1

電話

[self setNeedsDisplayInRect:aCGRect];

drawRect: を呼び出します。

color プロパティを編集します。

@interface MyView: UIView

@property (nonatomic, strong) UIColor *drawColor;

@end

@implementation MyView

@synthesize drawColor;

- (id)initWithWhatever
{
    self.drawColor = [UIColor infraRedColor];
    [self setNeedsDisplayInRect:aRect];
}

- (void)drawRect:(CGRect)r
{
    // use self.drawColor
}

@end
于 2012-07-30T21:17:57.887 に答える