显示UILabel *秒;除了NSTimer以外的其他方式?

时间:2010-02-13 12:34:41

标签: iphone objective-c xcode

是否有其他方式显示对象/按钮/等等,例如3秒,而不是NSTimer? 我可以使用动画来做到这一点吗?

3 个答案:

答案 0 :(得分:5)

您可以使用-performSelector:withObject:afterDelay:,但它在内部使用计时器。

[theLabel performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:3];

您不能将-setHidden:与此方法一起使用,因为1不是对象,但您可以使用NSInvocation

NSInvocation* invoc = [NSInvocation invocationWithMethodSignature:[theLabel methodSignatureForSelector:@selector(setHidden:)]];
[invoc setTarget:theLabel];
[invoc setSelector:@selector(setHidden:)];
BOOL yes = YES;
[invoc setArgument:&yes atIndex:2];
[invoc performSelector:@selector(invoke) withObject:nil afterDelay:3];

答案 1 :(得分:2)

你可以尝试:

[UIVIew beginAnimations:nil context:nil];
[UIView setAnimationDelay:3];
[UIView setAnimationDuration:0.1]; //or lower than 0.1
button.hidden = YES;
[UIView commitAnimations];

答案 2 :(得分:1)

假设您有一个名为myImageView的UIImageView:在您的.h中。文件

IBOutlet UIImageView *myImageView;

在.m文件中创建一个隐藏对象的方法:

-(void)hideMyImageView {
    myImageView.hidden = TRUE;
}

然后当你想要隐藏对象时使用它:

[self performSelector:@selector(hideMyImageView) withObject:nil afterDelay:3];

要重新显示对象,请使用:

myImageView.hidden = FALSE;