2009-12-14 5 views
0

Я хочу добавить логотип в качестве приложения для iPhone. Я кодирую следующим образом:Добавление логотипа для iPhone app

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    UIImage image = [[UIImage alloc] imageWithContentsOfFile:@"1.jpg"]; 
     UIImageView view = [[UIImageView alloc] initWithImage:image]; 
     [window addSubViews:view]; 

     [NSThread sleepForIntervalTime:10]; 
     [view removeFromSubview]; 
    [window addSubview: navigationController.view]; 
    [window makeKeyAndVisible]; 
} 

Но симулятор не может отображаться так, как я хочу. Простое отображение навигации. Вид контроля. Я думаю, причина в том, что iPhone отображает первый вид после «applicationDidFinishLaunching» Существуют ли другие решения?

+2

Имейте в виде, что Apple, в частности, рекомендует не использовать экранов заставок при запуске приложения. Вместо этого у вас должно быть изображение запуска, которое выглядит как голой версии вашего пользовательского интерфейса. Это помогает пользователю создать впечатление, что ваше приложение мгновенно запускается. Прочтите Руководство по интерфейсу для человека. – bpapa

+0

Это правда, хотя почти каждая игра использует Default.png в качестве заставки. Все зависит от того, что вы разрабатываете. –

ответ

3

Просто добавьте изображение, которое вы хотите быть логотип для вашего проекта с названием: Default.png

Он автоматически станет экран запуска для приложения.

Ваш подход не будет работать. applicationDidFinishLaunching Делегат работает после вся загрузка была выполнена. Кроме того, отсрочка на 10 секунд будет неточной, поскольку приложение может загружаться быстрее на некоторых устройствах, чем другие.

1

Пабло прав - вы можете просто использовать Default.png для этого.

Однако ваш код никогда не будет работать по двум причинам.

1)

Основной поток приложения является поток пользовательского интерфейса - один отвечает за дело с обновлением интерфейса, и это поток, который работает ваш applicationDidFinishLaunching:.

Если вы только что позвонили [NSThread sleepForIntervalTime:10], нить поспите. Однако это также означает, что пока поток спал, пользовательский интерфейс не будет обновляться. Затем, когда вы вызываете [view removeFromSuperview], он удалит изображение и продолжит. Вы никогда не увидите изображение!

Чтобы получить код для работы вы должны сделать что-то вроде этого:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    [window addSubview: navigationController.view]; 

    UIImage *image = [UIImage imageWithContentsOfFile:@"1.jpg"]; 
    UIImageView *view = [[UIImageView alloc] initWithImage:image]; 
    [window addSubView:view]; 
    [view release]; 

    [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(removeImage:) userInfo:view repeats:NO]; 
    [window makeKeyAndVisible]; 
} 


- (void) removeImage:(NSTimer *)timer { 
    UIImageView *view = (UIImageView *)timer.userInfo; 
    [view removeFromSuperview]; 
} 

Этот код будет показывать изображение в течение 10 секунд, а затем удалить его. Однако, если вы просто хотите, чтобы изображение запускалось, использование Default.png, безусловно, способ сделать это!

2)

Вы добавили навигатор вид линии всасывания вашего изображения - в приведенном выше коде, я переехал, добавив вид штурмана быть до UIImage. Это означает, что изображение будет находиться напротив навигатора за 10 секундную задержку до его удаления, показывая вид навигатора.

Надеется, что это помогает,

Сэм

Смежные вопросы