我知道如果你想调整 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/