タグ別アーカイブ: 文字間隔

UILabel 文字と文字の間隔を変更する

UILabel で文字と文字の間隔を変更する場合は NSAttributedString という属性付き文字列クラスを使います。

NSKernAttributeName をキーに、文字間隔を値にした Dictionary を作成して、NSAttributedString を生成します。(文字間隔はデフォルトからの差分)

生成した NSAttributedString をUILabel に setAttributedText で設定すると、文字間隔を調整した文字列が表示されます。

文字間隔 ±0 サンプル

- (void)sampleUILabelSetAttributedTextKerning0
{
    NSString *stringToBeKerned = @"Sample Kerning Text" ;
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:0.0],NSKernAttributeName,nil] ;
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:stringToBeKerned attributes:attributes] ;

    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setAttributedText:attributedText] ;
    [self.view addSubview:label] ;
}

文字間隔 ±0 表示結果

文字間隔に ±0 を指定して表示した結果です。普通ですね。

UILabel_2_580

文字間隔 +4.0 サンプル

- (void)sampleUILabelSetAttributedTextKerningPlus4
{
    NSString *stringToBeKerned = @"Sample Kerning Text +4.0" ;
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:4.0],NSKernAttributeName,nil] ;
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:stringToBeKerned attributes:attributes] ;

    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setAttributedText:attributedText] ;
    [self.view addSubview:label] ;
}

文字間隔 +4.0 表示結果

文字間隔に +4.0 を指定して表示した結果です。

0 のときに比べてかなり間隔が長くなりました。

UILabel_2_800

文字間隔 -2.0 サンプル

- (void)sampleUILabelSetAttributedTextKerningMinus2
{
    NSString *stringToBeKerned = @"Sample Kerning Text -2.0" ;
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:-2.0],NSKernAttributeName,nil] ;
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:stringToBeKerned attributes:attributes] ;

    UILabel *label = [[UILabel alloc] initWithFrame:viewFrame] ;
    [label setAttributedText:attributedText] ;
    [self.view addSubview:label] ;
}

文字間隔 -2.0 表示結果

文字間隔に -2.0 を指定して表示した結果です。

文字間がほぼ無く、くっついて見えます。

UILabel_3_138