我正在尝试对UIView
做一个简单的动画,问题是视图不会像我希望的那样展开/折叠,它只会动画到动画的结尾而不会移动那里。这是我的代码:
- (IBAction)policeReportedChanged:(id)sender {
if (self.policeReportedSwitch.isOn) {
[self.policeReportNumberColl setHidden:NO];
[UIView animateWithDuration:1.0f
animations:^
{
[self.policeReportNumberColl setFrame:CGRectMake(0, 130, 320, 65)];
[self.damageView setFrame:CGRectMake(0, 200, 320, 200)];
}
completion:^(BOOL finished)
{
}
];
} else {
[UIView animateWithDuration:1.0f
animations:^
{
[self.policeReportNumberColl setFrame:CGRectMake(0, 0, 0, 0)];
[self.damageView setFrame:CGRectMake(0, 135, 320, 200)];
}
completion:^(BOOL finished)
{
[self.policeReportNumberColl setHidden:YES];
}
];
}
我已设置动画以在开关打开时显示UIView policeReportNumberColl
,而在不打开时则显示折叠。 damageView
下面的UIView应该向上或向下移动以占据显示视图的空间。内部policeReportNumberColl
是一个UILabel
和一个UITextfield
。
我已经检查了很多,但找不到除此之外的任何其他工作。
修改
我玩了一下,发现它与发送动作的对象有关。它可以正常工作我将动画连接到Touch up inside
上的UIButton
,但如果我在我的on Value Changed
上使用UISwitch
就行不通。请参阅以下代码:
//Does work
- (IBAction) buttonClicked
{
[UIView animateWithDuration:1.0f
animations:^
{
[self.damageView setFrame:CGRectMake(0, 0, 0, 0)];
}
completion:^(BOOL finished)
{
NSLog(@"Klar");
}
];
}
//Does NOT Work
- (IBAction)switchValueChanged {
[UIView animateWithDuration:1.0f
animations:^
{
[self.damageView setFrame:CGRectMake(0, 0, 0, 0)];
}
completion:^(BOOL finished)
{
NSLog(@"Klar");
}
];
}
是否有人知道如何在UISwitch onValueChanged
上执行此操作?