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),不知道为什么?

  • 相关阅读:
    CodeForces 543d Road Improvement
    UVA Foreign Exchange
    ZOJ 1825 Compound Words
    UVA 10125 Sumsets
    CodeForces
    32位linux(centos)下mongoDB的安装
    关于PHP 采集类
    关于微信支付零时工代码的修正方法
    微信公众号申请,微信支付全攻略 2
    简介CentOS与 Ubuntu的不同
  • 原文地址:https://www.cnblogs.com/beddup/p/4951348.html
Copyright © 2011-2022 走看看