本文旨在解決以下問題
1.需要從XIB創(chuàng)建TableViewHeader
2.需要Tableview高度自適應(yīng)
首先要繪制好XIB視圖,將xib元素中,高度不固定的視圖高度約束去掉,例子:

示例
上圖中的WebView是高度變化元素,將其設(shè)置好和父視圖的上下左右的約束,去掉高度約束,去掉父視圖的高度約束。(UILabel等除非是高度自適應(yīng),全部應(yīng)當設(shè)置為固定高度)。
然后,要在VC中處理該視圖,因為TableView的特殊性,在設(shè)置完TableViewheader之后,高度便固定,即便更新了約束,一方面會報錯,說明各元素高度之間沖突,第二方面,會出現(xiàn)超長和Cell元素混合在一起,所以我另辟蹊徑,首先將HeaderView 初始化添加到self.view,設(shè)置好上下左右和高度的約束。然后在HeaderView中更新Webview的高度并回調(diào)給VC,高度刷新成功后,再將HeaderView移除self.view,并設(shè)置到tableview,此時高度已經(jīng)處理完畢。

image.png

圖片
然后切記要在WebView所在的控制器監(jiān)聽代理,在webViewDidFinishLoad、webViewDidStartLoad、didFailLoadWithError方法中回調(diào)該block

image.png
另外要說一點的就是,我這種做法是不完美的,在加載完成webview之前,頁面都不可操作滑動,可優(yōu)化空間很大,歡迎大家溝通交流。