我有一个应该显示几个子视图的主视图。这些子视图直接位于彼此的上方和下方(在 z 轴上),并且将下拉(在 y 轴上)并使用以下代码向上移动:
if (!CGRectIsNull(rectIntersection)) {
CGRect newFrame = CGRectOffset (rectIntersection, 0, -2);
[backgroundView setFrame:newFrame];
} else{
[viewsUpdater invalidate];
viewsUpdater = nil;
}
rectIntersection 用于告诉视图何时完全向下移动并且不再位于前面的后面(当它们不再重叠时,rectIntersection 为空),它一次向下移动 2 个像素,因为这都在重复计时器内。我希望我的主视图,即包含这两个其他视图的主视图,向下调整大小,以便它在背景视图被降低时扩展。这是我正在尝试的代码:
CGRect mainViewFrame = [mainView frame];
if (!CGRectContainsRect(mainViewFrame, backgroundFrame)) {
CGRect newMainViewFrame = CGRectMake(0,
0,
mainViewFrame.size.width,
(mainViewFrame.size.height + 2));
[mainView setFrame:newMainViewFrame];
}
这个想法是检查 mainView 是否包含这个背景视图。当 backgroundView 降低时,主视图不再包含它,它(应该)向下扩展 2 个像素。这会一直发生,直到背景视图停止移动并且主视图最终包含背景视图。
问题是 mainView 根本没有调整大小。背景视图正在降低,我可以看到它,直到它从主视图的底部消失。mainView 应该已调整大小,但它不会向任何方向改变。我尝试使用 setFrame 和 setBounds(带和不带 setNeedsDisplay)但没有任何效果。
我真的只是在寻找一种以编程方式更改主视图大小的方法。