UICOLORとグラフィックスコンテキスト
-
14-11-2019 - |
質問
私はso のようなパスを描画するカスタムuiviewを持っています
- (void)drawRect:(CGRect)rect{
[[UIColor blackColor] setStroke];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColor(ctx, CGColorGetComponents(self.color));
CGContextFillPath(ctx);
UIBezierPath *thePath = [UIBezierPath bezierPath];
thePath.lineWidth = _lineWidth;
_center = CGPointMake(rect.size.width, rect.size.height);
[thePath moveToPoint:_center];
[thePath addArcWithCenter:_center radius:rect.size.width startAngle:M_PI endAngle:M_PI+degreesToRadians(_angle)clockwise:YES];
[thePath closePath];
[thePath fill];
}
.
マイカスタムuiviewには、充填色を変更する方法もあります
- (void) changeColor:(UIColor *) newColor {
self.color = [newColor CGColor];
[self setNeedsDisplay];
}
.
ChangeColorを呼び出す場合:のような定義済みの色を持つメソッド
[UIColor redColor]
.
すべてがうまく機能します。代わりに、のようなカスタムカラーを与えようとした場合
UIColor* color = [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:1.0f];
.
白、赤、青のランダムに、私のカスタムUiviewフリッカーの色。
なぜそれはどんなアイデアですか?
事前にありがとうございました!
解決
試してみてください:
CGContextSetFillColorWithColor(ctx, self.color.CGColor);
.
:
CGContextSetFillColor(ctx, CGColorGetComponents(self.color));
. 他のヒント
このメソッド呼び出しを使用している場合:
[UIColor redColor];
.
最適化の目的で、UIColorは他のものを必要としないため、2つのコンポーネントのみでオブジェクトを返します。(これはクラスクラスタリングのメカニズムで可能)。
それがあなたのコードがこの2色の間のいくつかの違いを示すのかもしれません。
所属していません StackOverflow