質問

私は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色の間のいくつかの違いを示すのかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top