创建一个淡出的屏幕效果iphone

时间:2011-07-31 01:20:30

标签: iphone objective-c xcode

我有一个视图控制器....当用户按下按钮时,我想要一个黑色的屏幕在顶部淡入,一个uiactivityindicator出现在褪色的屏幕上。

如何实现这种动画效果?

-(IBAction) loginToApp:(id)sender{
     //fade in view
}

2 个答案:

答案 0 :(得分:2)

在视图顶部添加另一个视图,颜色为纯黑色。您可以在IB中或以编程方式执行此操作,只需确保它具有更高的z顺序(位于顶部)。使其alpha = 0.然后:

-(IBAction) loginToApp:(id)sender{
     [UIView animateWithDuration:1.5 animations:^{ myview.alpha = 1.0; }]
}

...显然你需要连接到该视图的插座或变量myview。 1.5 =秒。根据您的需求进行更改。

答案 1 :(得分:0)

当然可以。您可以根据需要创建叠加视图,但这将起作用(假设您在某处创建了适当的实例变量)。我的代码在我的视图控制器中,因此[self view]返回我想要遮蔽的视图。

shadeView = [[UIView alloc] initWithFrame:[[self view] bounds]];
shadeView.backgroundColor = [UIColor blackColor];
shadeView.alpha = 0.0f;
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorStyleWhiteLarge];
spinner.center = CGPointMake(CGRectGetMidX([shadeView bounds]),
                             CGRectGetMidY([shadeView bounds]));
[shadeView addSubview:spinner];
[[self view] addSubview:shadeView];

提出:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2.0];
[spinner startAnimating];
shadeView.alpha = 0.7f;
[UIView commitAnimations];

隐藏:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[spinner stopAnimating];
shadeView.alpha = 0.0f;
[UIView commitAnimations];