UIView动画在没有移动的情况下卡入到位

时间:2013-11-29 09:27:44

标签: ios iphone uiview uiviewanimation uiswitch

我正在尝试对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上执行此操作?

0 个答案:

没有答案