由于UITableView是繼承自UIScrollView的,所以他是可以設置contentsize的。
但是,我在試驗的過程中,初始化UITableView實例后,直接設置它的contentsize是不起作用,在搜尋相關資料得知,UITableView會自動設置contentsize,因為我們在建立tableview的時候是不用自己去設置contentsize的,她是自己計算出來的。
高潮要來了!!!
她是在實現她的datasource代理方法之后計算的。
一下幾個方法:
- (NSInteger)numberOfSections;
- (NSInteger)numberOfRowsInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
這些是計算她的height的,而width她會默認的設置為tableview的frame的width。so當你的scrollview的contentsize的width和frame的width一樣大的時候,她是不會滑動的,所以,為什么,我們費心設置contentsize不起作用了。因為我們之前怎么設置,她都會默認經過那幾個方法的時候自動重算一遍。
高潮來了!!!
那我們如何自己設置她的contentsize呢,我是在
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath代理中做的,并且設置成功了。
總結,開始我以為既然tableview是繼承自scrollview的,那她為什么不能設置contentsize呢,難道scrollview中有其他限制?或者是tableview中有限制。最后得知了她的自己重算流程,得知原來,她是在進行datasource的時候,重新設置了。
那最后想到,我們在她自動設置完成后,我們再給她設置一下不就好了。
轉自:http://www.cnblogs.com/hikoming/p/3452223.html