【发布时间】:2011-08-14 22:14:17
【问题描述】:
假设我在 Xcode for iOS 中有一个隐藏视图。现在,当我将视图设置为不隐藏 (view.hidden=NO) 时,我怎样才能让它现在出现,但带有动画?
【问题讨论】:
-
你是什么意思,“有动画”?
-
任何动画,例如滑入或淡入,或 Cocoa touch 可能提供的任何其他动画
标签: iphone xcode cocoa-touch
假设我在 Xcode for iOS 中有一个隐藏视图。现在,当我将视图设置为不隐藏 (view.hidden=NO) 时,我怎样才能让它现在出现,但带有动画?
【问题讨论】:
标签: iphone xcode cocoa-touch
您可能想要的不是设置view.hidden,而是设置view.alpha 为0(对应于hidden = YES)或1(hidden = NO)。
然后您可以使用隐式动画来显示视图,例如
[UIView animateWithDuration:0.3 animations:^() {
view.alpha = 1.0;
}];
【讨论】:
如果您想要其他动画而不是仅褪色,请使用此方法
[UIView transitionWithView:_yourView duration:1.0 options:UIViewAnimationOptionTransitionCurlDown animations:^(void){
[_yourView setHidden:NO];
} completion:nil];
【讨论】:
对于淡入淡出,您可以调整视图的 alpha 属性。
myView.alpha = 0;
[UIView animateWithDuration:0.5 animations:^{
myView.alpha = 1;
}];
这将在 0.5 秒内对视图 myView 应用淡入淡出。许多 UIView 属性是可动画的;您不仅限于 alpha 渐变。您可以使用动画更改背景颜色,甚至可以旋转和缩放视图。如果您需要进一步的控制和高级动画,则可以进入 Core Animation - 一个更复杂的动画框架。
【讨论】:
-(void)showView{
[UIView beginAnimations: @"Fade Out" context:nil];
[UIView setAnimationDelay:0];
[UIView setAnimationDuration:.5];
//show your view with Fade animation lets say myView
[myView setHidden:FALSE];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(hideView) userInfo:nil repeats:YES];
[UIView commitAnimations];
}
-(void)hideView{
[UIView beginAnimations: @"Fade In" context:nil];
[UIView setAnimationDelay:0];
[UIView setAnimationDuration:.5];
//hide your view with Fad animation
[myView setHidden:TRUE];
[UIView commitAnimations];
}
或者你可以试试这个方法
self.yourView.alpha = 0.0;
[UIView beginAnimations:@"Fade-in" context:NULL];
[UIView setAnimationDuration:1.0];
self.yourView.alpha = 1.0;
[UIView commitAnimations];
【讨论】: