2013-02-10 32 views
9

Tôi có UILabel chứa hai chuỗi được phân tách được phân tách bằng một dòng mới. Chuỗi FIrst có kích thước phông chữ được đặt là 17 và kích thước thứ hai là 14. Tôi muốn đổi kích thước phông chữ tối thiểu NSMutableAttributedString thành kích thước phông chữ tối thiểu nếu nội dung của nó không vừa với một dòng.iOS - Tự động thu nhỏ UILabel với văn bản được phân bổ

Điều đó có khả thi không? Nó là khá đơn giản để cấu hình hành vi như vậy UILabel bằng cách thiết lập "tự động thu nhỏ kích thước phông chữ tối thiểu" trong IB cho văn bản đơn giản, nhưng không biết làm thế nào để làm điều đó cho văn bản được phân bổ.

Đây là mã của tôi:

NSString *eventName = @"Looong Event Name"; 
NSString *placeString = @"My place"; 

eventName = [eventName stringByAppendingString:@"\n"];   
NSMutableAttributedString *attrName = [[NSMutableAttributedString alloc] initWithString:eventName]; 
[attrName addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, [eventName length])]; 


NSMutableAttributedString *attrPlace = [[NSMutableAttributedString alloc] initWithString:placeString]; 
[attrPlace addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, placeString.length)]; 
[attrPlace addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(0, placeString.length)]; 

    NSMutableAttributedString *finalString = [[NSMutableAttributedString alloc] initWithAttributedString:attrName]; 
    [finalString appendAttributedString:attrPlace]; 

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:100]; 

    nameLabel.attributedText = finalString; 
+0

Điều này đã trở thành cơn đau đầu khi tôi cố gắng làm điều đó. Tôi sẽ không đăng câu trả lời này vì có thể có giải pháp tốt hơn mà tôi không thể tìm thấy. Nhưng, tôi đã kết thúc cấu hình tất cả các thuộc tính chuỗi của tôi theo lập trình (ngoại trừ những thuộc tính phải làm với kích thước) và tạo nhãn là IBOutlet và được định cấu hình "Kích thước phông chữ tối thiểu" trong trình đơn thả xuống "Autoshrink" trong trình kiểm tra thuộc tính. –

Trả lời

4

Tôi đoán đây là một tiếp nối từ earlier question của bạn.

Tôi không nghĩ bạn có thể làm điều này tự động, nhưng có một phương pháp size của NSAttributedString mà bạn có thể sử dụng để kiểm tra xem chuỗi của bạn có quá lớn không và tự điều chỉnh nếu cần.

+0

Cảm ơn bạn một lần nữa! :-) – Oleg

+0

Vì vậy, bạn đã giải quyết nó Oleg? – Simon

+0

Có, tôi đã sử dụng hai chữ UILabels riêng biệt thay thế. – Oleg

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