2013-01-21 25 views
8

Tôi có một số mã:động thay đổi UILabel chiều rộng không làm việc với autolayout

CGRect currentFrame = textLabel.frame; 
CGSize max = CGSizeMake(textLabel.frame.size.width, 3000); 
CGSize expected = [[textLabel text] sizeWithFont:textLabel.font constrainedToSize:max lineBreakMode:textLabel.lineBreakMode]; 
currentFrame.size.height = expected.height; 
textLabel.frame = currentFrame; 

expected.height = expected.height + 70; 

[scrollView setContentSize:expected]; 

textLabel đặt bên trong UIScrollView để hiển thị thông tin văn bản có nhiều dòng.

Trong phiên bản cũ hơn của ứng dụng, không hỗ trợ màn hình 4 inch, mọi thứ đều hoàn hảo. Nhưng bây giờ, thật không may, thay đổi kích thước UILabel không hoạt động.

Có thể, ai đó có thể tư vấn cho tôi, tôi nên thay đổi điều gì?

Cảm ơn.

+1

tại sao bạn không sử dụng điều khiển 'UITextField' thay thế? – holex

Trả lời

27

Khi sử dụng Tự động thanh toán, bạn không nên cập nhật thuộc tính khung, thay vào đó sửa đổi các đường viền trên một chế độ xem.

Mặt khác, bạn cũng có thể để AutoLayout hoạt động cho bạn. Đảm bảo rằng thuộc tính numberOfLines của nhãn được đặt thành 0 và giới hạn chiều cao là loại Greater Than or Equal (> =). Bằng cách này, bố cục sẽ tự động cập nhật sau khi đặt văn bản mới trên nhãn.

+0

Rất hữu ích! Cảm ơn! –

+4

'Lớn hơn hoặc bằng' rất hữu ích !!! – Vincent

+0

nó đang hoạt động. Nó hữu ích cho mã của tôi. –

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