2017-08-02 49 views
0

我有一个UITextField搜索框,首先它是隐藏的,我想用动画显示它,它的工作原理。但是当我再次隐藏它时,动画会突然发生,而不是动画中定义的时间。显示隐藏的视图,然后隐藏它与Objective-C中的相同的动画

这里是我的代码:

[UIView transitionWithView:searchbox duration:0.3 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{searchbox.hidden = NO;}completion:NULL]; 

    [UIView transitionWithView:searchbox duration:0.3 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{searchbox.hidden = YES;}completion:NULL]; 
+0

只是增加其在时间隐藏以查看效果。即使在特定的时间,我的身边也能很好地工作,但速度更快。 –

回答

0

大多数使用.alpha隐藏或显示UIView

正确的代码是:

[UIView transitionWithView:searchbox duration:0.3 
options:UIViewAnimationOptionTransitionCrossDissolve 
animations:^{searchbox.alpha=1;}completion:NULL]; 

[UIView transitionWithView:searchbox duration:0.3 
options:UIViewAnimationOptionTransitionCrossDissolve 
animations:^{searchbox.alpha=0;}completion:NULL]; 
0

应该有你的动画调用之间的延迟。 下面是一个例子:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(show) userInfo:nil repeats:NO]; 
} 

- (void) show { 
    [UIView transitionWithView:searchbox duration:0.3 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{searchbox.hidden = NO;}completion:NULL]; 

    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hide) userInfo:nil repeats:NO]; 
} 

- (void) hide { 
    [UIView transitionWithView:searchbox duration:0.3 
         options:UIViewAnimationOptionTransitionCrossDissolve 
        animations:^{searchbox.hidden = YES;}completion:NULL]; 
} 
0

要显示

searchbox.alpha = 0; 
searchbox.isHidden = NO; 
[UIView transitionWithView:searchbox 
      duration:0.3 
      options:UIViewAnimationOptionTransitionCrossDissolve 
     animations:^{ 
      searchbox.alpha = 1.0 
    }completion:NULL]; 

要隐藏的观点

searchbox.alpha = 1.0; 
searchbox.isHidden = NO; 
[UIView transitionWithView:searchbox 
      duration:0.3 
      options:UIViewAnimationOptionTransitionCrossDissolve 
     animations:^{ 
      searchbox.alpha = 0 
    }completion:^(isComplete){ 
     if (isComplete) { 
     searchbox.isHidden = YES 
     }}]; 
0

使用alpha属性,而不是隐藏

[UIView transitionWithView:searchbox duration:0.3 
options:UIViewAnimationOptionTransitionCrossDissolve 
animations:^{searchbox.alpha = 1.0;}completion:NULL]; 

[UIView transitionWithView:searchbox duration:0.3 
options:UIViewAnimationOptionTransitionCrossDissolve 
animations:^{searchbox.alpha = 0;}completion:NULL];