如何在iOS / Xcode中使按钮点击后淡出?

4
我想让一个按钮在被点击后淡出。我知道可以使用:
_myButon.hidden = TRUE;

“...完全隐藏一个按钮,但感觉很突兀和刺眼。我也知道可以逐渐降低alpha值或其他什么东西,但不确定如何在短时间内自动实现这一点。”
“请问有人能给我一个提示,如何使用最简单的方法在点击按钮后淡出它? 我希望效果看起来像幻灯片演示中的简单“淡出”之类的东西 :)”
“谢谢!”

请不要使用Objective-C标签,除非涉及实际的语言特性。这是一个关于如何在iOS上执行某些操作的具体问题。 - lnafziger
请查看以下链接:http://maniacdev.com/2009/07/code-snippet-easy-fading-iphone-buttons-images-views - moosa0709
http://snipplr.com/view/48888/ - moosa0709
4个回答

8
[UIView animateWithDuration:0.5 animations:^{    _myButton.alpha = 0;}];

4
不要移除按钮,只需将其隐藏。综合考虑所有建议,您可以得到以下内容:
[UIView animateWithDuration:0.5
                 animations:^{ _myButton.alpha = 0; }
                  completion:^(BOOL finished){ _myButton.hidden = YES; }
];

2
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
_myButton.alpha = 0.0f;
[UIView commitAnimations];

或者说

[UIView animateWithDuration:1.0 animations:^{    _myButton.alpha = 0.0f;}];

2
这些方法自iOS 4以来就不再推荐使用。相反,您应该使用基于块的方法。 - rdelmar
@rdelmar 这种方法和使用块动画一样好,而且它支持 iOS < 4,只是需要更多的代码行。 - esqew
2
如果苹果建议不要使用某些东西,我认为最好听从他们的建议 - 我猜旧方法在未来某个时候将被弃用。此外,为什么要支持比iOS 4更旧的东西?这在今天似乎毫无意义。 - rdelmar
有人可以解释一下这个新的“块方法”吗? - jake9115
块是添加到C、Objective-C和C++的语言级特性,它允许您创建不同的代码段,可以像值一样传递给方法或函数。块是Objective-C对象,这意味着它们可以添加到类似NSArray或NSDictionary的集合中。它们还具有从封闭范围捕获值的能力,使它们类似于其他编程语言中的闭包或lambda表达式。请阅读此网址http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html - Vinodh

1

仅仅减小透明度并不能完全将按钮从视图中移除。对于用户来说,它看起来像已经消失了,但实际上还在那里。他们可能仍然会不知情地意外点击它。因此,您可以设置一个定时器,在它淡出后将其从视图中移除。

...
  //alpha animation

//remove from view
    timer1 = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideMyButton) userInfo:nil repeats:NO];
}

    -(IBAction) hideMyButton
    {
           [_myButon removeFromSuperview];
    }

2
通常情况下不需要移除按钮,即使你真的想这样做,你也不会使用计时器,而是在animationWithDuration的完成块中完成。 - Rob
这不是真的。当 alpha = 0(或小于某个非常小的阈值)时,按钮将完全被禁用。 - Khanh Nguyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接