Tôi có UITableView
(Được nhóm lại!) Và cần tính chiều cao của hai kiểu ô: UITableViewCellStyleDefault
và UITableViewCellStyleValue2
.heightForRowAtIndexPath cho chuỗi dài hơn NSStrings
Đây là cách tôi làm điều đó cho UITableViewCellStyleDefault
:
CGSize textSize = {300.f, 200000.0f};
CGSize size = [myTextString1 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Và đối với UITableViewCellStyleValue2
:
CGSize textSize = {207.f, 200000.0f};
CGSize size = [myTextString2 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Vấn đề của tôi nó rằng họ trở lại đỉnh cao không chính xác và tôi nghĩ rằng đó là textSize
nơi Tôi sử dụng số không chính xác. Với văn bản dài, phần dưới được cắt ngắn (thường chỉ là một dòng với một vài từ), và cho cả hai kiểu ô, chúng có khoảng cách kỳ lạ bên trên và bên dưới văn bản trong ô.
Đối với UITableViewCellStyleValue2
Tôi đã nhận kích thước chiều rộng (207.0f
) từ việc tạo văn bản.backgroundColor đỏ và sau đó chỉ cần tính kích thước của hộp. 300.0f
chiều rộng cho UITableViewCellStyleDefault
là ô lớn đến mức nào với .
Có ai biết giá trị nào tôi cần sử dụng để tính toán đúng kích thước của NSString
và do đó có được chiều cao thích hợp cho các ô của tôi không?
Cảm ơn
Cảm ơn. Tôi đã làm một điều gì đó một mình với cùng một dòng. Tôi phát hiện ra mình đã gặp sự cố với các ô Value2, vì tôi cho rằng chúng là fontSize 14, trong khi chúng thực sự là 15. Đối với mã của bạn, bạn có thể muốn thêm: result = MAX (labelsize.height + 15 , 44.0f); Chỉ trong trường hợp nếu ô trống hoặc nhỏ hơn thì 2 dòng sẽ trả về với chiều cao tối thiểu là 44.0f, đó là bình thường. Nếu chỉ có một dòng, nó sẽ làm cho nó nhỏ hơn 44.0f. – runmad