2012-11-17 12 views
10

Có thể sử dụng tối thiểuScaleFactor và chuỗi văn bản được phân bổ cùng một lúc không?Unterabel attributedText và minimumScaleFactor

 [myLabel setFrame:CGRectMake(6, 0, 200, 25)]; 
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"]; 
    [attStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, 20)]; 
    myLabel.attributedText = attStr; 
    [myLabel setAdjustsFontSizeToFitWidth:YES]; 
    [myLabel setAdjustsLetterSpacingToFitWidth:YES]; 
    [myLabel setMinimumScaleFactor:0.3]; 

Điều này dường như không hiệu quả. Nếu tôi đặt myLabel.text nó sẽ được chia tỷ lệ như mong đợi. Làm thế nào tôi có được quy mô để làm việc một cách chính xác?

+0

Bạn đã thử sizeToFit sau khi triển khai mã này ... –

+0

Nó có thể làm một thủ thuật .. –

+0

Không có. SizeToFit mở rộng kích thước của khung của nhãn đủ lớn để chuỗi vừa với. –

Trả lời

2

Bạn có thể lấy nhân vật phần nắm tay 20 và nhận được chiều rộng của nó, sau đó bạn có thể lấy chiều rộng phần còn lại bằng cách sử dụng cùng một cách:

CGSize maximumLabelSize = CGSizeMake(500.0,20.0);//write a really long width 

//this will turn the expected length of the labels.. 
CGSize expectedFirstLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringToIndex:21] 
sizeWithFont:[UIFont boldSystemFontOfSize:17] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 


CGSize expectedLastLabelSize = [[[[NSMutableAttributedString alloc] initWithString:@"A very long string and its first 20 characters should be bold"] substringFromIndex:20] 
sizeWithFont:[UIFont normalSystemFontOfSize:15] constrainedToSize:maximumLabelSize lineBreakMode:nil]; 

sau đó bạn sẽ biết tỷ lệ chiều dài của họ .. cho ex. phần đầu tiên là 140 px, phần còn lại là 260 px và vùng nhãn của bạn là 100 px, thì u có thể tạo 2 nhãn khác nhau với 35 px và 65 px. Và sau đó bạn có thể sử dụng setAdjustsFontSizeToFitWidth cho cả hai nhãn.

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