我知道如果有一个名为Default.png的文件,它会自动显示图像。 但是,我希望在它显示期间更改图像。 仅供参考,我有2张图片Default.png和default2.png。 我想在show Default.png之后显示default2.png。 我尝试了跟随代码,但它没有用。 我该怎么办?
-(BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//..................................................................
//self.window bullabulla~
[self performSelectorOnMainThread:@selector(showIntro2View) withObject:nil waitUntilDone:YES];
//[self showIntro2View]; //also tried this, but not work.
[self.window addsubview:tabbarController];
[self.window makeKeyAndVisible];
}
-(void) showIntro2View {
UIImageView *intro2 = [[UIImageView alloc]initwithframe:cgrectmake(0,0,320,460)];
intro2.image = [UIImage imagenamed:@"default2.png"];
[self.window addSubview:intro2];
[self.window bringSubviewToFront:intro2];
[NSThread sleepfortimeinterval:2];
}
答案 0 :(得分:1)
在APP DELEGATE
中。
这样的事情应该可以胜任:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:self.window.bounds] autorelease];
UIImage *image = [UIImage imageNamed:@"NAMEOFYOURSPLASHSCREEN.png"];
imageView.image = image;
[self.window addSubview:imageView];
[self.window makeKeyAndVisible];
[self performSelector:@selector(remove1stSplash:) withObject:imageView afterDelay:5];
return YES;
}
- (void)remove1stSplash:(UIImageView *)1stView {
UIImageView *imageView = ...
[self.window addSubview:imageView];
[self performSelector:@selector(remove2ndSplash:) withObject:imageView afterDelay:5];
[1stView removeFromSuperView];
}
- (void)remove2ndSplash:(UIImageView *)2ndView {
[self.window addSubview:.....
[2ndView removeFromSuperView];
}
修改强>
示例项目的链接: Two Splash Screen display in iphone
答案 1 :(得分:0)
您可能知道,您对Default img的显示时间没有实际影响。但是你知道什么时候显示和隐藏。它仅显示,当应用程序第一次运行时,应用程序不在后台或在一段时间未使用后终止。
第一个被调用的View Controller应该实现viewWillAppear
,因为它类似于默认图像隐藏之前调用的最后一个方法。所有内容都已加载,您可以立即将子视图添加到主窗口。
我会用showOverrideDefaultImage
和hideOverrideDefaultImage
这两种不同的方法来做。在show方法中,您将自己的View添加到appDelegate窗口并触发
[self performSelector:@selector(hideOverrideDefaultImage) withObject:nil afterDelay:2];
在隐藏方法中,只需从superview中删除您的视图即可。因此,您必须有一个指向此对象的有效指针。
就是这样。不要使用NSThread。
答案 2 :(得分:0)
这样做:
-(void) showIntro2View
{
UIImageView *intro2 = [[UIImageView alloc]initwithframe:cgrectmake(0,0,320,460)];
intro2.image = [UIImage imagenamed:@"default2.png"];
intro2.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Default.png"],
[UIImage imageNamed:@"default2.png"], nil];
intro2.animationDuration = 2.0f;
intro2.animationRepeatCount = 0;
[intro2 startAnimating];
[self.window addSubview:intro2];
[self.window bringSubviewToFront:intro2];
[NSThread sleepfortimeinterval:2];
}