2011-11-21 18 views
6

Nếu tôi đặt textLayer.wrapped = YES, làm cách nào để thay đổi kích thước textLayer để chứa văn bản được bao bọc? Tức là, làm thế nào để tôi có được chiều cao mới của textLayer?CATextLayer gói sizeToFit?

Về cơ bản, tôi muốn một cái gì đó như -[UILabel sizeToFit].

+0

đã tự hỏi về điều đó quá .. – Nils

Trả lời

2

Điều đầu tiên bạn cần làm là lấy kích thước của văn bản.

Rất may, các NSString UIKit Additions Reference cung cấp một phương pháp để thực hiện chính xác rằng:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode 

Điều đó sẽ cung cấp cho bạn một CGSize mà sau đó bạn có thể sử dụng để thiết lập các khung UILabel hoặc bất cứ điều gì bạn lớp con của UIView rằng bạn sử dụng.

Vì vậy, giả sử textLayer là một UILabel - chứ không phải là một CALayer - bạn sẽ kết thúc với một cái gì đó như thế này:

UIFont *myFont = [UIFont boldSystemFontOfSize:12.0f]; 
CGSize myFontSize = [myString sizeWithFont:myFont]; 
myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, myFontSize.width, myFontSize.height)]; 
myLabel.text = newTitle; 
myLabel.font = myFont; 
+1

Câu hỏi đặt ra là dành cho CALayer. –

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