尝试在UITextView中使用NSAttributedString显示上标/下标文本似乎在iOS13中被破坏了 - 除非有人知道其他情况?
奇怪的是,如果我使用 UIFont systemFont,那么它可以工作 - 但如果我使用任何其他字体,它就不能。
请参阅下面的代码,了解在我的测试应用程序中设置 UITextView 的代码。
- (void)viewDidLoad
{
[super viewDidLoad];
UIFont* font = [UIFont systemFontOfSize:32];
//UIFont* font = [UIFont fontWithName:@"Helvetica Neue" size:32];
//UIFont* font = [UIFont fontWithName:@"Courier" size:32];
//UIFont* font = [UIFont fontWithName:@"Arial" size:32];
NSMutableAttributedString* as = [[NSMutableAttributedString alloc] initWithString:@"Super2Script" attributes:@{NSFontAttributeName : font}];
[as addAttribute:(NSString*)kCTSuperscriptAttributeName value:@(1) range:NSMakeRange(5, 1)];
UITextView* tv = [[UITextView alloc] initWithFrame:CGRectZero];
tv.attributedText = as;
[tv sizeToFit];
[self.view addSubview:tv];
tv.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2);
}
这个简单的"修复"。
看起来kCTSuperscriptAttributeName在iOS13中不再有效(对于非系统字体(。您需要改用 NSSuperscriptAttributeName。不知道它的定义在哪里(哪个标头(,所以所需的实际字符串值是"NSSuperScript">