动画隐藏/显示仅发生一次

时间:2013-08-07 13:13:25

标签: ios ios6 uipicker

我试图在UIPicker上做动画,当我的应用程序运行其隐藏时,按下按钮时,它会显示从按钮滑动,当我再次点击按钮时它会滑开。好吧,我的代码只做了一次。 它确实:

首次点击 - >显示选择器,isPickerHidden = NO

第二次点击 - >隐藏选择器,isPickerHidden = YES

第三次点击 - >什么都不做,但它返回isPickerHidden = NO viewDidLoad声明中的位置;

与第四次点击相同,但它不会做任何事情,只会返回正确的BOOL值。

isPickerHidden = YES;

[self.picker setHidden:isPickerHidden];

if(isPickerHidden == NO){
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.6];
        CGRect frame = self.picker.frame;
        [self.picker setFrame:CGRectOffset(frame, self.picker.frame.origin.x, self.picker.frame.origin.y)];
        [UIView commitAnimations];
        isPickerHidden = YES;
        NSLog(@"hidden yes");
    }else if(isPickerHidden == YES) {
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.6];
        CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, -200);
        self.picker.transform = transfrom;
        [self.picker setHidden:NO];
        [UIView commitAnimations];
        NSLog(@"hidden no ");
        isPickerHidden = NO;
    }

我想知道我面临的问题是什么,我错过了什么。感谢名单

2 个答案:

答案 0 :(得分:0)

为框架和选择器添加一些日志记录以查看正在发生的事情......

    NSLog(@"picker: %.0f, %.0f, %.0f, %.0f", self.picker.frame.origin.x, self.picker.frame.origin.y, self.picker.frame.size.width, self.picker.frame.size.height);

答案 1 :(得分:0)

thanx NS兄弟的回复,但我现在做了一个不同的方法,而不是从我使用CGRectMake的原始点抵消点,我做了这个

if(isPickerHidden == NO) {
        CGRect frame = self.picker.frame;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.6];

        [self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y + 216, frame.size.width, frame.size.height)];
        [UIView commitAnimations];
        isPickerHidden = YES;

    } else if (isPickerHidden == YES) {
        CGRect frame = self.picker.frame;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.6];

        [self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y - 216, frame.size.width, frame.size.height)];
        [UIView commitAnimations];
        isPickerHidden = NO;

    }
滑动向下和向上滑动都以相同的方式做得很好。但现在问题是我想让UIPicker在app load上消失所以在viewDidLoad中我确实尝试使用[self.picker setHidden:YES];但是当我按下按钮时,我使用CGRect制作的帧不会出现,我也尝试了alpha仍然没有。

我也把if-else语句的主体放入setHidden中,并且知道它们的值。 我想知道我现在缺少什么。