美文网首页
使用Autolayout, 如何获取视图的frame

使用Autolayout, 如何获取视图的frame

作者: 南国青天 | 来源:发表于2016-11-19 13:42 被阅读343次

    一般可以在UIViewController里的viewDidLayoutSubviews方法里面空间frame.
    通常这个方法会被多次调用, 直到布局完成, 然后在调用viewDidAppear.

    大概在ViewController上面嵌套了3到4个view, 而这些view在viewDidLayoutSubviews完成之后, frame仍然不是正确值. 花了一个上午查找原因和解决方案.

    我的解决方案:viewDidLayoutSubviews里面对子视图强制更新布局. 这样subview上面的控件也会开始布局.

    func viewDidLayoutSubviews{
          ...
          self.subView.setNeedsLayout()
          self.subView.layoutIfNeeded()
    }
    

    setNeedsLayout
    标记为需要重新布局,不立即刷新,但layoutSubviews一定会被调用
    配合layoutIfNeeded立即更新

    layoutIfNeeded
    如果,有需要刷新的标记,立即调用layoutSubviews进行布局

    相关文章

      网友评论

          本文标题:使用Autolayout, 如何获取视图的frame

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