Проблема в рендеринге изображений в UIImageView в программировании iPhone - PullRequest
0 голосов
/ 30 апреля 2010

У меня есть UIViewController и UIImageView, на UIImageView я хочу переключаться между двумя изображениями, чего я не могу достичь.

Это код, который я написал, пожалуйста, поправьте меня, если я ошибаюсь.

UIViewController* VC = [[UIViewController alloc]init];
VC.view.backgroundColor = [UIColor redColor];
UIImageView* imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,320,400)];
[imgView setImage:[UIImage imageNamed:@"Image_A.jpg"]];
[VC.view addSubview:imgView];

sleep(2);

[imgView setImage:[UIImage imageNamed:@"Image_B.jpg"]];
[VC.view addSubview:imgView];

[window addSubview:VC.view];

, поэтому, когда я выполняю этот проект, на экране отображается только Image_B, в то время как я хочу, чтобы Image_A отображался затем в спящем режиме (2), должен отображаться Image_B.

Как бы я сделал это возможным ??

Спасибо.

Ответы [ 3 ]

1 голос
/ 30 апреля 2010

Вместо sleep используйте NSTimer ( документы здесь ). Таймер не блокирует поток, а вместо этого возвращается в цикл выполнения. Таким образом, UIKit может отправлять изменения в иерархию представления и отображать их на экране. При обратном вызове таймера вы просто меняете изображение.

0 голосов
/ 30 апреля 2010

.h

    @interface TwoImagesAppDelegate : NSObject <UIApplicationDelegate> {
        UIWindow *window;
        UIViewController* VC;
        UIImageView* imgView1;
        UIImageView* imgView2;
    }

.m

    - (void) toggle
    {
        static int toggle = 0;
        if (toggle) {
            imgView1.hidden = YES;
            imgView2.hidden = NO;
        } else {
            imgView1.hidden = NO;
            imgView2.hidden = YES;
        }
        toggle = toggle ? 0 : 1;
    }

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

        // Override point for customization after application launch

        [window makeKeyAndVisible];

        VC = [[UIViewController alloc]init];
        VC.view.backgroundColor = [UIColor redColor];
        imgView1 = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,128,128)];
        [imgView1 setImage:[UIImage imageNamed:@"1.png"]];
        [VC.view addSubview:imgView1];
        [window addSubview:VC.view];

        VC.view.backgroundColor = [UIColor blackColor];
        imgView2 = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,128,128)];
        [imgView2 setImage:[UIImage imageNamed:@"2.png"]];
        [VC.view addSubview:imgView2];  
        [window addSubview:VC.view];

        [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(toggle) userInfo:nil repeats:YES];

        return YES;
    }

обратите внимание, что в этом примере показано, как использовать timer, там - это утечка памяти.

0 голосов
/ 30 апреля 2010

Я полагаю, вы в окне. Так что в .h

    @interface TwoImagesAppDelegate : NSObject <UIApplicationDelegate> {
        UIWindow *window;
        UIViewController* VC;
        UIImageView* imgView;
    }

.m

    - (void) addOneMore
    {
        VC.view.backgroundColor = [UIColor blackColor];
        [imgView setImage:[UIImage imageNamed:@"2.png"]];
        [VC.view addSubview:imgView];   
        [window addSubview:VC.view];
    }

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

        // Override point for customization after application launch

        [window makeKeyAndVisible];

        VC = [[UIViewController alloc]init];
        VC.view.backgroundColor = [UIColor redColor];
        imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,128,128)];
        [imgView setImage:[UIImage imageNamed:@"1.png"]];
        [VC.view addSubview:imgView];
        [window addSubview:VC.view];

        [NSTimer scheduledTimerWithTimeInterval:2.5 target:self selector:@selector(addOneMore) userInfo:nil repeats:NO];

        return YES;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...