Ví dụ về NSAttributedString với hai kích thước phông chữ khác nhau?


80

NSAttributedString đối với tôi là thực sự không thể xuyên qua.

Tôi muốn đặt a UILabelđể có văn bản ở các kích thước khác nhau và tôi thu thập NSAttributedStringlà cách để thực hiện, nhưng tôi không thể đi đến đâu với tài liệu về điều này.

Tôi rất thích nếu ai đó có thể giúp tôi với một ví dụ cụ thể.

Ví dụ, giả sử văn bản tôi muốn là:

(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"

Ai đó có thể chỉ cho tôi cách làm điều đó không? Hoặc thậm chí, một tài liệu tham khảo đơn giản và dễ hiểu để tôi có thể tự học? Tôi thề rằng tôi đã cố gắng hiểu điều này thông qua tài liệu và thậm chí thông qua các ví dụ khác về Stack Overflow, và tôi chỉ là không hiểu.

Câu trả lời:


163

Bạn sẽ làm điều gì đó như thế này…

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
              value:[UIFont systemFontOfSize:20.0]
              range:NSMakeRange(24, 11)];

Điều này sẽ đặt hai từ cuối cùng trong văn bản 20 điểm; phần còn lại của chuỗi sẽ sử dụng giá trị mặc định (mà tôi tin là 12 điểm). Điều có thể gây nhầm lẫn khi đặt kích thước văn bản là bạn phải đặt kiểu chữ kích thước cùng một lúc — mỗi UIFontđối tượng đóng gói cả hai thuộc tính đó.


Kiểm tra câu trả lời này cho phạm vi SWIFT: stackoverflow.com/a/27041376/1736679
Efren

20

Giải pháp Swift 3

Ngoài ra, bạn có thể sử dụng appendhàm thay vì chỉ định các chỉ số trong ObjC hoặc Swift:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                           attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ])

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                            attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))

13

Giải pháp Swift 4:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                       attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)]);

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                        attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));

-1

Nếu bạn muốn làm điều đó một cách dễ dàng, có một git repo được gọi là OHAttributedLabel mà tôi sử dụng cung cấp một danh mục trên NSAttributedString. Nó cho phép bạn làm những việc như:

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]];
mystring.font = [UIFont systemFontOfSize:14];

Nếu bạn không muốn sử dụng lib của bên thứ 3, hãy xem liên kết này để có hướng dẫn phù hợp về cách bắt đầu với các chuỗi phân bổ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.