美文网首页
第一次发文章,直接大招

第一次发文章,直接大招

作者: 猫见证 | 来源:发表于2016-02-25 20:19 被阅读0次

    我觉得作为一个iOS开发肯定遇到过一个问题,使用tableViewHeadView,这个控件是很好用的,因为他让我们很轻松的分出复杂的控件和下面的cell的写法分开。

    但是这个控件有坑,只要是你想啊,他在一个tableView的头部,然后如果他不是一个高度变化的固定View还好,你只需要在加载的时候把HeadView里面的子控件添加进去,然后设定死他的高度就好了,可是,问题是他如果是一个高度变化的呢??

    好吧各位大牛都在笑我了,坑比,这都好意思写出来??好吧,但是本着装逼的需要还是贴出来吧,主要是为了不让简书空着,所以高手勿喷。

    言归正传,怎么解决?他其实是因为你每次动态的改变headView的高度的时候,但是TableView已经加载好了,所以HeadView的高度变换了,但是tableView不知道,所以你的头部就遮挡住cell了,所以这个时候每当你改变以后,再一次的通知tableView 就好了,也就是每一次改变以后重新调取属性。


    self.backTableView.tableHeaderView  = HeadView ;


    好吧,被我的标题吸引进来的给位观众老爷就该说了,我去,能在坑点么?这个谁都知道,但是问题在于,现在为了适配比较多的使用了AutoLayOut。这个确实是个神器,有了它再也不用满脑子的想Frame了,但是如果你用这个来约束你的控件,然后你写了以这个self.backTableView.tableHeaderView  = HeadView ;方法发现然并卵,其实主要是,这个约束是在绘制的时候才会绘制出来控件的位置和宽高,所以你直接用这个方法没有,

    然后iOS就有一个更牛逼的东西,,,

     layoutIfNeeded 这个方法能够在View没有绘制之前就能计算位置和宽高,所以这个问题的解决方法就是在写上面的赋值方法之前让他先绘制一下,


    [HeadView layoutIfNeeded];

    self.backTableView.tableHeaderView  = HeadView ;


    这个方法同样适用于很多约束的控件的宽高不能计算的地方,

    好了,完了,第一篇小文章就这么出了,谢谢点赞,鼓励一下新的写手,,啊哈哈,

    相关文章

      网友评论

          本文标题:第一次发文章,直接大招

          本文链接:https://www.haomeiwen.com/subject/wanikttx.html