我覺得作為一個(gè)iOS開發(fā)肯定遇到過一個(gè)問題掌腰,使用tableView的HeadView帽揪,這個(gè)控件是很好用的,因?yàn)樗屛覀兒茌p松的分出復(fù)雜的控件和下面的cell的寫法分開辅斟。
但是這個(gè)控件有坑转晰,只要是你想啊,他在一個(gè)tableView的頭部士飒,然后如果他不是一個(gè)高度變化的固定View還好查邢,你只需要在加載的時(shí)候把HeadView里面的子控件添加進(jìn)去,然后設(shè)定死他的高度就好了酵幕,可是扰藕,問題是他如果是一個(gè)高度變化的呢?芳撒?
好吧各位大牛都在笑我了邓深,坑比,這都好意思寫出來笔刹?芥备?好吧,但是本著裝逼的需要還是貼出來吧舌菜,主要是為了不讓簡(jiǎn)書空著萌壳,所以高手勿噴。
言歸正傳日月,怎么解決袱瓮?他其實(shí)是因?yàn)槟忝看蝿?dòng)態(tài)的改變headView的高度的時(shí)候,但是TableView已經(jīng)加載好了爱咬,所以HeadView的高度變換了尺借,但是tableView不知道,所以你的頭部就遮擋住cell了精拟,所以這個(gè)時(shí)候每當(dāng)你改變以后燎斩,再一次的通知tableView 就好了,也就是每一次改變以后重新調(diào)取屬性串前。
self.backTableView.tableHeaderView? = HeadView ;
好吧瘫里,被我的標(biāo)題吸引進(jìn)來的給位觀眾老爺就該說了,我去荡碾,能在坑點(diǎn)么谨读?這個(gè)誰都知道,但是問題在于坛吁,現(xiàn)在為了適配比較多的使用了AutoLayOut劳殖。這個(gè)確實(shí)是個(gè)神器铐尚,有了它再也不用滿腦子的想Frame了,但是如果你用這個(gè)來約束你的控件哆姻,然后你寫了以這個(gè)self.backTableView.tableHeaderView? = HeadView ;方法發(fā)現(xiàn)然并卵宣增,其實(shí)主要是,這個(gè)約束是在繪制的時(shí)候才會(huì)繪制出來控件的位置和寬高矛缨,所以你直接用這個(gè)方法沒有爹脾,
然后iOS就有一個(gè)更牛逼的東西,箕昭,灵妨,
?layoutIfNeeded 這個(gè)方法能夠在View沒有繪制之前就能計(jì)算位置和寬高,所以這個(gè)問題的解決方法就是在寫上面的賦值方法之前讓他先繪制一下落竹,
[HeadView layoutIfNeeded];
self.backTableView.tableHeaderView? = HeadView ;
這個(gè)方法同樣適用于很多約束的控件的寬高不能計(jì)算的地方泌霍,
好了,完了述召,第一篇小文章就這么出了朱转,謝謝點(diǎn)贊,鼓勵(lì)一下新的寫手积暖,藤为,啊哈哈,