2015-05-27 15 views
11

tôi nhận được chiều rộng của một UILabel [sau khi văn bản đã được thiết lập] với:Làm thế nào để có được chiều rộng chính xác của một nhãn UILabel sau khi văn bản đã được thiết lập?

myUILabel.frame.width 

nhưng luôn luôn cùng chiều rộng của nó, không có vấn đề nếu nó giữ String: "Hello." hoặc String: "Hello everyone on this planet.". Nhưng UILabel cần phải có chiều rộng lớn hơn với String thứ hai.

+0

sử dụng [myUILabel sizeToFit]; chúng tôi cũng có thể tính toán chiều rộng bằng cách sử dụng như http://stackoverflow.com/questions/1340667/pixel-width-of-the-text-in-a-uilabel – Venkat

+0

Đối với những gì bạn cần chiều rộng? Và bạn đang sử dụng bố cục tự động? Nếu bạn đang sử dụng bố trí tự động, bạn có thể loại bỏ nó bằng cách chơi với nội dung ưu tiên để frame.width sẽ trả về giá trị đúng –

+0

Bạn có thể xem xét kích thước nội dung nội tại của một nhãn mà phải làm với bố cục tự động và ràng buộc bố cục. Chỉ cần google nó, có thể bạn thậm chí thực sự muốn sử dụng bố trí tự động khi bạn muốn biết chiều rộng của nhãn. – borchero

Trả lời

26

Hãy thử myUILabel.intrinsicContentSize(). Hãy chắc chắn rằng bạn đặt phông chữ của bạn đầu tiên, tất nhiên.

0

Bạn nên sử dụng [label sizeToFit]

sizeToFit trên nhãn sẽ kéo dãn nhãn để thích ứng với văn bản.

Giải pháp khác là tính chiều rộng của chuỗi và điều chỉnh nhãn dựa trên chiều rộng của chuỗi.

Đối với giải pháp thứ hai bạn có thể tính toán kích thước của chuỗi như

CGSize strSize = CGSizeZero; 

CGSize minSize = CGSizeZero; 

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 
{ 
    NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease]; 
    CGRect rect = [attributedText boundingRectWithSize:constraintSize 
               options:NSStringDrawingUsesLineFragmentOrigin 
               context:nil]; 
    strSize = rect.size; 
} 
else 
{ 
    strSize = [text sizeWithFont:label.font constrainedToSize:constraintSize]; 
} 
Các vấn đề liên quan