我试图在 UITextView 中禁用任何类型的字距调整
不知何故,在阿拉伯字母中,文本 View 将字母紧缩以适应行,但它只会破坏整个单词,这里有一个例子:

textview 为白色背景,代码为:

NSString *aya =[mainArray objectAtIndex:indexPath.row];
cell.tx.text  = aya;
[cell.tx sizeToFit];
cell.tx.frame = CGRectMake(5, 5, 265, cell.tx.frame.size.height);
cell.tx.backgroundColor = [UIColor whiteColor];

还尝试设置 NSMutableAttributedString NSKernAttributeName 值但没有用,
--------------------- 编辑: 这是 Kern 属性的代码:
NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:aya];
[attributedString addAttribute:NSKernAttributeName
                         value:@0.0
                         range:NSMakeRange(0,[aya length])];

[attributedString addAttribute:NSFontAttributeName
                         value:font
                         range:NSMakeRange(0,[aya length])];

NSMutableParagraphStyle *paragrapStyle = [NSMutableParagraphStyle new];
paragrapStyle.alignment = NSTextAlignmentRight;
[attributedString addAttribute:NSParagraphStyleAttributeName
                         value:paragrapStyle
                         range:NSMakeRange(0,[aya length])];
[cell.tx setAttributedText:attributedString];

最佳答案

这是一个黑客,我不在电脑附近尝试,但试一试:

  • 设置 txtext 属性
    [tx setText:aya];
    
  • 从文本 View 的文本创建一个 NSMutableAttributedString
    NSMutableAttributedString *attrStr = [[tx attributedText] mutableCopy];
    
  • 在属性字符串上设置字距属性
    [attrStr setAttributes:@{ NSKernAttributeName: @(0.f) }
                     range:NSMakeRange(0, [attrStr length])];
    
  • attrStr 设置回 tx
    [tx setAttributedText:attrStr];
    

  • 这将(希望)保留 UITextView 从您的 NSString 推断的属性。

    10-08 05:30