2013-04-10 32 views
5

Tôi đang tìm cách tô màu từ đầu tiên trong một câu có màu khác với phần còn lại của câu. METHOD_001 màu đầu tiên toàn bộ chuỗi trắng sau đó lại tô màu 8 ký tự đầu tiên màu đỏ. METHOD_002 tô màu 8 ký tự đầu tiên, trước khi sử dụng độ dài chuỗi để tính các ký tự còn lại và tô màu chúng trắng.Sửa đổi toàn bộ NSMutableAttributedString bằng cách sử dụng addAttribute:

METHOD_001 chắc chắn là tốt nhất, nhưng tôi tò mò nếu có một cách đơn giản hơn, tôi đã mong đợi để tìm một NSMutableAttributedString addAttribute: mà không mất một phạm vi và chỉ áp dụng thuộc tính cho toàn bộ chuỗi, nó có vẻ hơi của một giám sát rằng tất cả các sửa đổi để một NSMutableAttributedString yêu cầu bạn phải xác định một phạm vi, tôi thiếu một cái gì đó?

NB:Mã bao gồm các giá trị được mã hóa cứng để hỗ trợ khả năng đọc.

// METHOD_001 
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; 
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)]; 
[[self nameLabel] setAttributedText:attrString_001]; 

// METHOD_002 
NSString *string = @"Distance 1720 mm"; 
NSUInteger stringLength = [string length]; 
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string]; 
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)]; 
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))]; 
[[self distanceLabel] setAttributedText:attrString_002]; 
+0

Nếu không có gì gọi là METHOD_007, tôi sẽ đi với 001 –

Trả lời

5

Thực ra có cách khá dễ dàng để thực hiện điều đó. Ngay cả khi bạn đặt văn bản được phân bổ cho nhãn của mình, trước tiên nó được cách điệu bởi các thuộc tính thông thường của nhãn, sau đó chuỗi được phân bổ của bạn sẽ ghi đè các chuỗi tương ứng. Vì vậy, nếu bạn làm [distanceLabel setTextColor:[UIColor whiteColor]] trước (trong bảng phân cảnh hoặc mã), bạn có thể chỉ đổi màu những phần cần thiết bằng cách sử dụng attr. dây và đạt được hiệu quả mong muốn của bạn.

Các vấn đề liên quan