Chiều cao mặc định của UITableViewCell là gì?


166

Tôi nghĩ rằng thông tin này sẽ dễ dàng tìm thấy hơn :-)

Chiều cao mặc định của UITableViewCell là bao nhiêu? Nó trông giống như 44 pixel, nhưng tôi muốn chắc chắn hơn.

Câu trả lời:


361

Đó là 44 pixel. Chắc chắn rồi. Tôi sẽ không bao giờ quên con số đó.

44px cũng là chiều cao mặc định cho UIToolbar và UINavlationBar. (Cả hai đều chuyển sang 32px khi được tự động chuyển sang hướng ngang.)


61
Haha, "Tôi sẽ không bao giờ quên con số đó" nghe có vẻ đáng ngại ;-)
Rob

4
@antony: view.bound.size.height
samvermette

4
@MikeyWard: Có lẽ bạn đã tìm ra điều này rồi, nhưng dấu phân cách 1px được bao gồm trong chiều cao. Nó thực sự bao gồm các nội dung dưới cùng của tế bào.
Ben S

44
Về mặt kỹ thuật, nó là 44 điểm. Nó sẽ xuất hiện tới 88px trên màn hình Retina. Không để chẻ sợi tóc hay bất cứ điều gì.
Ben Mosher

23
tableView.rowHeight
Hunter

27

Nếu bạn muốn kích thước mặc định trên bất kỳ thiết bị nào bạn có thể sử dụng: UITableViewAutomaticDimension

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

Mặc dù 44 pixel hiện tại là mặc định nhưng đây là một phương pháp hữu ích nếu ứng dụng của bạn phụ thuộc vào việc đặt giá trị mặc định.


3
Được đổi tên thành UITableView.automaticDimensionstrong Swift 4
Bot

Điều này chỉ bao giờ hoạt động nếu tất cả những gì bạn muốn là chiều cao mặc định. Nếu bạn thực sự muốn một số bội của chiều cao mặc định, thì giá trị được trả về bởi đây không phải là chiều cao thực tế. Apple đã ẩn chiều cao điểm thực sự đằng sau con số ma thuật này (tỷ lệ này là -1).
PKCLsoft

16

Khi style = UITableViewStyleGrouped, chiều cao mặc định của các ô trên cùng và dưới cùng thực sự là 45.0f(không 44.0f). Và, nếu bảng được nhóm chỉ là một hàng thì chiều cao ô sẽ là 46.0f.


có bao gồm cả dải phân cách không?
lhunath

10

Nếu bạn muốn tính toán điều này một cách nhanh chóng, chỉ cần phân bổ một ô bảng giả và đọc chiều cao của nó

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
int height = cell.frame.size.height ;

Bằng cách này, bạn sẽ chống lại những thay đổi trong các phiên bản iOS trong tương lai, mặc dù tôi cho rằng điều đó là không thể.


Đây là vấn đề với tính năng tự động thanh toán
MobileMon

27
Mọi thứ đều có vấn đề với autolayout.
devios1

Có vấn đề như thế nào, chính xác?
AndrewR

3

"Khi style = UITableViewStylegrouped, chiều cao mặc định của các ô trên cùng & dưới cùng thực sự là 45.0f (không phải 44.0f). Và, nếu bảng được nhóm chỉ là một hàng thì chiều cao của ô sẽ là 46.0f." Nó sai!! 44.0f trên thực tế! Tôi chỉ kiểm tra nó!


2

Nghe có vẻ đúng. Nhưng để chắc chắn rằng bạn có thể tải lên Trình xây dựng giao diện, hãy đặt UITableViewCell vào dự án sau đó kiểm tra các thuộc tính kích thước trong cửa sổ Thanh tra. Tôi không có MacBook bên mình ngay bây giờ vì vậy tôi không thể kiểm tra. Nhưng nếu bạn không nhận được câu trả lời tốt hơn từ ai đó, đó là cách bạn có thể tự kiểm tra.


À, được rồi, đó là nơi ban đầu tôi có 44.
Cướp

2

Trong Swift 4Swift 5 chỉ cần sử dụng:

UITableView.automaticDimension

Sử dụng 44px sẽ không đủ vì nó sẽ thay đổi theo mật độ pixel màn hình khác nhau.


0

Trên iOS 12, chiều cao mặc định trên iPhone X như các thiết bị (X, XS, XS Max, XR) là 49pt .

Các thiết bị khác trên iOS 12 vẫn có 44pt làm mặc định. Đó là một sự khác biệt tinh tế, nhưng nó cảm thấy như một sự cải thiện tốt trong so sánh trực tiếp.

Nếu bạn không tin tôi, hãy tự đo trong ảnh chụp màn hình này (đừng quên chia cho 3) ...;)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.