Đây là những gì tôi đã làm trong iOS 6. Trước tiên, thêm các khung công tác CoreText và QuartzCore. Sau đó, nhập:
#import <QuartzCore/QuartzCore.h>
#import <CoreText/CTStringAttributes.h>
#import <CoreText/CoreText.h>
Tôi đã thực hiện một hàm nhỏ nhập NSString thuần túy và xuất NSMutableAttributedString với ký tự cuối cùng trong phần siêu phía trên. Điều này có thể được sửa đổi để cho phép thiết lập superscript hoặc subscript, thay đổi giá trị kCTSuperscriptAttributeName thành -1. Ngoài ra, bạn có thể thêm một biến để xác định nơi để đặt các siêu trong chuỗi. Ngay bây giờ nó chỉ giả định kết thúc của chuỗi.
- (NSMutableAttributedString *)plainStringToAttributedUnits:(NSString *)string;
{
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:string];
UIFont *font = [UIFont systemFontOfSize:10.0f];
UIFont *smallFont = [UIFont systemFontOfSize:9.0f];
[attString beginEditing];
[attString addAttribute:NSFontAttributeName value:(font) range:NSMakeRange(0, string.length - 2)];
[attString addAttribute:NSFontAttributeName value:(smallFont) range:NSMakeRange(string.length - 1, 1)];
[attString addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"1" range:NSMakeRange(string.length - 1, 1)];
[attString addAttribute:(NSString*)kCTForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0, string.length - 1)];
[attString endEditing];
return attString;
}
Bây giờ khi tôi muốn sử dụng nó tôi có thể làm như sau để đặt nó trong một UITextField:
NSString *qlwUnitsPlainText = @"m3";
self.quantityLoadWeightUnits_textField.attributedText = [self plainStringToAttributedUnits:qlwUnitsPlainText];
Tôi hy vọng điều này sẽ giúp người khác, không có nhiều ví dụ ngoài kia!
Nguồn
2013-02-08 16:48:36
Cảm ơn. Bạn có thể sử dụng kCTSuperscriptAttributeName để tạo các siêu ký tự không? – Mahir
Có như tôi đã nói, một giá trị dương là cho các chữ viết tay. Giá trị âm cho các bảng con. –
Xin lỗi, tôi không biết làm thế nào tôi bỏ lỡ điều đó. Cảm ơn một lần nữa. – Mahir