Заставка, связанная в iphone - PullRequest
1 голос
/ 12 мая 2011

Привет. Я пытаюсь всплеск экрана с помощью таймера.но это не можетЕсть какие-либо предложения относительно этого кода .........

SplashViewController.h: -

#import <UIKit/UIKit.h>
#import "MainMenu.h"

@interface SplashViewController : UIViewController {
    UIImage *imgSplash;
    NSTimer *timer;
    MainMenu *objMainMenuView;
}

@property (nonatomic,retain) NSTimer *timer;
@property (nonatomic,retain) UIImage *imgSplash;
@property (nonatomic,retain) MainMenu *objMainMenuView;



@end

SplashViewController.m: -

#import "SplashViewController.h"


@implementation SplashViewController
@synthesize timer,imgSplash,objMainMenuView;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    timer = [[NSTimer alloc] init]; 

    UIImageView *splashImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,460)];
    imgSplash = [[UIImage alloc] init];
    imgSplash = [UIImage imageNamed:@"chicocredit_splash.png"];
    [splashImageView setImage:imgSplash];

    [self.view addSubview:splashImageView];

    timer = [NSTimer timerWithTimeInterval:2.0 target:self.timer selector:@selector(fadeScreen) userInfo:nil repeats:NO];
    if([timer isValid]==1)
    {       
        [timer fire];
        //self.view.alpha = 0.0;

        objMainMenuView = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
        [self.navigationController pushViewController:objMainMenuView animated:YES];
    }   
}

-(void) onTimer{
    NSLog(@"LOAD");
}

- (void)fadeScreen
{


    [UIImageView beginAnimations:nil context:nil]; 
    [UIImageView setAnimationDuration:2.0];       
    [UIImageView setAnimationDelegate:self];
    [UIImageView commitAnimations];

    //[UIView setAnimationDidStopSelector:@selector(finishedFading)];  

    //self.view.alpha = 0.0;       
    //[UIView commitAnimations];   
}

/*
- (void) finishedFading
{   
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:5.0];

    //self.view.alpha = 1.0;   
    //viewController.view.alpha = 1.0;
    //self.objMainMenuView.view.alpha = 1.0;

    [UIView commitAnimations];   
    //[splashImageView removeFromSuperview];
}*/




- (void)dealloc {
    [super dealloc];
}


@end

Ответы [ 5 ]

2 голосов
/ 13 мая 2011

Используйте это. Это может быть решением для этого.

- (void)viewDidLoad {

timer = [[NSTimer alloc] init]; 


CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 460.0f);
splashImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
[splashImageView setImage:[UIImage imageNamed:@"image3.jpg"]];
splashImageView.opaque = YES; 
[self.view addSubview:splashImageView];
[splashImageView release]; 

[self performSelector:@selector(doTHis) withObject:nil afterDelay:2.0];
[super viewDidLoad];

}

-(void)doTHis{
objMainMenuView = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
[self.navigationController pushViewController:objMainMenuView animated:YES];

}

Удачи

1 голос
/ 12 мая 2011

Похоже, ваше MianMenu толкается, прежде чем вы сможете увидеть эффект исчезновения. Это потому, что вы запускаете таймер и немедленно нажимаете главное меню.

// Расписание таймера здесь.

[NSTimer timerWithTimeInterval:2.0f target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:NO];

// Таймер стрельбы.

-(void) timerFireMethod:(NSTimer *) theTimer {
[UIView beginAnimations:nil context: nil];
[UIView setAnimationDuration:2.0f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector: @selector(animationDidStop: finished: context:)];

// Put animation code.

[UIView commitAnimations];

}

// Вызывается, когда заканчивается анимация.

-(void) animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
// Called when animation finishes.
// Push the Main menu here.
}

Сохранять точку останова в методе стрельбы по таймеру. Он должен быть вызван через 2 секунды, как указано. Затем сохраните точку останова в методе animationDidStopSelector. Он будет вызван после 2-секундной анимации затухания.

0 голосов
/ 13 мая 2011

Сокращение: используйте другой viewController с imageView, представьте его модально и отклоните с анимацией роспуска.
Вы должны представить представление в таймере viewWillAppear.Start на viewLoad второго viewController. Когда таймер срабатывает, отклоните его.

0 голосов
/ 12 мая 2011

Почему бы и нет, сделайте все остальное после истечения таймера и исчезновения.

- (void) finishedFading
{   
        objMainMenuView = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
        [self.navigationController pushViewController:objMainMenuView animated:YES];
}
0 голосов
/ 12 мая 2011

Ваш код просочился:

1

timer = [[NSTimer alloc] init]; //Leak here, remove this line
.
.
.
timer = [NSTimer timerWithTimeInterval:2.0 target:self.timer selector:@selector(fadeScreen) userInfo:nil repeats:NO];

2

imgSplash = [[UIImage alloc] init];//Leak here, remove this line
imgSplash = [UIImage imageNamed:@"chicocredit_splash.png"];

3

   UIImageView *splashImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,460)];
    ...
    [splashImageView setImage:imgSplash]; //Leak here, should release splashImageView
...