アプリ開発の逆引き辞典

アプリ開発のTipsをまとめました

文字列からUIImageオブジェクトを生成する

NSString型の文字列を画像に変換します。「サイズを指定して空のUIImageオブジェクトを生成する - iOSアプリ開発の逆引き辞典」をベースとしています。

- (UIImage *)imageWithString:(NSString *)text
{
    // 描画するサイズ
    CGSize size = CGSizeMake(34, 18);
    
    // ビットマップ形式のグラフィックスコンテキストの生成
    // 第2引数のopaqueを`NO`にすることで背景が透明になる
    UIGraphicsBeginImageContextWithOptions(size, NO, 0);
    
    
    // 描画する文字列の情報を指定する
    //--------------------------------------
    
    // 文字描画時に反映される影の指定
    NSShadow *shadow = [[NSShadow alloc] init];
    shadow.shadowOffset = CGSizeMake(0.f, -0.5f);
    shadow.shadowColor = [UIColor darkGrayColor];
    shadow.shadowBlurRadius = 0.f;
    
    // 文字描画に使用するフォントの指定
    UIFont *font = [UIFont boldSystemFontOfSize:14.0f];
    
    // パラグラフ関連の情報の指定
    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
    style.alignment = NSTextAlignmentCenter;
    style.lineBreakMode = NSLineBreakByClipping;
    
    NSDictionary *attributes = @{
           NSFontAttributeName: font,
           NSParagraphStyleAttributeName: style,
           NSShadowAttributeName: shadow,
           NSForegroundColorAttributeName: [UIColor whiteColor],
           NSBackgroundColorAttributeName: [UIColor clearColor]
    };
    
    // 文字列を描画する
    [text drawInRect:CGRectMake(0, 0, size.width, size.height)
      withAttributes:attributes];
    
    // 現在のグラフィックスコンテキストの画像を取得する
    UIImage *image = nil;
    image = UIGraphicsGetImageFromCurrentImageContext();
    
    // 現在のグラフィックスコンテキストへの編集を終了
    // (スタックの先頭から削除する)
    UIGraphicsEndImageContext();

    return image;
}

使い方。

NSString *text = @"[ほ] ";
UIImage *image = [self imageWithString:text];