1

Brad の回答に従って、CALayer テキストにグロー効果を適用しています。

これが私のコードです:

- (void)drawLayer:(CALayer *)theLayer inContext:(CGContextRef)context
{   
    UIGraphicsPushContext(context);
    UIFont *font = [UIFont fontWithName:@"Verdana" size:11.0f];

    CGRect rect = CGRectMake(theLayer.bounds.origin.x + 5, theLayer.bounds.origin.y + 5, theLayer.bounds.size.width - 10, theLayer.bounds.size.height - 10);

    NSString * textToWrite = @"Some text";         

    UIColor *color = [ UIColor colorWithRed: (100.0f)  green: (50.0)  blue:(200.0f) alpha: 1.0f ];

    CGContextSetFillColorWithColor(context, color.CGColor); //this has no effect!!!

    CGContextSetShadowWithColor(context, CGSizeMake(0.0, 0.0), 2.0f, [UIColor greenColor].CGColor);

    [textToWrite drawInRect:rect withFont:font
          lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentLeft];       
 
    UIGraphicsPopContext();

}

私はここでまともな緑の輝きを得ています。ただし、グローとは別に、テキストにも独自の色が必要です。このために、ここでは color 変数を とともに使用していCGContextSetFillColorWithColorます。しかし、それは効果がないようです。テキストは白く見え、緑色に輝きます。メインカラー = color およびグロー = グリーンのテキストが必要です。

私は何をすべきか?

4

1 に答える 1

2

私はあなたの色に混乱しています...objective-cで赤、緑、青を宣言するときは、最大で1.0までの値を設定するので(アルファで行ったように)、真の255の16進値を与えると思います次に、255で割ります。3つの値すべてが最大値をはるかに超えているため、色は白になります...最初にこれらの2つのコードを試してみても、間違っているかもしれません...

現在のFillColorWithColorコードを次のように置き換えます。

[[UIColor colorWithCGColor:color] set];

(または多分これ...)

[[UIColor colorWithCGColor:color.CGColor] set];

それらが機能しない場合は、カラーコードを次のように変更しながら試してください。

UIColor *color = [ UIColor colorWithRed: (100.0f/255.0f) green: (50.0f/255.0f) blue:(200.0f/255.0f) alpha: 1.0f ];

于 2013-01-11T15:35:58.747 に答える