IOS - 如何从XIB创建高度自适应的TableviewHeader

本文旨在解决以下问题

1.需要从XIB创建TableViewHeader
2.需要Tableview高度自适应

首先要绘制好XIB视图,将xib元素中,高度不固定的视图高度约束去掉,例子:


示例

上图中的WebView是高度变化元素,将其设置好和父视图的上下左右的约束,去掉高度约束,去掉父视图的高度约束。(UILabel等除非是高度自适应,全部应当设置为固定高度)。

然后,要在VC中处理该视图,因为TableView的特殊性,在设置完TableViewheader之后,高度便固定,即便更新了约束,一方面会报错,说明各元素高度之间冲突,第二方面,会出现超长和Cell元素混合在一起,所以我另辟蹊径,首先将HeaderView 初始化添加到self.view,设置好上下左右和高度的约束。然后在HeaderView中更新Webview的高度并回调给VC,高度刷新成功后,再将HeaderView移除self.view,并设置到tableview,此时高度已经处理完毕。


image.png
图片

然后切记要在WebView所在的控制器监听代理,在webViewDidFinishLoad、webViewDidStartLoad、didFailLoadWithError方法中回调该block

image.png

另外要说一点的就是,我这种做法是不完美的,在加载完成webview之前,页面都不可操作滑动,可优化空间很大,欢迎大家沟通交流。

你可能感兴趣的:(IOS - 如何从XIB创建高度自适应的TableviewHeader)