Đây là một cách tiếp cận khác. Tìm hiểu kích thước tối thiểu của văn bản để nó không bị quấn nhiều hơn một dòng. Nếu nó kết thúc tốt đẹp trên một dòng, bạn có thể tìm hiểu bằng cách sử dụng chiều cao.
Bạn có thể sử dụng mã này:
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
300 là chiều rộng của màn hình với một không gian nhỏ cho lợi nhuận. Bạn nên thay thế các giá trị của riêng bạn cho phông chữ và kích thước, và cho lineBreakMode
nếu bạn không sử dụng IB.
Bây giờ myStringSize
sẽ chứa height
mà bạn có thể kiểm tra theo chiều cao của nội dung bạn biết chỉ cao 1 dòng (sử dụng cùng một phông chữ và kích thước). Nếu nó lớn hơn, bạn sẽ cần phải cắt văn bản. Lưu ý rằng bạn nên thêm một ... vào chuỗi trước khi bạn kiểm tra lại (thêm ... có thể đẩy nó vượt quá giới hạn một lần nữa).
Đặt mã này trong vòng lặp để cắt văn bản, sau đó kiểm tra lại với chiều cao chính xác.
Nguồn
2010-04-19 16:34:16
Cảm ơn rất nhiều! Câu trả lời của bạn là chính xác và mẹo để thêm "..." trước khi kiểm tra kích thước lại là khôn ngoan. – camilo
Đối với iOS 7, bạn nên kiểm tra [câu trả lời này] (http://stackoverflow.com/a/18951386/3965) –
nó không được chấp nhận sau ios7, bạn nên sử dụng boundingRectWithSize: .. – 7heaven