web-dev-qa-db-ja.com

UIViewで色付きのテキストを描画する-drawRect:メソッド

UIViewサブクラスに色付きのテキストを描画しようとしています。現在、シングルビューアプリテンプレートを使用しています(テスト用)。 drawRect:メソッド以外の変更はありません。

テキストは描画されますが、色を何に設定しても常に黒になります。

- (void)drawRect:(CGRect)rect
{
    UIFont* font = [UIFont fontWithName:@"Arial" size:72];
    UIColor* textColor = [UIColor redColor];
    NSDictionary* stringAttrs = @{ UITextAttributeFont : font, UITextAttributeTextColor : textColor };

    NSAttributedString* attrStr = [[NSAttributedString alloc] initWithString:@"Hello" attributes:stringAttrs];

    [attrStr drawAtPoint:CGPointMake(10.f, 10.f)];
}

私も[[UIColor redColor] set]を試しましたが無駄になりました。

答え:

NSDictionary * stringAttrs = @ {NSFontAttributeName:font、NSForegroundColorAttributeName:textColor};

24
RobertJoseph

UITextAttributeTextColorの代わりにNSForegroundColorAttributeNameを使用する必要があります。お役に立てれば!

22
Levi

以下の方法でお試しいただけます。以下の属性を使用して、UIViewの右下隅にテキストを描画するのに役立ちます。

  • NSFontAttributeName-サイズ付きのフォント名
  • NSStrokeWidthAttributeName-ストローク幅
  • NSStrokeColorAttributeName-テキストの色

Objective-C --UIViewにテキストを描画し、UIImageとして返します。

    -(UIImage *) imageWithView:(UIView *)view text:(NSString *)text {

        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);

        [view.layer renderInContext:UIGraphicsGetCurrentContext()];

        // Setup the font specific variables
        NSDictionary *attributes = @{
                NSFontAttributeName   : [UIFont fontWithName:@"Helvetica" size:12],
                NSStrokeWidthAttributeName    : @(0), 
                NSStrokeColorAttributeName    : [UIColor blackColor]
        };
        // Draw text with CGPoint and attributes
        [text drawAtPoint:CGPointMake(view.frame.Origin.x+10 , view.frame.size.height-25) withAttributes:attributes];

        UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        return img;
    }`

Swift --UIViewにテキストを描画し、UIImageとして返します。

    func imageWithView(view : UIView, text : NSString) -> UIImage {

        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
        view.layer.renderInContext(UIGraphicsGetCurrentContext()!);
        // Setup the font specific variables
        let attributes :[String:AnyObject] = [
            NSFontAttributeName : UIFont(name: "Helvetica", size: 12)!,
            NSStrokeWidthAttributeName : 0,
            NSForegroundColorAttributeName : UIColor.blackColor()
        ]
        // Draw text with CGPoint and attributes
        text.drawAtPoint(CGPointMake(view.frame.Origin.x+10, view.frame.size.height-25), withAttributes: attributes);
        let img:UIImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();
        return img;
    }`
4
Vignesh Kumar