我可能正在做一些非常愚蠢的事情,但我无法弄清楚为什么这不起作用。
我正在尝试执行一个简单的 UIView 块动画,但遇到了麻烦。我在一个测试项目中重新创建了。
我在视图控制器上有一个视图,当我按下按钮时,我创建一个新视图并将其框架设置为当前视图之外(在其上方)。我想为过渡设置动画,以便当前屏幕上的视图向下移出视图,因为它上面的新视图下降以取代它的位置。
这是连接到按钮的代码,原始视图连接为self.view1
- (IBAction)buttonPressed:(id)sender {
UIView *view2 = [[UIView alloc] init];
view2.backgroundColor = [UIColor blueColor];
float offScreenY = 0 - self.view1.frame.size.height;
CGRect offScreenRect = CGRectMake(0, offScreenY, self.view1.frame.size.width, self.view1.frame.size.height);
view2.frame = offScreenRect;
[self.view addSubview:view2];
float oldY = self.view1.frame.origin.y + self.view1.frame.size.height;
CGRect oldRect = CGRectMake(0, oldY, self.view1.frame.size.width, self.view1.frame.size.height);
[UIView animateWithDuration:0.5 animations:^{
self.view1.frame = oldRect;
view2.frame = CGRectMake(0, 0, self.view1.frame.size.width, self.view1.frame.size.height);
}];
}
这只会使 view2 向下动画,而不会为 view 1 设置动画。
如果我不将视图 2 添加为子视图,并且仅将 view1 的帧更改放在动画块中,则 view1 会正确设置动画。
但他们不会一起工作!
为什么是这样?