1

我知道,如果你想调整 a 的大小,UIView你必须这样做:

CGRect frame = view.frame;
frame.size.height -= 100;
view.frame = frame;

而不仅仅是:

view.frame.size.height -= 100;

我的问题是这背后的逻辑是什么?setter 是不是frame做一些额外的事情,比如 call setNeedsDisplay

4

1 回答 1

3

基本上它背后的原因是以下行

view.frame.size.height -= 100;

实际上做了以下两件事:

  1. 调用[view frame]返回CGRect结构的方法 -视图中存储的内容的副本
  2. 然后它会更改height副本的字段 - 因此它不会影响存储在视图中的结构的值

框架的设置器是否在做一些额外的事情,比如调用 setNeedsDisplay ?

实际上是的 - 视图的frame属性是根据它的原点、边界和变换计算的,因此设置框架也会影响它的原点和边界(并且取决于视图的 contentMode 可能会强制视图重绘)

于 2012-05-22T22:07:57.560 回答