gpt4 book ai didi

objective-c - UIView 的 frame origin 和 size 是只读的背后的逻辑是什么

转载 作者:行者123 更新时间:2023-12-01 19:20:13 25 4
gpt4 key购买 nike

我知道如果你想调整 UIView你必须这样做:

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

而不仅仅是:
view.frame.size.height -= 100;

我的问题是这背后的逻辑是什么?是 frame 的二传手做一些额外的事情,比如打电话 setNeedsDisplay ?

最佳答案

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

view.frame.size.height -= 100;

实际上做了以下两件事:
  • 调用[view frame]返回 CGRect 的方法结构 - 复制 View 中存储的内容
  • 然后它更改 height副本的字段 - 因此它不会影响存储在 View 中的结构的值

  • Is the setter for frame doing something extra, like maybe call setNeedsDisplay ?



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

    关于objective-c - UIView 的 frame origin 和 size 是只读的背后的逻辑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710793/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com