设置UITableView设置contentsize
由于UITableView是繼承自UIScrollView的,所以他是可以設(shè)置contentsize的。
但是,我在試驗(yàn)的過程中,初始化UITableView實(shí)例后,直接設(shè)置它的contentsize是不起作用,在搜尋相關(guān)資料得知,UITableView會自動設(shè)置contentsize,因?yàn)槲覀冊诮ableview的時候是不用自己去設(shè)置contentsize的,她是自己計算出來的。
?
高潮要來了!!!
?
她是在實(shí)現(xiàn)她的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她會默認(rèn)的設(shè)置為tableview的frame的width。so當(dāng)你的scrollview的contentsize的width和frame的width一樣大的時候,她是不會滑動的,所以,為什么,我們費(fèi)心設(shè)置contentsize不起作用了。因?yàn)槲覀冎霸趺丛O(shè)置,她都會默認(rèn)經(jīng)過那幾個方法的時候自動重算一遍。
?
高潮來了!!!
那我們?nèi)绾巫约涸O(shè)置她的contentsize呢,我是在
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath代理中做的,并且設(shè)置成功了。
?
總結(jié),開始我以為既然tableview是繼承自scrollview的,那她為什么不能設(shè)置contentsize呢,難道scrollview中有其他限制?或者是tableview中有限制。最后得知了她的自己重算流程,得知原來,她是在進(jìn)行datasource的時候,重新設(shè)置了。
那最后想到,我們在她自動設(shè)置完成后,我們再給她設(shè)置一下不就好了。
?
或者在-(void)viewDidAppear:(BOOL)animated;設(shè)置,穩(wěn)穩(wěn)地
-(void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];self.tableView.contentSize = CGSizeMake(kSCreenWidth, kSCreenHeight+self.picView.height); }?
轉(zhuǎn)載于:https://www.cnblogs.com/yyyyyyyyqs/p/7149607.html
總結(jié)
以上是生活随笔為你收集整理的设置UITableView设置contentsize的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CKD 实现
- 下一篇: TMS320DM642学习----第一篇