1

iOS 6 の UITextView の attributedText プロパティで、特定の範囲内で NSKernAttributeName をさまざまな float 値に設定しています。attributedText の enumerateAttribute オプション ブロック メソッドを使用して値が取得されるたびに、カーニングは 0 に設定されます。コードは以下のとおりです。

検索

        NSAttributedString *currentText = _textView.attributedText;
        [currentText enumerateAttribute:NSKernAttributeName inRange:NSMakeRange(0, currentText.length) options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:^(id value, NSRange range, BOOL *stop){
              float value = [(NSNumber *)value floatValue];
              //Do something with value, but logs show value is always 0 
        }];

保管所

      NSMutableAttributedString *updatedText = self.textView.attributedText.mutableCopy; 
     _kernValue += 0.1f;
     NSDictionary *attributes = @{
                                 NSForegroundColorAttributeName: UIColor.linkColor,
                                 NSFontAttributeName: [UIFont systemFontOfSize:14.0],
                                 NSKernAttributeName: [NSNumber numberWithFloat:_kernValue]
                                 };

     NSMutableAttributedString *replacementString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@ ", myString] attributes:attributes];
     [updatedText replaceCharactersInRange:myRange withAttributedString:replacementString];
    self.textView.attributedText = updatedText;
4

1 に答える 1

0

NSAttributedStringヘッダーから:

UIKIT_EXTERN NSString *const NSKernAttributeName NS_AVAILABLE_IOS(6_0);                //

ポイント単位の浮動小数点値を含む NSNumber。デフォルトのカーニングを変更する量。0 はカーニングが無効であることを意味します。(注: nil と 0 以外の値は iOS ではサポートされていません)

于 2013-09-26T08:40:12.887 に答える