0

iOS 6 で文字間隔を設定する方法を教えてください。以下のコードを使用して iOS 7 で正常に動作していますが、iOS 6 で行う必要があります。

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[arraySettings objectAtIndex:indexPath.row]];

float spacing = 0.2f;
[attributedString addAttribute:NSKernAttributeName
                                 value:@(spacing)
                                 range:NSMakeRange(0, [[arraySettings objectAtIndex:indexPath.row] length])];

cell.textLabel.attributedText = attributedString;

iOS 6 で上記のコードがクラッシュした後のエラー画像:

ここに画像の説明を入力

ありがとう。

4

2 に答える 2

0

私のプロジェクトの1つで同じことをしなければならず、この同じコードを使用しました。それは私にとってはうまくいきました。

NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:@"hi this is my testing string"];    
float spacing = 1.0f;
[attributedString addAttribute:NSKernAttributeName
                         value:@(spacing)
                         range:NSMakeRange(0, [@"hi this is my testing string" length])];    
mylbl.attributedText = attributedString;
于 2014-06-30T09:26:23.483 に答える
0

私の推測では、ivar に何らかのメモリ関連の問題があると思われますarraySettings

テスト プロジェクトで提供されたコードを少し変更しましたが、iOS 6.1 と 7.1 の両方のシミュレーターで実行すると、問題なく動作するように見えました。

次のコードを使用してみて、何が起こるか見ていただけますか?

NSString *string = [[arraySettings objectAtIndex:indexPath.row] copy];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];

CGFloat spacing = 0.2f;
[attributedString addAttribute:NSKernAttributeName value:@(spacing) range:NSMakeRange(0, string.length)];

cell.textLabel.attributedText = attributedString;

それでもクラッシュが発生する場合は、arraySettings オブジェクトで何を行っているかについての詳細情報を提供する必要があります。

于 2014-06-30T10:04:38.293 に答える