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