zoukankan      html  css  js  c++  java
  • iOS 开发 - layout engine

    constraints:

    1. 当constrainte变化时(比如activate,deactiviate 约束,改变priority,更改视图结构等),layout engine将重新计算layout,如果某个view的几何信息需要变化,view会得到通知,并且view会将其superview 标记为need layout,此时layout engine中view的几何信息已经更新,但是view本身还没有。

    2. 当layout的窗口到来时,首先更新约束, 确保没有需要变化的约束,然后遍历view层级,对所有标记为need layout 的view调用layoutSubviews, uikit将从layout engine中获得subviews的几何信息,并更新。(layoutSubviews 调用在一个很微妙的时点,此时有些view的布局已经更新,有些很没有,一般在这个方法中更新没有约束的view的布局)

    drawRect:是用来绘制view的内容,它的实现应该尽可能快,不应该在此更改subviews 的layout信息。

    ====

    遇到过这样一个bug:不知道有人遇到吗?

    一个自定义的view,从xib中加载,xib中为其subviews设置了约束。当在屏幕右侧长按的时候,设置view的frame,让其出现在左侧某个位置,当在屏幕左侧长按的时候,出现在右侧。但是有时view出现的位置并不是设置的frame(其他地方没有设置frame),不知道为什么?

  • 相关阅读:
    InstallShield自定义对话框模板代码(转)
    破解汇编知识(转)
    Openrowset数据库远程操作
    SQL类似sleep延时语句
    C#结束线程
    JavaScript中相应ActiveX事件
    Visual C# .NET 命令行编辑器
    AfxBeginThread
    atoi,atol,strtod,strtol,strtoul类型转换(转)
    SQLServer PadLeft,PadRight
  • 原文地址:https://www.cnblogs.com/beddup/p/4951348.html
Copyright © 2011-2022 走看看