我有一个看法。它是一个庞大而复杂的项目的一部分。设置我的视图框架后,不会自动调用 layoutSubviews。
玩弄这个,我尝试将以下方法放入我的视图中:
-(void) setFrame: (CGRect) frame {
NSLog (@"setting frame");
[super setFrame: frame];
[self setNeedsLayout];
}
在这一点上,正如预期的那样,在设置框架时重做布局。如果我注释掉 setNeedsLayout 行,布局就没有完成。此外,当我在调用 super 的那一行单击“进入”时,调试器不会进入任何内容。据我所知,super 的 setFrame 方法没有被覆盖。
FWIW,我还做了一个小测试项目,在其中更改了视图的框架。在这种情况下,当我这样做时调用了 layoutSubviews。[我的测试项目中没有调用setNeedsLayout。]所以我的大项目中的某些东西正在改变行为。但我不知道那是什么东西。
谁能解释可能发生的事情?
编辑:澄清一下,我的框架变化正在改变视图的高度。宽度没有改变。