2010-07-12 22 views
12

Trong ứng dụng của tôi, tableview có các loại ô tùy chỉnh khác nhau với các độ cao khác nhau. Tôi muốn đặt một cái nhìn bên dưới tableView này, mà tôi cần phải tính toán chiều cao contentView của bảng, làm thế nào tôi có thể làm điều đó?Tính toán nội dung của bảngSize.height với các ô tùy chỉnh của các loại khác nhau iphone

Trước đó tôi đã từng làm như sau: (noOfRows * cell_height), nhưng đó là cho chiều cao tĩnh.

Thanx trước.

Trả lời

0

Điều đơn giản nhất tôi có thể nghĩ đến sẽ được thiết lập tầm nhìn của bạn như của bảng tableFooterView

+0

Thanx chrispix .. nhưng footerView không helpme đạt được yêu cầu của tôi. Về cơ bản, tôi đang cố gắng tạo khung nhìn pullToReload bên dưới tableview của mình nên được đặt bên dưới tableview, để bất cứ khi nào kết thúc nội dung bù đắp của contentview tableview được hiển thị, điều này sẽ không được hiển thị, trong khi footerView hiển thị ở phần cuối của tableview. contentview. – neha

0

Tôi nghĩ rằng những gì bạn đang tìm kiếm là self.view.bounds.size.height.

Khám phá Oliver Drobnik's detailed post on creating a pull-to-reload table view. Trong trường hợp của anh ta dễ dàng hơn, bởi vì khung nhìn ở trên cùng, vì vậy anh ta kiểm tra một contentOffset phủ định.

Nếu bạn muốn nó ở phía dưới, bạn có thể kiểm tra scrollView.contentOffset.y > (self.view.bounds.size.height + pullToReloadViewHeight)

-3

Nếu bạn đã thực hiện các tế bào riêng của bạn, sau đó bạn đã có thể đã thực hiện chức năng này trong đại biểu bảng của bạn:

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

Chỉ cần lặp qua các hàng của bạn, gọi hàm này cho từng hàng và tổng hợp kết quả.

+0

Không bao gồm kích thước tiêu đề – malhal

19

UITableView là một lớp con của UIScrollView, do đó bạn có thể sử dụng các ví dụ phương pháp contentSize trên tableview của bạn:

yourtableView.contentSize.height 

nên cung cấp cho bạn chiều cao của xem nội dung tableview bạn

+7

Điều này trả về 0 nếu bạn sử dụng các ô tùy chỉnh có chiều cao tùy chỉnh. EDIT: Điều này trả về giá trị chính xác nếu bạn gọi 'TableView.ReloadData()' trước tiên. :) –

+1

Điều này là không đủ nếu các ô có chiều cao động, vì chúng là cùng loại ô, nhưng chiều cao của chúng khác nhau dựa trên kích thước nội dung của chúng – Marmoy

7

Đó là câu hỏi cũ, nhưng ngày nay tôi giải quyết vấn đề của tôi với điều này

func viewDidLoad(){ 

     super.viewDidLoad() 

     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 44 // >= 2 
    }  


    func getTableViewHeight()->CGFloat{ 

     tableView.reloadData() 
     tableView.layoutIfNeeded() 

     return tableView.contentSize.height + tableView.contentInset.bottom + tableView.contentInset.top 
    } 
+1

'tableView.layoutIfNeeded()' là khóa! – SoftDesigner

4

tôi có chiều cao calc trong chế độ xemDidLayoutSubviews() cho bộ điều khiển chế độ xem nội dung. Làm việc cho tôi (kích thước ô tự động xem bảng);

0

Các header và footer của phần này không được coi là ở chiều cao của bảng, xem xét việc này

CGSize sz = self.table.contentSize; 
sz.height += self.table.contentInset.bottom + 
      self.table.contentInset.top + 
      self.table.numberOfSections * self.table.sectionHeaderHeight; 
Các vấn đề liên quan