2009-09-10 30 views
5

Tôi có hai độ rộng có thể cho một chuỗi tôi muốn hiển thị trong một nhãn trong ô bảng và tôi cần tính toán chiều cao sao cho chiều cao của ô bảng được ghi chính xác. tuy nhiên, bất kể tôi làm gì với kích thước ràng buộc, tôi nhận được cùng chiều cao, điều đó là không chính xác trong trường hợp tôi muốn. Mã tôi đang sử dụng:Tại sao sizeWithFont: constrainedToSize: lineBreakMode: trả lại kích thước không chính xác?

CGFloat width = 300.0f; 
NSString * value = @"LongText LongText LongText LongText LongText LongText"; 
CGSize contentSize = [value sizeWithFont: [UIFont systemFontOfSize: 14.0f] 
         constrainedToSize: CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode: UILineBreakModeWordWrap]; 

Khi tôi kiểm tra biến contentSize, chiều rộng là 252 và chiều cao 36 được mong đợi. Nhưng nếu thay vì 300.0fi cắm 222.0f vào biến chiều rộng, chiều rộng là 189 nhưng chiều cao vẫn là 36, và chỉ 4 từ LongText đầu tiên được hiển thị trên 2 dòng (dòng thứ ba dường như bị cắt bỏ bằng cách nào đó trong phép tính). Có ai biết tại sao điều này xảy ra?

+0

Nếu bạn đang sử dụng UITextView, hãy xem câu trả lời của tôi tại đây: http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198 # 15408198 – domsom

Trả lời

3

Mã của bạn có vẻ đúng. Hãy xem herehere để xem có bất kỳ điều gì không ổn trong mã của bạn hay không.

+0

Cảm ơn, nhưng những điều đó không thực sự giải thích tại sao phương thức này không hoạt động chính xác cho chiều rộng mỏng hơn. – Kevlar

+0

Không, mã của bạn phải hoạt động. Tôi nghĩ có lẽ bạn sẽ thấy sự khác biệt giữa mã của họ và của bạn ... Tôi đã không. – mahboudz

+2

ngay; Tôi chỉ tự hỏi nếu bất cứ ai khác nhận thức được rằng mã táo thực sự tính toán kích thước là không chính xác và nếu có một thay thế. – Kevlar

3

Hóa ra nó đang trả lại kích thước chính xác; mã tôi đã làm việc trên đã được sử dụng chiều rộng không chính xác thay vì chiều rộng từ phương pháp này đó là lý do tại sao văn bản đã bị cắt và tôi đã nhầm lẫn.

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