我有一个视图,我需要动态更改其子视图的框架以响应用户操作。当视图被加载时,我像这样初始化它的子视图:
if (self.firstSubview == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"FirstSubView" owner:self options:nil];
for (UIView *view in views) {
self.firstSubview = view;
}
}
接着:
[self.view addSubview:self.firstSubview];
初始化后,当我想修改子视图的框架时,我会执行以下操作:
self.firstSubview.frame = CGRectMake(0, 80, self.firstSubview.frame.size.width, 200);
我想要做的是在用户点击按钮时调整子视图的 Y 坐标及其高度,并在用户再次点击按钮时取回子视图的原始帧。但是,我发现有时这不起作用,Y 坐标和高度似乎并不总是像我在CGRectMake
函数中所说的那样设置。看起来该函数并不总是采用绝对值,而是取决于最后一帧的值...我的意思是,看起来该帧并不总是在此函数调用后采用 Y = 80 坐标。
也许我误解了它是如何工作的:在视图nib
文件中,我在它的 中设置了顶部和底部条Simulated Metrics
,因此视图的高度应该是这些条之间的剩余空间,并且 (0,0) 坐标应该是左上角顶栏下方的角落,对吧?有什么我想念的吗?每次我想改变它的框架时,我是否应该重新初始化并再次添加子视图?或者我还应该做些什么来应用框架的更改?
提前致谢